目录
1. 在微信公众号/小程序提交电子发票报销
2. 在企业微信/企业号提交电子发票报销
3. 在外部App提交电子发票报销
4. 扫码提交电子发票报销

# 导读

本节文档介绍了企业支持用户提交电子发票,实现无纸化报销的不同业务场景。包括了场景的描述,基本的交互体验介绍和分步骤开发指引。企业可根据自身应用实际,选择对应的业务场景,根据文档进行分步骤开发。文档中的每一个步骤需要调用的接口都添加了接口文档链接,企业及报销软件开发者可以直接跳转查看对应的接口文档。 已完成认证的微信公众平台账号、微信开放平台账号、企业微信和企业号,均可直接调用微信电子发票报销接口

# 1. 在微信公众号/小程序提交电子发票报销

# 1.1 场景描述

微信内提交电子发票报销通常指,具有公众号或小程序的企业或报销应用提供商,让企业员工或用户在微信内拉起保存在微信中的发票列表,勾选需要报销的发票后向企业或报销应用提交,企业收到员工提交的发票后完成后续的报销流程。
该场景适用于:
1 在微信公众号/小程序中有完整报销系统的报销企业或者报销服务提供商,或者
2 现有报销系统有独立的用户账号体系。员工在微信公众号/小程序内绑定现有报销系统账号后,可以在微信中向报销企业或报销服务商提交发票

在微信公众号/小程序中提交电子发票,无需安装额外的App,便于企业和报销应用提供商以最低门槛实现移动端快速提交电子发票。

# 1.2 交互介绍

微信内提交电子发票报销交互图如下
微信内报销交互

# 1.3 接口调用流程

微信内提交电子发票报销的时序图如下 微信内报销时序 公众号场景下开具电子发票的步骤如下: 1 获取公众平台账号/企业微信账号的access_token,调用方法见获取access_token ; 2 拉起发票列表页,调用方法见微信公众号拉起发票列表 微信小程序拉起发票列表 ; 3 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;
4 根据card_id和encrypt_code查询发票信息,调用方法见查询报销发票信息
5 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;
6 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新;
7 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新

# 2. 在企业微信/企业号提交电子发票报销

# 2.1 场景描述

在企业微信提交电子发票是指应用企业微信/企业号并完成了认证的企业,可以从企业微信/企业号中拉起保存在微信卡包中的发票列表,勾选需要报销的发票后向企业或报销应用提交发票,企业收到员工提交的发票后完成后续的报销流程。应用企业微信的接口实现电子发票报销,可以结合企业微信的审批接口能力,在企业微信中实现一体化的报销提单审批功能。

# 2.2 交互介绍

在企业微信提交电子发票交互图如下
企业微信报销交互

# 2.3 接口调用流程

企业微信/企业号提交电子发票报销时序图如下 企业微信报销时序图 在企业微信提交电子发票的步骤如下:
1 获取企业微信/企业号账号的access_token,调用方法见获取access_token ; 2 拉起发票列表页。企业微信2.1新增了选择电子发票的js-API接口,使用企业微信的企业将企业微信更新至2.1以上版本后,可快速实现在企业微信中选中电子发票的功能。调用方法见企业微信拉起发票列表 ; 3 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;
4 根据card_id和encrypt_code查询发票信息,调用方法见查询报销发票信息
5 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;
6 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新;
7 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新

# 3. 在外部App提交电子发票报销

# 3.1 场景描述

在App提交电子发票是指,报销企业或报销服务商从自建的移动办公App中拉起保存在微信卡包中的发票列表,勾选需要报销的发票后向企业或报销应用提交发票,企业收到员工提交的发票后完成后续的报销流程。从App中发起电子发票报销,可以进一步丰富企业移动办公App的应用场景。

# 3.2 交互介绍

外部App提交电子发票报销交互图如下
App报销交互

# 3.3 接口调用流程

在外部App提交电子发票报销时序图如下 App报销时序

在外部App提交电子发票报销的步骤如下:
1 获取开放平台账号的access_token,调用方法见获取Access token ; 3 拉起发票列表页,调用方法见报销方接口列表 ; 4 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;
5 根据card_id和encrypt_code查询发票信息,调用方法见报销方接口列表
6 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;
7 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方接口列表接口进行更新;
8 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方接口列表接口进行更新

# 4. 扫码提交电子发票报销

# 4.1 场景描述

扫码提交电子发票是指通过扫描PC上的二维码,让企业员工或用户在微信内H5页面上拉起保存在微信卡包中的发票列表,勾选需要报销的发票后向企业或报销应用提交发票,企业收到员工提交的发票后完成后续的报销流程。
该场景适用于员工报销行为主要从PC端发票的报销企业或者报销服务商。要求报销企业或者报销服务商获取移动端拉起微信电子发票的能力(微信内、企业微信或者独立报销APP) 该场景充分兼顾了员工的报销行为大多在PC上发起,可以无缝的和现有报销系统进行对接,不需要大幅改变员工的报销习惯,便于在企业内快速推广应用。

# 4.2 交互介绍

扫码开票交互图如下
扫码报销交互1
扫码报销交互2

# 4.3 接口调用流程

扫码提交电子发票报销的时序图如下 扫码报销时序 扫码开票场景下开具电子发票的步骤如下:

1 维护二维码,展示在报销系统PC端页面上,供用户使用使用微信、企业微信或独立报销APP扫码后,打开相应报销页面,向报销系统提交微信电子发票。报销系统获取到发票信息后,员工继续在PC端完成后续报销流程;

2 获取公众平台账号/企业微信账号的access_token,调用方法见获取Access token

3 拉起发票列表页,调用方法见报销方接口列表

4 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;

5 根据card_id和encrypt_code查询发票信息,调用方法见报销方接口列表

6 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;

7 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方接口列表接口进行更新;

8 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方接口列表接口进行更新