现在二维码开发票越来越火了 如果自己公司也有这个业务需求我们需要生成可供发票扫码枪识别的二维码该如何实现呢?(内容转自Vue.js中文(主)wx群by小呆风) 博主整理
注意---二维码仅供发票扫码枪识别(有同学留言用微信发票助手扫码规则错误--- 此实现方案是供开票使用 发票助手扫描的二维码是已经开好的发票上面的二维码 是有区别的)
先看张图
原理.png其实上面这张图写的挺清楚的了
先用分隔符分隔开发票抬头信息,组成一个字符串str,然后用CRC16得出4位校验码。然后将字符串str和4位效验码通过base64加密。最后
$ + 01 + base64 + $
我们假设一个发票号(按照需求顺序)
上海某某金融信息有限公司
91310 00000 00000 00P
上海市徐汇区某某路701-A12室021-64640000
中国建设银行上海某某分行 3100 0000 0000 0000 0000
//假设已经引入crc和base64
let name = '上海某某金融信息有限公司';
let identifier = '91310 00000 00000 00P';
let address = '上海市徐汇区某某路701-A12室021-64640000';
let bank = '中国建设银行上海某某分行 3100 0000 0000 0000 0000'
/* 按需求分割 */
let str = `${name}</>${identifier}</>${address}</>${bank}`
/* CRC-16 */
let crcCode = CRC.ToCRC16(str, true)
console.log('crcCode编码 ' + crcCode)
let newStr = `${name}</>${identifier}</>${address}</>${bank}</>${crcCode}`
/* base加密 */
let strBase = Base64.encode(newStr)
/* 最终生成 */
let qrCodeStr = `$01${strBase}$`
console.log(qrCodeStr)
打印
最终生成.png参考资料
备注
网友评论