开发指引

更新时间:2025.02.27

1、开发前配置

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

1.1、设置安全联系人

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

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

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

1.3、准备开发参数

在发起接口请求时,开发者还需传入一些必要参数,如服务商商户号、子商户号(也叫特约商户号/二级商户号)、sp_appid、证书私钥、公钥等,获取方式详见:服务商模式开发必要参数说明

1.2、配置产品功能

步骤

说明

配置用于开发的微信号

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

2、 详细开发指引

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

  • 当用户通过商户提供的入口申请使用服务后,商户系统调用支付分商户预授权接口,再根据返回参数拉起支付分授权界面。

  • 用户授权后商户调用支付分创单接口,创单成功后商户向用户提供服务。

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

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

2.2、详细开发步骤说明

2.2.1、用户授权商户服务

预授权接口需要注意的参数:

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

2.2.2、商户创建支付分订单

商户调用创建支付分订单API接口生成订单

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

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

risk_fund.name:服务风险金名称。免确认模式下,商户必须固定传预估订单费用[ESTIMATE_ORDER_COST]

risk_fund.amount:服务风险金金额,不可超过服务ID风险金额上限,支付分运营同学提供service_id时会告知服务ID风险金额上限。商户侧按照这笔订单预估的实际费用传。

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

openid:用户在商户appid载体下的唯一标识,用户授权商户服务阶段的授权成功回调查询用户授权记录会返回openid参数,如商户侧丢失可参考参数说明获取openid。

2.2.3、商户提供服务

  • 商户创单成功后可以开始向用户提供服务。

  • 服务完成后,商户需调用完结支付分订单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成功后,微信支付分就会对用户发起扣款,商户也可以调起支付分小程序订单详情页引导用户主动支付,用户如果有满足核销条件的代金券会自动使用(使用后,在支付成功回调查询支付分订单接口的promotion_detail字段会返回代金券信息),目前支付分只支持全场券。若扣款成功,微信支付会给商户系统发送支付成功回调通知,支付分订单结束。商户系统也通过调用查询支付分订单API主动查询扣款情况。

下面介绍几种扣款过程中的异常处理情况:

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

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

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

2.2.5、商户对账

商户可在次日上午10点后通过服务商平台手动下载交易账单文件进行对账。另外,商户也可以通过申请交易账单API请求账单,然后使用下载账单API下载交易账单进行对账。

需要注意以下几点:

  • 订单只有在支付成功后才会出现在交易账单中,未支付成功的订单不会显示在账单里

  • 主动支付完成的支付分订单账单的交易类型是JSAPI,而自动扣款完成的支付分订单账单的交易类型为AUTH。

  • 在账单中,商户订单号并非支付分商户服务单号,而是在账单的商户数据包中(格式为wxzff|微信服务单号|商户服务单号)。

2.2.6、订单退款

支付分订单支付后,若订单需要退款,商户可登录服务商平台手动操作提交退款,具体参考交易退款方法介绍

同时也可通过支付成功回调和查询订单获取微信交易单号(transaction_id),然后使用申请退款API提交退款。提交退款后,可使用查询退款API查看当前退款状态,成功退款后将收到退款结果通知

2.3、订单状态流转图

 

1、当支付分订单状态为待支付(collection.state: USER_PAYING)时,微信侧会定期轮询扣款,扣款失败时状态不变,扣款成功时订单状态才改变。

2、当支付分订单状态在待支付状态(collection.state: USER_PAYING)下,商户可以调用接口修改订单金额,修改成功后微信侧将按新金额发起扣款。

3、当支付分订单状态为已创建(state:CREATED)和用户已确认订单(collection.state: USER_CONFIRM)和待支付状态(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、上线完成

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