如何在 PHP 中创建和解析标签、长度、值 (TLV) 并将其编码为 Base64

2023-12-20

政府出台了一项新规定,要求所有增值税注册公司在新电子发票中使用二维码。

  • QR 码字段应采用标签长度值 (TLV) 格式进行编码,标签值在相邻表的“标签”列中指定。

  • TLV编码应如下:

    • Tag:前面提到的以一个字节存储的标签值。
    • 长度:字段值进行UTF8编码后得到的字节数组的长度。长度应以一个字节存储。
    • 值:由字段值的 UTF8 编码生成的字节数组。

如何从信息数组创建 TLV?有我可以使用的图书馆吗?

$arr = [
    1 => 'Company Name',
    2 => '1234567890',
    3 => '2021/10/11 17:20:00',
    4 => '1000',
    5 => '150'
];

是的,所需的二维码不是带有链接的普通二维码。它应该是 TLV base64 编码的。这可以很容易地完成。这些值需要十六进制然后组合,其中将包含 ASCII 控制字符。

如果您仍然不明白,幸运的是,您可以使用 Salla 提供的以下包从数组生成二维码。

https://github.com/SallaApp/ZATCA 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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 中创建和解析标签、长度、值 (TLV) 并将其编码为 Base64 的相关文章

  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • 使用PHP套接字发送和接收数据

    我正在尝试通过 PHP 套接字发送和接收数据 一切正常 但是当我尝试发送数据时 PHP 不发送任何内容 Wireshark 告诉我发送的数据长度为 0 我正在使用这段代码
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • postgreSQL 在 WAMP 上的集成

    我刚刚在 Windows 7 上安装了 postgreSQL 我正在尝试将 postgreSQL 与 WAMP 服务器集成 为此 我在 httpd conf 和 php ini 文件中进行了以下更改 1个加载模块c path to libp
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • 如何在html中制作多行类型的文本框?

  • 如何从字符串中删除所有数字?

    我想删除字符串 0 9 中的所有数字 我写了这段有效的代码 words preg replace 0 words remove numbers words preg replace 1 words remove numbers words
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • 如何在 Zend Framework 中处理移动设备?

    我接手了一个噩梦般的项目 我正在迁移一个写得很差的站点 并慢慢地将其迁移到 Zend Framework 应用程序中 不幸的是 我没有时间做补救工作 使这变得可以忍受 也许是一个或两个模型 我现在被告知该网站很快就会有移动版本 建议是克隆旧
  • PHPUnit\Framework\TestCase 和 Tests\TestCase 有什么区别?

    我注意到在示例测试中 这两个类是内置的 功能测试 gt use Tests TestCase 单元测试 gt PHPUnit Framework TestCase 两者有什么区别 在什么情况下您会使用其中一种 PHPUnit Framewo
  • 来自本地 XML 的模拟 SoapClient 响应

    我想用文件中的 XML 来模拟 SoapClient 的响应 我如何创建一个 stdClass 对象 就像 SoapClient 从文件返回一样 客户端已经包装了 SoapClient 因此可以轻松模拟响应 我的模拟是这样的 soapCli
  • JavaScript 中带前导零的数字发生变化

    我使用 print 语句从 php 调用 javascript 函数来打印 html 代码 并且传入一个整数 但是 在 php 中传递的值与 javascript 函数接收到的数字不匹配 我不知道为什么 这是调用 javascript 函数
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • Yii2 中 init() 和 __construct() 方法有什么区别

    init 方法 public function init construct method public function construct 那么 它们之间有什么区别 应该使用哪一个呢 init 是从以下对象扩展的任何对象的方法yii b
  • 删除 woocommerce 店面主页标题 php

    我正在使用 woocommerce 的店面主题 我需要用 php 删除主页标题 h1 我知道 css 解决方案 但我不想使用它 因为我想将 h1 添加到该页面的其他位置 并且在一个页面中包含 2 个 h1 对 seo 不利页 我也知道删除页
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • 如何在 Twitter Card 中传递动态图像路径?

    我在用
  • PHP 错误:“无法通过引用传递参数 2”

    我只是需要有关这个 PHP 错误的帮助 我不太明白 致命错误 无法在第 13 行 web stud openup inactivatesession php 中通过引用传递参数 2
  • 监听文件夹和文件(更改)

    可以直接在 PHP 或 Node 上监听文件夹和文件的更改 通过事件 还是我需要创建自己的方法来执行此操作 Example 我需要听文件夹 user 如果我将一些文件添加到该目录中 PHP 或 Node 会收到信息并运行PathEvent
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码

