支付后开电子发票
1. 场景描述
支付后开票通过和微信支付相结合,提供了一种新的发起开票的途径。用户可以在微信支付凭证中看到开具电子发票的入口,这能为某些打印小票存在一定困难的线下场景(如停车场闸机)是一个良好的开票路径,其它需要打印小票的场景,考虑到小票存在丢失的可能,也可以使用支付后开票作为补充。用户使用微信支付完成消费后,付款凭证上会出现开票入口,用户点击开票按钮后提交抬头信息并完成开票授权。发票开好后会同步到用户的微信卡包,整个开票过程是异步过程,既保证了用户能收到发票,也解决了开票时间不稳定的问题。
2. 交互介绍
支付后开票交互图如下
支付后开票
3. 接口调用流程
支付后开票的时序图如下
支付后开票时序图
支付后开票的步骤如下:
1 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。不同接入模式获取s_pappid的方法略有不同:
如果商户接入模式为“自建平台模式”:s_pappid通过调用调用开票平台接口列表接口获得
2 商户获取获取access_token。调用方法见获取Access token;
3 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
4 关联商户号和开票平台。本步骤为一次性设置,后续一般在遇到开票平台识别号变更,或者商户更换开票平台时才需要调用本接口重设对应关系。调用方法见商户接口列表;
5 查询关联状态,确认商户号已经和开票平台关联成功。调用方法见商户接口列表;
6 在发起支付请求的时候指定每一笔交易的支付后开票。在步骤3关联了商户号和开票平台后不代表每一笔支付都会出现开票入口,需要通过本步接口进一步制定才能让支付凭证上出现开票入口。调用方法见商户接口列表;
7 商户在后台等待接收用户的授权完成事件,接收授权完成事件所用的appid为商户号关联的appid。获取授权事件方法见商户接口列表;
8 查询用户开票信息。根据用户授权完成事件中获得的order_id 与 s_pappid,查询用户开票信息。调用方法见商户接口列表;
9 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表;
10 在自建发票平台开具电子发票;
11 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表;
12 将电子发票添加到用户微信卡包。调用方法见将电子发票卡券插入用户卡包。