barnetik/ticketbai

生成、签名并提交 TicketBAI 兼容发票

v0.5.0 2024-08-22 06:38 UTC

This package is auto-updated.

Last update: 2024-09-22 17:11:56 UTC


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();