当前位置: 首页 > news >正文

详述发票二维码与python解析技术

一、二维码诞生

        二维码诞生于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=d19bdf09f6d3f8afd0e740b7b22abfdbd6cb9e4a3e9834c7d4d4&bill_num=44697986&total_amount=430000 ”

3、发票分发交付二维码

以北京为例。 二维码中字符内容: “https://dppt.beijing.chinatax.gov.cn:8443/v/2_25112000000029133028_2025021416301600B985CF4”

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。

以上资料来自网络公开搜集。如有不准欢迎留言指正。

相关文章:

  • 链表和list
  • 情书网源码 情书大全帝国cms7.5模板
  • Vue 记录用户进入页面的时间、离开页面的时间并计算时长
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑤】
  • 网工项目理论1.7 设备选型
  • 嵌入式 Linux 设备树:为什么需要设备树?
  • 基于单片机ht7038 demo
  • 演绎推理及其与数学的关系介绍
  • Python大数据可视化:基于Python对B站热门视频的数据分析与研究_flask+hive+spider
  • 【Scrapy】Scrapy教程4——命令行工具
  • 电子电气架构 --- OEM对软件自研的期待
  • 开学季,无人机青少年编程及科普教育技术详解
  • Go入门之基本数据类型
  • 并查集基础+优化(下标从0开始)
  • win32汇编环境,对话框中使用月历控件示例二
  • 第二章:逻辑代数与逻辑门电路——数字世界的“语言”与“积木”
  • 【机器学习】深入浅出KNN算法:原理解析与实践案例分享
  • Dav_笔记14:优化程序提示 HINTs -4
  • 自动驾驶---基于深度学习模型的轨迹预测
  • TS语言自定义脚手架
  • 微信支付wordpress/企业seo优化服务
  • 施工企业资质等级划分/处理器优化软件
  • php外贸网站模板/微博营销的特点
  • 小企业网站免费建设/山东关键词优化联系电话
  • 网站建设市场占有率/web免费网站
  • 安装好的字体怎么用wordpress/杭州seo俱乐部