paperclip/facturas-electronicas

Paperclip 对 facturaselectronicas.biz API 的集成。

v1.22 2024-02-14 21:50 UTC

This package is auto-updated.

Last update: 2024-09-14 23:52:57 UTC


README

用于 PHP 访问 facturaselectronicas.biz API 的库。

安装

通过 Composer 进行安装。

composer require paperclip/facturas-electronicas

使用

Paperclip\FacturasElectrónicas\Facturador 类的构造函数接受三个参数

  • $token,这是创建 Paperclip 计费 API 访问时收到的 token。
  • $url,访问 Paperclip 计费 API 的 URL,也是在创建访问时收到的。

实例化一个 Paperclip\FacturasElectrónicas\Facturador 对象后,你可以执行一个 API 命令 作为对象的方法

$parámetros 是每个 API 命令所需的参数数组。

异常

当 API 返回错误时,会根据错误类型生成多个异常。所有异常都扩展了 \Exception

  • Paperclip\FacturasElectrónicas\ExcepciónAutorización:在授权阶段发生错误时抛出的异常,例如无效的 UUID 或 token。
  • Paperclip\FacturasElectrónicas\ExcepciónNegociación:在与 API 进行谈判阶段发生错误时抛出的异常,例如使用格式的 HTML 标头错误等。
  • Paperclip\FacturasElectrónicas\ExcepciónParámetros:在向 API 发送参数时发生错误时抛出的异常。
  • Paperclip\FacturasElectrónicas\ExcepciónFatal:在 API 或此库中发生未预见错误时抛出的异常。

示例

此代码发出一个电子发票

<?php

use Paperclip\FacturasElectrónicas\Facturador;

// Autocargador de Composer. Más información en https://getcomposer.org.cn/doc/01-basic-usage.md#autoloading
require __DIR__ . '/vendor/autoload.php';

// Creamos el objecto facturador con el token y la URL proporcionada al crear el acceso
// a la API. Debes colocar el token y URL de tu cuenta para que funcione.
$facturador = new Facturador(
    '5cfccd27b2bb0f0d3fc860c7a1fb7231d9484c0e59195a5da55af9b7b2b7b703',
    'https://api-testing.facturaselectronicas.biz/ebcf891b-9ec9-4409-a95f-cb8c3c803b17'
);

// Parámetros para la emisión de una factura
$parámetros = [

    // Estos datos son ficticios.
    'numero_doc' => 20123456786,
    'razon_social' => 'ABC CONSULTORES S.A.C',

    // f = Factura electrónica.
    'tipo' => 'f',
    'serie' => 'F001',
    'numero' => 21,
    'fecha' => '2021-01-26',
    'hora' => '07:23',

    // r = RUC
    'tipo_doc' => 'r',

    // PEN = Soles
    'moneda' => 'PEN',
    'total_gravado' => 76.48,
    'total_igv' => 13.77,
    'total_icbper' => 0.4,
    'items' => [
        [
			// NIU = Unidad genérica de bienes
            'unidad' => 'NIU',
            'cantidad' => 1,
            'codigo' => '98765',
            'descripcion' => 'ESCUDO DE VIBRANIUM',
            'precio_unitario' => 41,
            'valor_unitario' => 34.75,
            'valor_venta' => 34.75,
            'igv' => 6.25,

            // 10 = Gravado - operación onerosa
            'afectacion_igv' => 10,
        ],
        [
            'unidad' => 'NIU',
            'cantidad' => 1,
            'codigo' => '43210',
            'descripcion' => 'LAWGIVER MK II',
            'precio_unitario' => 49,
            'valor_unitario' => 41.53,
            'valor_venta' => 41.53,
            'igv' => 7.48,
            'afectacion_igv' => 10,
        ],
        [
            'unidad' => 'NIU',
            'cantidad' => 1,
            'codigo' => 'BP001',
            'descripcion' => 'BOLSA DE PLÁSTICO GRANDE',
            'precio_unitario' => 0.2,
            'valor_unitario' => 0.17,
            'igv' => 0.04,
            'afectacion_igv' => 10,
            'icbper' => 0.4,
        ]
    ],
];

try {
    // Emitimos el comprobante
    $resultado = $facturador->emitir($parámetros);
} catch (Exception $e) {
    // Si falla, generará una excepción. Obtenemos el resultado
    echo get_class($e) . ': ' . $e->getMessage() . PHP_EOL . PHP_EOL;

    // $resultado tendrá información del error.
    $resultado = $facturador->obtenerRespuesta();

    var_dump($resultado);
    exit;
}

// En este punto, el comprobante fue recibido satisfactoriamente por la API.
// El resultado del comando 'emitir' estará en la variable $resultado.
//
// Puedes ver más información sobre las variables del resultado en la URL
// https://docs.paperclip.com.pe/api-facturación/documentación/comando-emitir/#variables-de-retorno
//
echo "Comprobante emitido." . PHP_EOL . PHP_EOL;
var_dump($resultado);

使用有效的 $token$url 执行此代码,将显示类似的内容

Comprobante emitido.

array(7) {
  ["estado"]=>
  string(2) "ok"
  ["valor_resumen"]=>
  string(28) "AKXZBYFhI4idLnFLAnUvSPra95o="
  ["codigo_descarga"]=>
  string(40) "4c05b054213fb1663588a2281de81219cc8bbeae"
  ["codigo_documento"]=>
  string(22) "20123456781-01-F001-21"
  ["sunat_respuesta"]=>
  string(1) "0"
  ["sunat_descripcion"]=>
  string(43) "La Factura numero F001-21, ha sido aceptada"
  ["sunat_observacion"]=>
  array(0) {
  }
}