paperclip / fabo
Fabo API 集成 - PHP
1.0.0
2023-09-18 17:42 UTC
Requires
- php: >=8.0
- ext-curl: *
README
为 PHP 8.0 或更高版本提供对 fabo.dev API 访问的库。
安装
安装通过 Composer 进行
composer require paperclip/fabo
使用
Paperclip\Fabo\Fabo 类的构造函数需要两个参数
$token,当创建 Fabo API 访问时收到的令牌。$url,访问 Fabo API 的 URL,也在创建访问时收到。
实例化一个 Paperclip\Fabo\Fabo 对象后,你可以执行一个 API 命令 作为对象的方法
Fabo::emitir(...$parámetros):array:生成新的凭证,无论是发票、收据还是相应的备注。Fabo::baja(...$parámetros): array:请求凭证的撤销(作废)。Fabo::correo(...$parámetros):array:通过电子邮件将 PDF 和 XML 发送到指定的收件人。Fabo::consultarRuc(...$parámetros):array:获取有关 RUC 或带公司名称的 DNI 的信息。Fabo::hola(...$parámetros):array:用于进行通信测试的命令。
每个方法都必须使用每个命令所需的参数调用,使用命名参数。
异常
当 API 返回错误时,将根据错误类型生成多个异常。所有异常都扩展自 Paperclip\Fabo\ExcepciónFabo
Paperclip\Fabo\ExcepciónAutorización:在授权阶段发生错误时抛出的异常,例如无效的 UUID 或令牌。Paperclip\Fabo\ExcepciónNegociación:在 API 协商阶段发生错误时抛出的异常,例如使用格式的 HTML 头部错误等。Paperclip\Fabo\ExcepciónParámetros:在向 API 发送参数时发生错误时抛出的异常。Paperclip\Fabo\ExcepciónFatal:在 API 或此库中发生未预见的错误时抛出的异常。
示例
此代码发出电子发票
<?php use Paperclip\Fabo\{Fabo, ExcepciónFabo}; // Autocargador de Composer. Más información en https://composer.php.ac.cn/doc/01-basic-usage.md#autoloading require __DIR__ . '/vendor/autoload.php'; // Creamos el objecto Fabo con el token y la URL proporcionada al crear el acceso // a la API. $fabo = new Fabo( '5cfccd27b2bb0f0d3fc860c7a1fb723139464cae59195a5da55af9b7b2e7b703', 'https://api1-pruebas.fabo.dev/v1/ebcf891b-9ec9-4409-a95f-cb8c3d803b17' ); // 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', '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 = $fabo->emitir(...$parámetros); } catch (ExcepciónFabo $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 = $fabo->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(6) {
["valor_resumen"]=>
string(28) "VoIsNKv3NWBtKeg86y2OmYhcxTU="
["codigo_descarga"]=>
string(40) "aea292634674c89c3a75a8b66735a50cf6dc5896"
["codigo_documento"]=>
string(29) "prueba-20452370108-01-F001-21"
["sunat_respuesta"]=>
int(0)
["sunat_descripcion"]=>
string(43) "La Factura numero F001-21, ha sido aceptada"
["sunat_observaciones"]=>
array(0) {
}
}