电子发票功能设计及其中的技术问题处理
数电发票已在全国全面推广,企业对接电子发票成为刚需。本文聚焦主流的第三方供应商对接模式,拆解开票全流程设计要点,详解发票信息填写、状态管理等核心环节,并针对性给出未响应、开票失败等技术难题的解决方案,为产品经理提供实用指南。

全面数字化的电子发票(数电发票)自2024年12月1日起在全国正式推广应用,电子发票的全面普及从“趋势”变成了“现状”,本文主要讨论对接电子发票的流程功能设计,并就流程中可能遇到的技术问题进行分析和处理。
对接方式
开具电子发票要求业务系统与税务局的系统能够进行数据的互通,将业务系统的开票数据传输到税务局,并从税务局获取开具的发票。
对接方式有两种:
1、直接与税务局系统对接。这种对接方式的优劣势总结如下:
优势:省去中间环节,数据传输更加高效和准确。
劣势:技术要求高,对接成本高,对接周期长。
2、对接第三方供应商开票系统,通过第三方开票系统与税务局系统进行数据交互。这种对接方式的优劣势总结如下:
优势:根据场景选用已经封装好的接口进行对接,对接周期短。
劣势:需要向供应商支付费用,开票稳定信依赖于供应商的系统稳定性。
在实际场景中,大多数企业选择的是以上第二种对接方式,所以本文主要讨论对接第三方供应商开票系统的设计流程。
技术选型
关于如何快速完成技术选型,我在《作为新手产品经理,突然被公司要求对接第三方平台,你应该怎么做?》一文中已有提及,可以到原文看一下,这里我只补充关于电子发票第三方平台技术选型的2个核心点:
1、选择“老牌”的供应商。
全面数字化的电子发票(数电发票)在全国全面推广应用之后,市面上涌现出越来越多的第三方供应商,但我更倾向于优先选择“老牌”的供应商,即已经在电子发票业务有多年技术经验积累,有一定知名度的供应商。
2、根据自身的业务和供应商的收费模式确定供应商。
每家供应商的收费侧重点都不同,应该根据自身业务的需求选择收费相对经济的供应商。
开票流程
在对接电子发票的整个过程中,产品经理的脑海里始终要有“三个系统”的概念,即:业务系统、第三方开票系统、税务局系统。
一个简单的开票动作涉及到以上三个系统的联动和数据交互,开票的基本流程如下图所示。

开票信息
从上图可以看出,整个开票流程的发起由消费者申请开具发票开始,这里需要给消费者提供一个填写发票信息的页面。

一般情况下,开票所需信息如下:
- 发票类型:可选“普通发票”和“专用发票”,这个是根据业务系统所属公司的属性决定的,有些公司只能开具“普通发票”,则无需提供“专用发票”选项。
- 抬头类型:可选“个人”和“企业”。
- 发票抬头:抬头类型选择“个人”时,要求填写个人姓名;抬头类型选择“企业”时,要求填写企业名称。
- 纳税人识别号:抬头类型选择“企业”时必须提供,要求填写企业统一社会信用代码。
- 注册地址:发票类型选择“专用发票”时必须提供。
- 注册电话号:发票类型选择“专用发票”时必须提供。
- 开户银行:发票类型选择“专用发票”时必须提供。
- 银行帐号:发票类型选择“专用发票”时必须提供。
- 邮箱:用于接收电子发票,邮箱和手机号码要求至少填写一项。
- 手机号码:用于接收电子发票,邮箱和手机号码要求至少填写一项。
填写发票信息的页面并非一定要由“业务系统”来提供,除了提供开票的 API 接口,有些第三方开票系统为了减少业务系统对接的工作量,会向业务系统提供标准化的开票页面,通过在页面中嵌入参数用来区分消费者申请开票的对象,当然,使用第三方开票系统提供的开票页面,意味着要向自己的消费者展示第三方开票系统的品牌形象甚至广告信息,有些公司会在意这个,因此还是会选择自己设计和开发开票页面。
发票状态
设置发票状态主要是为了系统和财务能够更好地管理发票信息,电子发票开票的流程很短,因此涉及到的状态也不多,在开票阶段需要用到的状态如下:
- 待开票:在消费者提交开票申请后,在开票系统响应开票结果前,发票信息会处于当前状态,在实际的数据交换过程中,开票的结果并非只有成功和失败,有可能是开票信息提交后,一直得不到第三方开票系统的响应,比如第三方开票系统服务器断联等情况,在这种情况下,开票系统会一直“挂”在“待开票”的状态下,直到第三方开票系统有响应结果为止。
- 已开票:发票开票成功。
- 开票失败:发票开票失败。

