barnetik / ticketbai
生成、签名并提交 TicketBAI 兼容发票
v0.5.0
2024-08-22 06:38 UTC
Requires
- php: >=7.4 || >=8.0
- endroid/qr-code: ^4.4
- lyquidity/xml-signer: ^1.12
- pburggraf/crc: ^0.8.1
Requires (Dev)
- phpunit/phpunit: ^8.0
README
用于使用 TicketBai 系统的 PHP 库 用于与 TicketBai 系统集成的库
当前功能 / 当前功能
- 生成符合 TicketBAI 格式的发票、发票更正和作废发票的 XML
- 使用 XaDES 证书对发票、发票更正和作废发票进行签名
- 将发票、发票更正和作废发票发送到 CAV 的三个财政服务区。
- 在比斯开省(Batuz)的情况下,也支持140个模型,用于三种情况(发行、更正和作废)
- 与吉普斯夸和阿拉瓦的 调节 服务集成。允许更改和修改已发行发票的服务。感谢 @areinaNubeApp 的贡献。
- 生成符合 TicketBai 格式的发票、发票更正和作废发票的 XML
- 使用 XaDES 签名这些文档
- 将这些文档发送到 CAV 的三个财政服务区。
- 在比斯开省(Batuz)的情况下,也可以使用 140 个模型为自然人发行、更正和作废发票。
- 与阿拉瓦和吉普斯夸的 调节 服务集成,允许修改和更正已发行的发票。感谢 @areinaNubeApp 的贡献。
安装 / 安装
composer require barnetik/ticketbai
可用的 JSON 文档定义 / 可用 JSON 文档的定义
在以下链接中,您可以找到用于创建文档的 JSON 文档定义
您可以在以下链接中找到用于生成文档的可用 JSON 的定义
https://barnetik.github.io/tbai-php-lib/
使用示例 / 使用示例
发票签名 / 发票签名
作为示例使用的 JSON 文件 / 作为示例使用的 JSON 文件
use Barnetik\Tbai\Fingerprint\Vendor; use Barnetik\Tbai\PrivateKey; use Barnetik\Tbai\TicketBai; $license = 'LICENCIA_DESARROLLO'; $developerCif = 'CIF'; $appName = 'TBAI PHP APP'; $version = '1.0'; $certificatePath = '/path/to/certificate.p12'; $certificatePassword = 'myCertificatePassword'; // Where we want the signed document to be stored $signedXmlPath = './signed.xml'; $ticketbai = TicketBai::createFromJson( new Vendor($license, $developerCif, $appName, $version), json_decode(file_get_contents('tbai-sample.json'), true) ); $ticketbai->sign( PrivateKey::p12($certificatePath), $certificatePassword, $signedXmlPath );
发送发票 / 发送发票
// We have an endpoint for each province Araba, Bizkaia or Gipuzkoa use Barnetik\Tbai\Api\Bizkaia\Endpoint as BizkaiaEndpoint; /** * BizkaiaEndpoint(bool $dev = false, bool $debug = false) * For production usage $dev param must be false * $bizkaiaEndpoint = new BizkaiaEndpoint(); */ $bizkaiaEndpoint = new BizkaiaEndpoint(true, true); $result = $bizkaiaEndpoint->submitInvoice( $ticketbai, PrivateKey::p12($certificatePath), $certificatePassword, ); if ($result->isDelivered()) { var_dump('SUCCESS!'); } else { var_dump($result->errorDataRegistry()); var_dump($result->headers()); }
获取下一张发票所需签名的部分 / 获取下一张发票所需签名的部分
$shortSignatureValue = $ticketbai->chainSignatureValue();
创建 QR 码 / 创建 QR 码
use Barnetik\Tbai\Qr; /** * Qr(TicketBai $ticketBai, bool $dev = false) * For production usage $dev param must be false * $qr = new Qr($ticketbai); */ $qr = new Qr($ticketbai, true); $qr->savePng('/path/to/qr.png'); // Get the code that must be shown over QR on any invoice $tbaiIdentifier = $qr->ticketbaiIdentifier();