开发指引
更新时间:2025.08.061、整体业务开发流程概览
商户通过调用小程序合单支付下单接口获取预支付交易会话标识(prepay_id),再通过小程序提供的requestPayment方法,唤起微信支付收银台。
当用户在收银台完成支付后点击完成按钮,或中途取消支付,会返回拉起支付前小程序页面,同时商户小程序页面将收到小程序requestPayment方法返回的回调,商户需调用查询合单订单API接口确认订单状态,根据订单状态进行相应的业务逻辑处理(在商户页面向用户展示查询到的订单支付状态、在商户内部系统更新订单状态等)。如果订单支付成功,微信支付系统还会发送合单订单支付成功回调通知给商户。具体的支付回调和查单的实现方案,商户可以参考支付回调和查单实现指引。
2、详细步骤说明
2.1、商户下单
商户通过调用小程序合单下单API接口生成订单并获取预支付交易会话标识(prepay_id)。
下单接口关键参数说明:
combine_mchid
:合单发起方的商户号,需先申请发起合单支付权限,详细参考:快速开始-步骤3。
sub_order.mchid
:子单参与方的商户号,需先申请接收合单支付权限,详细参考:快速开始-步骤3。
combine_appid
:公众账号ID,合单发起方商户号combine_mchid
和子单参与方商户号sub_order.mchid
都需要绑定同一个combine_appid
,详细参考:快速开始-步骤4和5。
time_expire
:支付结束时间。若传递该参数,则用户只能在订单设置的支付结束时间time_expire
之前进行支付,超过支付结束时间后,用户支付将收到:"订单已超过商户设置的最晚支付成功时间,请重新发起支付"的提示,商户需对订单进行关单处理。若不传该参数,默认订单支付有效期为7天,用户可在7天内进行支付,超出7天,订单将被关闭。
prepay_id
:预支付交易会话标识。调起支付时需要使用的参数,prepay_id
有效期为2小时,超过2小时,商户需要使用原下单参数重新请求下单接口,获取新的prepay_id
。
profit_sharing
:订单分账标识,如果订单在支付成功后需要进行分账,必须传参数值为true
。如果无需分账,可以不传该参数,或传false
。
2.2、商户调起支付
商户小程序通过调用小程序提供的requestPayment方法来拉起微信收银台,详情参考小程序调起支付
2.3、用户支付
用户在微信收银台完成支付/取消支付,返回商户小程序页面后,商户小程序页面将收到小程序提供的requestPayment方法返回的回调,此时商户需要调查询合单订单API接口确认订单状态,并根据订单状态展示支付结果。
同时,如果用户支付成功,微信支付系统会向商户发送合单订单支付成功回调通知,未收到回调时,商户可调用查询合单订单API接口确认订单状态。具体实现方案商户可以参考支付回调和查单实现指引。
若商户需要限制用户支付的时间,有以下两种方式:
1、下单时通过time_expire
参数,设置订单的支付结束时间,超过设置的结束时间后,商户进行关单处理。
2、商户在自己的系统内进行倒计时,超过有效期,进行关单处理。
2.4、商户对账
合单支付的订单账单是以子单为维度,每笔子单都会记录在各个子单商户账单内,需要各个子单商户自己进行下载。详细参考:账单产品介绍
2.5、订单退款
合单支付的订单退款,无法通过合单商户订单号combine_out_trade_no
退款,只能根据单个子单进行退款。详细参考:退款产品介绍
3、合单支付订单状态流转图
1、商户调用小程序合单支付下单接口下单成功后,商户可以调用查询合单订单接口来确认订单状态,详情请参考支付回调和查单实现指引。
2、当订单状态处于未支付(sub_orders.trade_state:NOTPAY)时,用户可对订单进行支付,若用户支付失败,订单状态不变。
3、7天内商户可对无需继续支付的订单(例如用户超过商户系统内部规定的支付时间,或超过商户下单设置的最晚支付时间(time_expire)的订单)调用关闭合单订单接口,使订单关闭,或超过7天后由微信侧自动关单。关单后,订单状态会从未支付(sub_orders.trade_state:NOTPAY)流转为已关闭(sub_orders.trade_state:CLOSED)。
4、当用户成功支付订单时,订单状态会从未支付(sub_orders.trade_state:NOTPAY)流转为支付成功(sub_orders.trade_state:SUCCESS)。
5、当订单状态为支付成功(sub_orders.trade_state:SUCCESS)时,如果用户需要退款,商户可调用申请退款接口(仅支持支付成功后1年内的订单),退款申请成功后,退款状态可通过查询退款单接口进行确认。
6、以下两个状态为终态
sub_orders.trade_state:CLOSED
sub_orders.trade_state:SUCCESS