开发指引
更新时间:2025.04.221、开发前配置
开发前,开发者需要完成如下两个步骤:配置开发参数和配置产品功能。
1.1、配置开发参数
参数名 | 用途和申请说明 |
---|---|
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.2、配置产品功能
步骤 | 说明 |
---|---|
配置用于开发的微信号 | 支付分服务上线前无法开放给线上用户使用。为支持开发过程中的调试和测试,支付分提供了测试号白名单功能。上线前,仅白名单中的微信号用户可使用支付分服务。商户需登录服务商平台进行配置,具体参考测试微信号配置指引。 |
2、 详细开发指引
2.1、整体业务开发流程概览
当用户通过商户提供的入口申请使用服务后,商户系统调用支付分从业机构预授权接口,再根据返回参数拉起支付分授权界面。
用户授权后商户调用支付分创单接口,创单成功后商户向用户提供服务。
服务结束后商户通过完结订单接口告知支付分需要收款,由支付分完成自动扣款,最后通过下载交易账单进行对账。特殊需要退款的服务订单,也可调用退款接口完成退款。
整个业务开发过程中的前端UI交互,需要满足支付分合作品牌线上应用规范。
2.2、详细开发步骤说明
2.2.1、用户授权商户服务
用户申请使用服务时,商户需要先查询该用户是否授权使用服务。
未授权用户申请使用服务时,商户需调用从业机构预授权接口获取预授权token(1小时内有效),再根据使用支付分的载体选择对应API接口拉起支付分小程序授权页让用户完成授权,移动应用类型使用APP调起支付分授权服务,公众号类型使用JSAPI调起支付分授权服务,小程序类型使用小程序调起支付分授权服务,授权成功或解除授权会有开启授权/解除授权回调通知,商户也可调用查询用户授权记录主动查询。已授权用户可以直接到下一创单环节。
预授权接口需要注意的参数:
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成功后,可以登记扣款信息并通过清算机构(银联/网联)的委托代扣接口进行自动扣款。
商户也可以调起支付分小程序订单详情页引导用户主动支付,用户尝试主动支付时会发送商户预下单通知,此时商户需要调用清算机构(银联/网联)统一下单接口,并将下单结果返回给微信,由微信拉起收银台让用户主动支付。
间连支付分不支持使用代金券。
自动扣款成功或失败清算机构(银联/网联)会给商户系统发送代扣结果通知,主动支付成功后微信会向商户发送支付成功回调,支付成功后支付分订单结束。商户系统也通过调用查询支付分订单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、当支付分订单状态为待支付(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、提供上线信息 | 正式service id(服务id): 服务名称: 服务场景:如网约车 商户号: 1、预计上线时间、放量计划: 2、上线计划: (1)上线城市和计划: (2)应急机制:若遇紧急情况是否支持随时隐藏支付分入口:支持(默认支持) |
3、上线完成 | 验收完成后,微信支付侧将完成服务配置,产品正式上线;上线后,双方将共同监控产品运行情况,确保稳定运行并满足用户需求。 |