我正在尝试在 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 的值并尝试对其进行扫描时,我得到了错误,我不知道我错过了它。