政府出台了一项新规定,要求所有增值税注册公司在新电子发票中使用二维码。
\nQR 码字段应以标签长度值 (TLV) 格式进行编码,并使用相邻表的 \xe2\x80\x9cTag\xe2\x80\x9d 列中指定的标签值。
\nTLV编码应如下:
\n如何从信息数组创建 TLV?有我可以使用的图书馆吗?
\n$arr = [\n 1 => \'Company Name\',\n 2 => \'1234567890\',\n 3 => \'2021/10/11 17:20:00\',\n 4 => \'1000\',\n 5 => \'150\'\n];\nRun Code Online (Sandbox Code Playgroud)\n
小智 13
是的,所需的二维码不是带有链接的普通二维码。它应该是 TLV base64 编码的。这可以很容易地完成。这些值需要十六进制然后组合,其中将包含 ASCII 控制字符。
如果您仍然不明白,幸运的是,您可以使用 Salla 提供的以下包从数组生成二维码。
https://github.com/SallaApp/ZATCA
确保遵循 ZATCA(以前的 GAZT)提供的标签结构。该包的示例具有正确的数组:
$generatedString = GenerateQrCode::fromArray([
new Seller('Salla'), // seller name
new TaxNumber('1234567891'), // seller tax number
new InvoiceDate('2021-07-12T14:25:09Z'), // invoice date as Zulu ISO8601 @see https://en.wikipedia.org/wiki/ISO_8601
new InvoiceTotalAmount('100.00'), // invoice total amount
new InvoiceTaxAmount('15.00') // invoice tax amount
// TODO :: Support others tags
])->toTLV();
Run Code Online (Sandbox Code Playgroud)
对于那些仍在使用基于 https://github.com/SallaApp/ZATCA的 php5 的人
/*
* QR Encoding Functions
*/
function __getLength($value) {
return strlen($value);
}
function __toHex($value) {
return pack("H*", sprintf("%02X", $value));
}
function __toString($__tag, $__value, $__length) {
$value = (string) $__value;
return __toHex($__tag) . __toHex($__length) . $value;
}
function __getTLV($dataToEncode) {
$__TLVS = '';
for ($i = 0; $i < count($dataToEncode); $i++) {
$__tag = $dataToEncode[$i][0];
$__value = $dataToEncode[$i][1];
$__length = __getLength($__value);
$__TLVS .= __toString($__tag, $__value, $__length);
}
return $__TLVS;
}
/*
* QR Encoding Functions
*/
/*
* QR Code
*/
$dataToEncode = [
[1, 'SellerName'],
[2, 'VATNumber'],
[3, 'invoiceDatetime'],
[4, 'AmtwithVAT'],
[5, 'VATamt']
];
$__TLV = __getTLV($dataToEncode);
$__QR = base64_encode($__TLV);
echo $__QR;
/*
* QR Code
*/
Run Code Online (Sandbox Code Playgroud)
1--安装 ZATCA SDK https://zatca.gov.sa/en/E-Invoicing/SystemsDevelopers/ComplianceEnablementToolbox/Pages/DownloadSDK.aspx
2 -- fatoorah validateqr -qr "$__QR"
| 归档时间: |
|
| 查看次数: |
8230 次 |
| 最近记录: |