开发指引

更新时间:2023.12.19

# 1. 接口规则

为了在保证支付安全的前提下,带给商户简单、一致且易用的开发体验,我们推出了全新的微信支付APIv3接口。该版本API的具体规则请参考“APIv3接口规则 (opens new window)”。

# 2. 开发环境搭建

为了帮助开发者更好的调用接口,我们提供微信支付APIv3官方SDK (opens new window),请根据自身开发语言,选择对应的SDK库集成到项目。

目前微信支付提供JAVA、PHP、GO三种语言版本的SDK,封装了签名生成、签名验证、敏感信息加/解密、媒体文件上传等基础接口功能。

SDK 说明
wechatpay-java (opens new window) Java 服务端 SDK
wechatpay-php (opens new window) PHP 服务端 SDK
wechatpay-go (opens new window) GO 服务端 SDK

如下通用基础功能接口,已经在SDK中完成封装,可替换相关参数后快速测试。

  1. 签名生成 (opens new window)

  2. 签名验证 (opens new window)

  3. 敏感信息加解密 (opens new window)

  4. merchantPrivateKey(私钥) (opens new window)

  5. wechatpayCertificates(平台证书) (opens new window)

  6. APIV3Key(V3 key) (opens new window)

若使用的编程语言无对应的SDK,则需要按照接口规则与接口详细信息自行开发。

# 3. 业务接入

# 3.1. 业务序列图

不活跃商户身份核实业务序列图

# 3.2. 关键步骤说明

# 步骤1:接收商户平台处置记录通知

1、在调用接口前,开发者需要根据商户平台处置通知 (opens new window),完成商户违规通知回调地址的创建,接收商户平台处置回调通知。

2、在收到商户平台处置回调通知后,开发者需要关注回调通知 字段中event_type(通知类型)为VIOLATION.PUNISH且回调通知解密后risk_type(风险类型)为ALL_MERCHANTS_HAVE_CONFIRMED_THE_WILLINGNESS_TO_OPEN_AN_ACCOUNT的消息,建议将其中sub_mchid(处置商户号)、record_id(通知唯一标识)、punish_plan(处罚方案)和risk_type(风险类型)等信息予以记录以便后续使用和问题排查。

回调通知内容示例如下:

1{
2 "sub_mchid": "1900009231",
3 "company_name":"财付通支付科技有限公司",
4 "record_id":"200201820200101080076610000",
5 "punish_plan":"关闭支付权限,延迟结算",
6 "punish_time":"2015-05-20T13:29:35+08:00",
7 "punish_description":"",
8 "risk_type":"ALL_MERCHANTS_HAVE_CONFIRMED_THE_WILLINGNESS_TO_OPEN_AN_ACCOUNT",
9 "risk_description":"无交易商户未确认开户意愿"
10}

# 步骤2:发起不活跃商户身份核实

1、同一商户同一时间只会存在一笔核实单,如果针对该商户重复发起核实,接口会返回成功以及流程中的核实单单号。

2、发起不活跃商户身份核实接口采用异步处理模式,即在接收到服务商请求后,优先受理请求再异步处理,最终的核实结果可以通过查询接口获得。

# 步骤3:查询不活跃商户身份核实结果

1、不活跃商户身份核实结束后,目前不会有回调通知,需要开发者对已发起单据进行轮询。

2、当查询到核实单状态为SUCCESS或FAIL时,即可停止轮询,核实单状态不再改变。

3、核实单除了记录单号和单据状态外,还会记录失败原因,当核实单状态为FAIL时返回,可以协助判断问题。

注意

一般三天内单据即会流转为终态,建议轮询时间3天,轮询频率每小时1次。