开发指引

更新时间:2025.02.13

1、开发前配置

开发前,开发者需要完成如下两个步骤:配置开发参数和配置产品功能。

1.1、设置安全联系人

微信支付日常安全监测发现技术异常时,会向安全联系人和超级管理员发送风险提醒。请商户超级管理员尽快设置技术同事为安全联系人,确保能及时接收异常信息评估业务风险,详见安全联系人设置指引

1.2、熟悉微信支付接口规则

正式进入开发前,开发者需要先阅读基本规则私钥和证书了解调用微信支付接口的基本规则和签名规则。

1.3、配置开发参数

参数名

用途和申请说明

mchid

支付机构或金融机构在微信侧入驻的从业机构商户号,在服务商平台申请。

channel_id

从业机构登录服务商平台申请的渠道商商户号。

sub_mchid

从业机构或渠道商调用商户开户意愿确认接口生成的机构子商户号。

appid

从业机构的应用载体ID,可以是公众号/小程序,在公众平台申请,从业机构需登录服务商平台绑定appid才能在该载体中使用微信支付,详细请参考服务商商户号与AppID账号关联管理

sub_appid

子商户的应用载体ID,可以是公众号/小程序,在公众平台申请,从业机构调服务商子商户新增对应APPID关联接口或者登录服务商平台给子商户配置sub_appid才能在该载体中使用微信支付,详细请参考服务商为特约商户配置AppID(即sub_appid)操作方法

APIV2密钥

从业机构调用APIv2接口需使用该密钥签名验签,前端拉起支付分小程序需要用到API v2密钥生成签名,登录服务商平台设置,参考APIv2密钥设置及修改方法

APIV3密钥

从业机构接收APIv3回调密文后需使用该密钥解密,获取平台证书公钥也需要使用该密钥解密,登录服务商平台设置,参考APIv3密钥设置方法

商户API证书

从业机构调用APIv3接口请求时需要使用该证书私钥生成请求签名,v2部分涉及资金操作接口(如退款/撤销/企业付款等)请求也需要携带该证书,登录服务商平台申请,获取方式参考商户API证书获取方法及功能介绍

微信支付平台证书

从业机构调用APIv3接口返回时需要使用该证书公钥进行验签,v3部分含有敏感信息参数接口也需要使用平台证书公钥加密,获取方式参考如何下载平台证书

1.4、配置产品功能

步骤

说明

配置用于开发的微信号

支付分服务上线前无法开放给线上用户使用。为支持开发过程中的调试和测试,支付分提供了测试号白名单功能。上线前,仅白名单中的微信号用户可使用支付分服务。从业机构需登录服务商平台进行配置,具体参考测试微信号配置指引

2、 详细开发指引

2.1、整体业务开发流程概览

  • 当用户通过商户提供的入口申请使用服务后,商户系统同步创建微信支付分服务订单,商家再根据返回参数拉起支付分确定订单界面,用户确认订单后商家开始向用户提供服务。

  • 服务结束后商户通过完结订单接口告知支付分需要收款,由支付分完成自动扣款,最后通过下载交易账单进行对账。特殊需要退款的服务订单,也可调用退款接口完成退款。

  • 整个业务开发过程中的前端UI交互,需要满足支付分合作品牌线上应用规范

2.2、详细开发步骤说明

2.2.1、商户创建支付分订单

当用户申请使用服务时,商户需调用创建支付分订单API接口创建订单。在接口参数中,商户需要通过post_payments字段,上传本笔订单的预估费用或计费规则等信息,不同的场景有不同的传值要求,详见:post_payments(后付费项目)字段传参说明

下单接口需要注意的参数:

service_id:支付分服务ID,商户支付分服务的唯一标识,支付分产品权限申请审核通过后,微信支付运营同学会向商户提供支付分服务ID。

need_user_confirm:该参数表示这一笔服务订单,是否需要用户确认。需确认模式下,商户必须固定传"true"

risk_fund.name:服务风险金名称。

  • 先免模式下,该参数只能传 押金[DEPOSIT]、预付款[ADVANCE]、保证金[CASH_DEPOSIT] 中的一个值;

  • 先享模式,该参数只能传 [预估订单费用]ESTIMATE_ORDER_COST。

risk_fund.amount:服务风险金金额,不可超过服务ID风险金额上限,支付分运营同学提供service_id时会告知服务ID风险金额上限。

  • 先免模式下,传这笔服务单需要的押金、预付款、保证金数额。

  • 先享模式,传这笔订单预估的实际费用。

time_range:时间参数时需注意如果选用"yyyyMMddHHmmss"精确到秒格式,由于商户系统和微信支付分系统可能存在一定时差,导致API接口调用出现时间检验不通过失败情况,因此商户在传入时间参数时需预留一定误差时间

package:创单成功后返回,有效期(1小时)内能够拉起支付分小程序确认订单页,一旦拉起支付分小程序的确认订单页,用户可在2小时内可进行订单确认操作,页面停留超过2小时将无法确认订单。

2.2.2、用户确认支付分订单

商户调用创建支付分订单API接口生成订单后,会获取到用于拉起支付分订单确认页面的关键参数"package",商户根据自己使用支付分的载体选择对应API接口拉起支付分,公众号类型使用JSAPI调起支付分订单确认页,小程序类型使用小程序调起支付分订单确认页

