开发指引
更新时间:2025.02.131、开发前配置
开发前,开发者需要完成如下两个步骤:配置开发参数和配置产品功能。
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、提供上线信息 | 正式service id(服务id): 服务名称: 服务场景:如充电宝 商户号: 1、预计上线时间、放量计划: 2、上线计划: (1)上线城市和计划: (2)应急机制:若遇紧急情况是否支持随时隐藏支付分入口:支持(默认支持) |
3、上线完成 | 验收完成后,微信支付侧将完成服务配置,产品正式上线;上线后,双方将共同监控产品运行情况,确保稳定运行并满足用户需求。 |