“未响应”的技术处理
“未响应”一般情况下是业务系统与第三方开票系统断联,无法从第三方开票系统接收到开票结果,针对未响应的情况,一般可以通过以下两种方案进行技术处理:
1、一般情况下,第三方开票系统都会提供一个发票状态的查询接口,用于在业务系统没有同步到开票状态时发起查询,业务系统可以设定一个重试时间,比如20秒,在没有同步到开票状态时,每隔20秒请求一次发票状态查询接口,直到获取到开票状态为止。
2、如果第三方开票系统有提供异步推送接口,会定时向业务系统推送开票状态,则业务系统只需在接收到接口推送的信息后同步开票状态即可。
无论以上哪种方案,都有可能在多次尝试后依旧没有得到响应,这种情况下,需要双方技术人员对系统进行检测并排除故障后重试。
“开票失败”的技术处理
开票失败常见的原因有两种:
1、第三方开票系统与税务局的系统数据交互出现异常,比如断联或税务局系统维护,这种情况下,可以参照“未响应”的技术处理,每隔一段时间进行重试或等待开票系统响应。
2、当月开票额度用完,不能继续开票,这种情况下,可以等待下个月额度恢复后重新开票,或者向税务部门申请增加开票额度。
发票的保存
当业务系统接收到电子发票后,有两种处理方式:
1、不保存电子发票文件,只保存第三方开票系统返回的发票链接,消费者和财务如果需要查看和下载电子发票,则直接打开发票链接;这种方式的好处是无需开辟独立的存储空间保存发票文件,但深度依赖第三方开票系统,一旦开票系统出现断联,则在业务系统中无法正常查看和下载发票。
2、保存电子发票文件,消费者和财务查看和下载电子发票通过业务系统就可以完成,不依赖于第三方开票系统,当然,这就要求业务系统需要开辟一块独立的存储空间用来保存发票文件。
发票的发送
大多数的第三方开票系统在开票成功后,会主动向消费者预留的邮箱或手机号发送电子发票的下载链接,同时也会提供“重发”的接口,在消费者未接收到发送的邮件或信息时,向系统要求重新发送邮件或信息,有些第三方开票系统会将发送发票信息的费用打包到接口的收费中,也有的会为了节省费用,只提供邮件的重发接口,不提供短信重发接口。
如果第三方开票系统未提供相应接口,业务系统也可以自己开发,毕竟发送邮件和发送短信并非是开发难度特别高的功能。
红冲发票
以往使用纸质发票的时候,如果消费者退费,已开具的发票需要作废的情况下,会要求消费者交回原发票,财务登记后会在发票上打上“作废”的字样。
这种场景在电子发票中则是通过红冲发票来实现,但并非所有业务系统都需要,比如餐饮行业,基本很少说支付成功开具发票后又产生退费需要红冲发票的场景。
而对于有此需求的业务系统,产品经理在对接此功能时需要注意,红冲发票并非直接对原发票进行作废,而是会开出一张与原发票等额的红冲发票,实际上红冲的发票与原发票没有直接关系,如果有3张发票都产生了退款,可以直接开一张与这3张发票总金额等额的红冲发票即可。
本文由人人都是产品经理作者【产品锦李】,微信公众号:【产品锦李】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
- 目前还没评论,等你发挥!

起点课堂会员权益




