一、二维码诞生
二维码诞生于1994年,发明者是日本Denso Wave株式会社的原昌宏,最初叫QR码,可容纳7000个数字,可处理汉字,读取速度比其他编码快10倍以上。目的是为了解决汽车零件的追踪问题。随着移动互联网的发展,二维码的应用变得更加广泛,包括在发票上的应用。
二、发票中二维码
具体到发票二维码的历史和发展,它最初是为了应对传统纸质发票存在的诸如易丢失、伪造等问题而设计的。通过将发票的关键信息(如发票代码、号码、开票日期、金额等)编码进二维码中,用户可以通过扫描二维码快速获取这些信息,从而实现发票的真伪验证、报销流程的自动化等功能。
2.1 二维码密文
2011年国家税务总局颁布《关于增值税防伪税控系统汉字防伪项目试运行有关问题的通知》(国税发[2011]44号),上海、陕西和深圳三地试运行新的“二维码增值税专用发票”。在不改变现有防伪税控系统密码体系前提下,采用数字密码和二维码技术,利用存储更多信息量的二维码替代原来的84位和108位字符密文,在加密发票七要素信息的基础上实现了对购买方企业名称、销售方企业名称、货物名称、单位和数量等信息的加密、报税采集和解密认证功能。
2.2 第一张带二维码发票
国家税务总局2013 年2月25日公布的《网络发票管理办法》(国家税务总局令第30号)出台。2013年4月1日起施行。
2013年6月27日,中国内地首张电子发票2013年由京东商城开出。
2014年04月01日,全国首张电子发票重庆落地。重庆市地方税务局通用电子发票,发票代码是250001470001,发票号码是00000001,付款方是乐透电子商务有限公司,收款人是李莹,金额是贰万零伍佰圆整。发票的下方则是可供验证查询的二维码。
2014年06月25日,成都首张电子发票。
2014年6月27日,在成功开具中国电商领域首张电子发票一周年之际,京东再次引领行业之先,与北京市国税局电子发票服务平台、中国人民财产保险股份有限公司(简称“人保财险”)正式对接,成功开具中国首张对公可报销电子发票,并以电子化方式入账。
2015年1月14日,湖北省电子发票系统正式启动运行,武汉京东公司开出了订单号为7927210615、发票号为15005280的全省首份电子发票
2015年08月01日, 全国首张升级版电子发票在北京开出。
2018年8月10日,全国首张区块链电子发票在深圳实现落地,其底层技术由腾讯提供。
2019年4月22日,首张物业服务区块链电子发票二维码。
数电票二维码
2021年12月1日,广东省、上海市和内蒙古自治区试点推行全面数字化电子发票(简称数电发票)
2.3 火车票二维码
2024年数电票
2.4 飞机票二维码
飞机票多年是条码,二维码使用比较晚。
三、发票二维码种类
3.1、位置
1、在顶部左侧和顶部右侧
2、在右下部。
3.2、内容种类
1、发票防伪二维码
见2.1 章节中,发票中密码区。
2、查验网址二维码(深圳区块链电子发票)
一般是一个网络链接。链接后面的参数带了对应的哈希值、发票号码和金额。
“ https://bcfp.shenzhen.chinatax.gov.cn/verify/scan?hash=d19bdf09f6d3f8afd0e740b7b22abfdbd2234nnfwe3e9834c7d4d4&bill_num=44687986&total_amount=430000 ”
3、发票分发交付二维码
以北京为例。 二维码中字符内容:
“https://dppt.beijing.chinatax.gov.cn:8443/v/2_25112000000029144028_2025021616301600B992CF4”
3.3 样式
主要两种:中间带空心和没有空心的。
四、二维码解析
4.1、解析库
1、python: QReader, cv2.wechat_qrcode_WeChatQRCode(腾讯贡献)
2、JavaScript:jsQR
3、Java:zxing
4、C/C++:ZBar
5、自行写代码解析。适合有特殊需要或者研究爱好者,自行查找资料。
4.2 样式种类
1、7段式
‘01,01,3702221130,04800054,888.8,20230517,68893455791285901076’
2、8段式
二维码中的信息示例:
‘01,01,3702221130,04800054,888.8,20230517,68893455791285901076,727C’
该字符串以逗号分隔每一个属性值,从左到右依次是:
01:第1个属性值,固定01。
01:第2个属性值,表示发票种类代码,不同类型发票值如下。
- 01增值税专用发票
- 04增值税普通发票
- 10增值税普通发票(电子)
- 08增值税专用发票(电子)
3702221130:第3个属性值,表示发票代码。
04800054:第4个属性值,表示发票号码。
888.8:第5个属性值,表示开票金额。
20230517:第6个属性值,表示开票日期,该值为2023年5月17日。
68893455791285901076:第7个属性值,表示校验码,没有则为空。铁路电子发票第7段为空。
727C:第8个属性值,表示加密字符。一般采用CRC算法中的CRC16_X25
3、9段式
‘01,01,3702221130,04800054,888.8,20230517,68893455791285901076,727C,’
例如:区块链电子发票。9段式比8段式最后多了一个逗号。第9个属性值,表示随机数。很多时候为空。
4、不分段
'380436471472611965765015225038393363531606789836706805872680231044800430121199807180419053897628805389762880538976288053897628805389762880800000'
例如:早期火车票中的。
4.3 使用成熟的发票二维码自动解析工具
可以自动解析出二维码内所有信息,并导出到excel。
以上资料来自网络公开搜集。如有不准欢迎留言指正。