2.2.3、商户提供服务

  • 用户确认订单后,微信支付会向商户发送确认订单回调通知,告知用户已确认完成。商户也可通过查询支付分订单API获取用户确认订单的状态(确认后state为DOING,未确认为CREATED),用户确认订单后,商户可以开始向用户提供服务。

  • 服务完成后,商户需调用完结支付分订单API通知微信支付服务已结束(collection.state参数变为USER_PAYING状态,即用户待支付状态)。在接口参数中,商户需要通过post_payments字段,上传本笔订单实际的付费项目明细,不同的场景有不同的传值要求,详见:post_payments(后付费项目)字段传参说明

  • 订单完结后,支付分会持续自动扣款,无需重复调用完结接口。

完结订单接口需要注意的参数:

total_amount:订单收款总金额,先免模式(订单收款总金额<=创单传的服务风险金额<=服务ID风险金额上限),先享模式(订单收款总金额<=服务ID风险金额上限),支付分运营同学在提供service_id时会告知服务ID风险金额上限。

post_payments:后付费项目,表示本次服务完成后,商家收取的服务费用项目。商户需要严格按照post_payments(后付费项目)字段传参说明 传参,否则会导致支付分订单页无法正常展示后付费项目,影响验收上线。

time_range:实际服务时间,该参数有三种参数格式,如果选用"yyyyMMddHHmmss"精确到秒格式,可能由于商户系统和微信支付分系统存在一定时差,导致API接口调用出现时间检验不通过失败情况,因此商户在传入时间参数时需预留一定误差时间。

2.2.4、商户收款

商户调用完结支付分订单API成功后,可以登记扣款信息并通过清算机构(银联/网联)的委托代扣接口进行自动扣款。

商户也可以调起支付分小程序订单详情页引导用户主动支付,用户尝试主动支付时会发送商户预下单回调通知,此时商户需要调用清算机构(银联/网联)统一下单接口,并将下单结果返回给微信,由微信拉起收银台让用户主动支付。

间连支付分不支持使用代金券。

自动扣款成功或失败清算机构(银联/网联)会给商户系统发送代扣结果通知,主动支付成功后微信会向商户发送支付成功回调通知,支付成功后支付分订单结束。商户系统也通过调用查询支付分订单API或者银联查单接口主动查询订单支付情况。

下面介绍几种扣款过程中的异常处理情况(存在登记生效的扣款单,需要等24h扣款单失效或者调用清算机构(银联/网联)关单接口关闭扣款单):

  • 如果订单在“待支付”状态下(collection.state: USER_PAYING),若扣款金额有误可调用修改支付分订单金额API修改订单金额,系统将按照修改后的金额发起扣款(注意只能下调扣款金额)

  • 如果订单在“待支付”状态下(collection.state: USER_PAYING),若不需要继续扣款,希望微信支付分停止继续扣款。可调用取消支付分订单API取消待支付的支付分订单,支付分订单将变成已取消状态。

  • 如果订单在“待支付”状态下(collection.state: USER_PAYING),用户通过其他方式完成支付,商户可调用同步支付分订单状态API将订单支付成功状态同步给微信支付,后续微信支付将不再发起扣款,支付分订单将变成已完成状态。

2.2.5、商户对账

商户可以通过清算机构(银联/网联)接口下载账单文件对账,如对账单文件有疑惑请咨询清算机构(银联/网联)。

2.2.6、订单退款

支付分订单支付后,若订单需要退款,商户调用清算机构(银联/网联)接口申请退款,如退款接口有疑惑请咨询清算机构(银联/网联)。

2.3、订单状态流转图

 

1、当支付分订单状态为已创建(state:CREATED)和用户已确认订单(collection.state: USER_CONFIRM)和待支付状态(collection.state: USER_PAYING)下,商户可以调用取消服务订单接口,取消支付分服务订单。

2、当支付分订单状态为待支付(collection.state: USER_PAYING)时,商户可以登记扣款单并调用清算机构(银联/网联)委托代扣接口扣款,扣款失败时状态不变,扣款成功时订单状态才改变。

3、当支付分订单状态在待支付状态(collection.state: USER_PAYING)下,商户可以调用接口修改订单金额,修改成功后商户可以按照修改后的金额,登记扣款单并调用清算机构(银联/网联)委托代扣接口扣款。

4、以下三个状态为终态

  • state:EXPIRED

  • state:REVOKED

  • state:DONE

2.4、开发验收

商户侧使用测试微信号完成开发测试后,需按照以下流程进行验收和上线工作(验收审核通过后对应服务才能配置上线并开放用户使用):

步骤

说明

1、提交资料

1、产品流程录屏:
第一人称视角手机录屏,清晰展示包含首页/商品介绍页面→ 微信支付分确认订单页面(含介绍、计费规则、下单确认)→ 使用微信支付分开通授权成功 → 扣款成功 → 商户侧订单详情 → 查看微信通知 → 查看微信支付分订单详情
注:微信支付分相关展示须符合支付分合作品牌线上应用规范
2、第三方视角拍摄录屏:
线下场景第三方视角拍摄视频,清晰展示实体产品设备、使用微信支付分流程、实体设备360度全貌,清晰露出设备品牌名称,硬件说明文字等
3、微信支付分订单详情页面截图:
提供微信支付分进行中、已完成、已取消三个订单状态详情截图,须确保按以下回传规范传值
post_payments(后付费项目)字段传参说明

2、提供上线信息

正式service id(服务id):

服务名称:

服务场景:如充电宝

商户号:

1、预计上线时间、放量计划:

2、上线计划:

  (1)上线城市和计划:

  (2)应急机制:若遇紧急情况是否支持随时隐藏支付分入口:支持(默认支持)

3、上线完成

验收完成后,微信支付侧将完成服务配置,产品正式上线;上线后,双方将共同监控产品运行情况,确保稳定运行并满足用户需求。