本节文档介绍了在“自建平台”模式下,商户向用户开具电子发票的不同业务场景。包括了场景的描述,基本的交互体验介绍和分步商户可根据自身应用实际,选择对应的业务场景,根据文档进行分步骤开发。文档中的每一个步骤需要调用的接口都添加了接口文档链接,商户及开发者可以直接跳转查看对应的接口文档。

# 一、服务号开票

# 1.1 场景描述

服务号开票的场景主要见于服务号内发起的购买行为和微信内H5页面购买行为后进行开票。

商户H5页面上设置开票按钮,用户点击开票按钮后跳转到微信授权页,完成授权后用户可返回原页面,或者重定向到商户的其他页面(如订单页)。

发票开好后会同步到用户的微信卡包,整个开票过程是异步过程,用户无需在页面等待,既保证了用户能收到发票,也解决了开票时间不稳定的问题。

# 1.2 交互介绍

服务号开票交互图如下

# 1.3 接口调用流程

服务号开票的时序图如下

服务号场景下开具电子发票的步骤如下:

  1. 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。不同接入模式获取s_pappid的方法略有不同:

    如果商户接入模式为“自建平台模式”:s_pappid通过调用调用开票平台接口列表接口获得

  2. 商户获取获取access_token。调用方法见获取Access token
  3. 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
  4. 商户获取授权页ticket。调用方法见商户接口列表
  5. 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表
  6. 将授权页url添加到开票按钮上,供点击跳转;
  7. 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表
  8. 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表
  9. 在自建发票平台开具电子发票;
  10. 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表
  11. 将电子发票添加到用户微信卡包。调用方法见将电子发票卡券插入用户卡包

# 二、扫码开票

# 2.1 场景描述

扫码开票的场景主要见于向用户提供小票的线下行业,如零售、餐饮、便利店、加油站等。商户将订单信息转换成开票二维码,打印到小票上,随小票提供给用户。用户扫描二维码后跳转到微信授权页,使用保存在微信中的抬头信息进行快速填写,点击开票后可以关闭页面或者重定向到商户的其他页面(如订单页)。

发票开好后会同步到用户的微信卡包,通过用户自助进行开票,无需安排额外的人手负责开票,能有效提升柜台效率。整个开票过程是异步过程,用户无需在页面等待,既保证了用户能收到发票,也解决了开票时间不稳定的问题。

# 2.2 交互介绍

扫码开票交互图如下

# 2.3 接口调用流程

扫码开票的时序图如下

扫码开票场景下开具电子发票的步骤如下:

  1. 提前获取开票平台标识 s_pappid,因为同一个开票平台的 s_pappid 都相同,所以获取 s_pappid 的操作只需要进行一次。不同接入模式获取 s_pappid 的方法略有不同:

    如果商户接入模式为“自建平台模式”:s_pappid通过调用调用开票平台接口列表接口获得

  2. 商家将订单信息按照自身业务逻辑生成二维码,印制到小票上供用户扫描,本步骤根据商户自身业务逻辑生成,不涉及调用微信接口
  3. 商户获取获取access_token。调用方法见获取获取Access token
  4. 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
  5. 商户获取授权页ticket。调用方法见商户接口列表
  6. 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表
  7. 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表
  8. 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表
  9. 在自建发票平台开具电子发票;
  10. 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表
  11. 将电子发票添加到用户微信卡包。调用方法见开票平台接口列表

# 三、App开票

# 3.1 场景描述

App开票的场景主要用于通过App开展业务的商户,如电商、线上服务平台等。商户App界面上设置开票按钮,用户点击开票按钮后拉起微信跳转到授权页,完成授权后用户可返回原App。

发票开好后会同步到用户的微信卡包,整个开票过程是异步过程,用户无需在微信中等待,确保了用户在商户App中体验的连贯和流畅性。

# 3.2 交互介绍

App开票交互图如下

# 3.3 接口调用流程

App开票的时序图如下

App开票时序图

App开具电子发票的步骤如下:

  1. 确认App中已经安装最新版的微信SDK
  2. 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。不同接入模式获取s_pappid的方法略有不同:

    如果商户接入模式为“自建平台模式”:s_pappid通过调用调用开票平台接口列表接口获得

  3. 商户使用开放平台(open账号)的appid,获取获取access_token。调用方法见获取Access token
  4. 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
  5. 商户获取授权页ticket。调用方法见开票平台接口列表
  6. 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表
  7. 使用第5步获得的授权页url(auth_url)作为传入参数,拉起微信客户端打开授权页。iOS端拉起方法见iOS客户端打开授权页、Android拉起方法见Android客户端打开授权页
  8. 商户在后台等待接收用户的授权完成事件。注意:此阶段用的是服务号的 appid来接收,请不要与开放平台账号的appid混淆。获取授权事件方法见商户接口列表
  9. 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表
  10. 在自建发票平台开具电子发票;
  11. 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表
  12. 将电子发票添加到用户微信卡包。调用方法见开票平台接口列表

# 四、小程序开票

# 4.1 场景描述

小程序开票的场景主要见于小程序内发起购买行为后进行开票。商户小程序页面上设置开票按钮,用户点击开票按钮后跳转到小程序开票授权页,完成授权后用户可返回原页面,或者重定向到商户的其他页面(如订单页)。发票开好后会同步到用户的微信卡包,整个开票过程是异步过程,用户无需在页面等待,开票时间不稳定的问题,真正做到“用完即走”。

# 4.2 交互介绍

小程序开票交互图如下

小程序开票

# 4.3 接口调用流程

小程序开票的时序图如下

小程序开具电子发票的步骤如下:

  1. 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。不同接入模式获取s_pappid的方法略有不同:

    如果商户接入模式为“自建平台模式”:s_pappid通过调用调用开票平台接口列表接口获得

  2. 商户获取获取access_token。调用方法见获取获取Access token
  3. 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
  4. 商户获取授权页ticket。调用方法见商户接口列表
  5. 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表
  6. 在小程序开票按钮的点击事件上部署跳转到小程序授权页的逻辑。上一步获得的auth_url和开票小程序appid要作为参数传入。调用方法见商户接口列表
  7. 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表
  8. 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表
  9. 在自建发票平台开具电子发票;
  10. 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表
  11. 将电子发票添加到用户微信卡包。调用方法见开票平台接口列表

# 五、支付后开票

具体见产品介绍_微信电子发票|微信支付合作伙伴文档中心