paperclip / facturas-electronicas
Paperclip 对 facturaselectronicas.biz API 的集成。
v1.22
2024-02-14 21:50 UTC
Requires
- ext-curl: *
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 命令 作为对象的方法
Facturador::hola(array $parámetros):array
:用于测试通信的命令。Facturador::emitir(array $parámetros):array
:生成新的凭证,无论是发票、收据还是相应的笔记。Facturador::baja(array $parámetros): array
:请求撤销(作废)凭证。Facturador::correo(array $parámetros):array
:通过电子邮件将 PDF 和 XML 发送给指定的收件人。Facturador::consultarRuc(array $parámetros):array
:获取有关 RUC 或具有企业的 DNI 的信息。Facturador::consultarTicket(array $parámetros):array
:查询 SUNAT 的延迟交易票证的状态。
$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) {
}
}