随机推荐

  • 如何在 Xcode 中编写涵盖 Facebook 登录的 UI 测试?

    我想在 Xcode 中编写一个 UI 测试 涵盖登录FBDSKLoginKit https cocoapods org pods FBSDKLoginKit 然而 Facebook iOS SDK 使用SFSafariViewControl
  • Heroku 在构建过程中找不到 package.json,尽管我有它

    当我将节点应用程序推送到 heroku master 时 我收到此日志 remote Building source remote remote gt App not compatible with buildpack https codo
  • 复选框默认选中=“选中”不起作用?

    复选框默认选中不起作用 我尝试修复它 但我找不到错误在哪里 所以在页面加载时检查 在页面加载后未检查 我试过了 div class onoffswitch style margin 0 auto div
  • Linux系统如何获取内存信息?

    如何在Linux系统上从C 代码中获取总内存 已用内存 可用内存 运行你的程序通过valgrind 对于一个名为foo 例如 valgrind foo 它将在跟踪内存使用情况的工具中运行程序 并在程序终止后打印出该信息 如果你没有valgr
  • Office.js API 是否支持多个范围选择?

    我需要通过 Office js API 同时选择多个范围 就像在 MSWord UI 中按住 CTRL 键并突出显示多个不连续的段落一样 如下面的屏幕截图所示 这种尝试是行不通的 它不是突出显示文档中单词 the 的前两个实例 而是突出显示
  • iOS7 和 Apple Watch

    我有一个最低 iOS 目标为 iOS7 的应用程序 我正在考虑为苹果手表添加一些额外的功能 如果应用程序在 iOS 8 上运行 是否有任何选项可以将 iOS7 维持为最低目标 并且仍然添加对 Apple Watch 的支持 类似于 iOS8
  • Heroku 部署 Gemfile.lock 问题

    我对整个部署的事情还很陌生 当我第一次创建应用程序时 我已经部署过一次它 然后一切似乎都工作正常 我现在对我的应用程序进行了一些更改 我想部署它们并确保它们在生产环境中工作 我添加并提交了最后的更改 并将更改合并到我的主分支中 然后我跑了g
  • Android SDK 需要 Android Developer Toolkit 版本 17.0.0 或更高版本

    当我尝试将我的项目从 eclipse 合并到 netbeans 时 我遇到了这个奇怪的问题 现在 当尝试重新运行 eclipse 时 我收到此错误 Android SDK 需要 Android 开发者工具包版本 17 0 0 或 多于 我尝
  • FastAPI 依赖项(yield):如何手动调用它们?

    FastAPI 使用 Depends 注入返回或产生的变量 例如 快速API SQL https fastapi tiangolo com tutorial sql databases h sqlalchemy main fastapi a
  • 如何在 Tomcat 上运行的 servlet 过滤器中使用 HttpServletRequest#getParts()?

    我想在我的 JSF 应用程序中上传一个文件 我正在使用一个Filter and HttpServletRequestWrapper访问上传 文件 public MultipartRequestWrapper HttpServletReque
  • 没有路由与 rspec 的匿名控制器匹配

    根据我的理解规格规格 http relishapp com rspec rspec rails v 2 1 dir controller specs anonymous controller 我希望下面的例子能够通过 describe Ap
  • 与 Java 相比,使用 Mono 的主要好处是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Oracle 中存储波形

    我正在设计一个新的实验室数据库 我想将所有测试的原始结果存储在一起 然而 结果可以是单个测量或原始波形 转发见页脚 下面哪种情况是理想的 以及为什么 或提供您自己的理想选择 TEST test id other TEST fields 选项
  • PHP中如何获取对象的受保护属性

    我有一个对象具有一些我想要获取和设置的受保护属性 该物体看起来像 Fields Form Element Location Object helper gt formText allowEmpty protected gt 1 autoIn
  • TypeScript 中扩展接口和相交接口之间的区别?

    假设定义了以下类型 interface Shape color string 现在 考虑以下方法来向此类型添加其他属性 扩大 interface Square extends Shape sideLength number 路口 type
  • 保存多语言数据的最佳数据库结构是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 多语言数据库的架构 https stackoverflow com questions 316780 schema for a multilanguage database 这是一个例子 produc
  • 同时获取多个 URL?

    我正在寻找一种同时获取多个 URL 的方法 据我所知 API 只能通过单个产品查找来检索我想要的数据 因此我需要使用 url 结构 products productID 一次获取多个产品 注意 这是在 VUEJS 中 这是我的代码到目前为止
  • argparse:如何配置多项选择、多个值、可选参数?

    我正在尝试设置一个参数 该参数接受给定选项列表中的一个或多个值 但这不是强制性的 我正在尝试这个 有几个变体也无法按预期工作 parser add argument FLAGS nargs choices X Y Z ALL 我希望从选择列
  • 浏览器显示 � 而不是 ´

    我有一个 PHP 文件 其中包含以下文本 div class small italic This is what you ll use div 在一台服务器上 它显示为 This is what you ll use 另一方面 如 This
  • 如何在 PHP 中创建和解析标签、长度、值 (TLV) 并将其编码为 Base64

    政府出台了一项新规定 要求所有增值税注册公司在新电子发票中使用二维码 QR 码字段应采用标签长度值 TLV 格式进行编码 标签值在相邻表的 标签 列中指定 TLV编码应如下 Tag 前面提到的以一个字节存储的标签值 长度 字段值进行UTF8