【问题标题】:Implementing TLV in javascript在 JavaScript 中实现 TLV
【发布时间】:2022-01-16 22:52:18
【问题描述】:

我正在尝试在 Javascript 中实现电子发票的 TLV。我能够将值转换为十六进制,从十六进制转换为 base64。当我将 base64 值添加到 QRcode 并尝试对其进行测试时,我收到一条错误消息,告诉我我的数据有问题。下面是我的实现

const  __toString = (tag, value) => {
    const tagToHex = "0"+(tag).toString(16)
    const valueLengthToHex = value.length <= 15 ? "0" + (value.length).toString(16) :(value.length).toString(16)
    const valueToHex = this.toHex(value)

    return `${tagToHex}${valueLengthToHex}${valueToHex}`;
}

const toHex = (str) => {
    let result = '';
    for (let i=0; i<str.length; i++) {
      result += str.charCodeAt(i).toString(16);
    }
    return result;
}

Entry point

const generateString = [
    __toString(1, 'Bobs Records'),
    __toString(2, '310122393500003'),
    __toString(3, '2022-04-25T15:30:00Z'),
    __toString(4, '1000.00'),
    __toString(5, '150.00'),
];

return btoa(generateString.join(''))

MDEwYzQyNmY2MjczMjA1MjY1NjM2ZjcyNjQ3MzAyMGYzMzMxMzAzMTMyMzIzMzM5MzMzNTMwMzAzMDMwMzMwMzE0MzIzMDMyMzIyZDMwMzQyZDMyMzU1NDMxMzUzYTMzMzAzYTMwMzA1YTA0MDczMTMwMzAzMDJlMzAzMDA1MDYzMTM1MzAyZTMwMzA=

我得到了上面的 base64 字符串。当我将它设置为 qrcode 的值并尝试扫描它时,我得到了错误,我不知道我错过了它。

【问题讨论】:

  • 您遇到的这些神秘错误是什么?你有一个已知的工作二维码的例子来比较你的版本有什么问题吗?
  • 感谢您与我们联系。我没有例子了

标签: javascript base64 hex tlv


【解决方案1】:

我能够使用这个 NPM 包npm i --save @axenda/zatca 来解决这个问题。欲了解更多信息,请访问此页面https://github.com/axenda/zatca

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2014-01-10
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多