请求单次分账
场景介绍
单次分账请求按照传入的分账接收方账号和资金进行分账,同时会将订单剩余的待分账金额解冻给特约商户。故操作成功后,订单不能再进行分账,也不能进行分账完结。
接口限频:
1、单个服务商(请求分账) 300QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。
2、单个交易收款商户(请求分账) 30QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。同时,建议对同一主体的商户拆分多个商户号进行交易,避免交易集中到单个商户。
注意:
1、对同一笔订单最多能发起50次分账请求,每次请求最多分给50个接收方。
2、服务商需确保向微信支付传输用户身份信息和账号标识信息做一致性校验已合法征得用户授权
接口说明
请求Url | https://api.mch.weixin.qq.com/secapi/pay/profitsharing |
---|---|
是否需要证书 | 请求需要双向证书。 详见证书使用 |
请求方式 | post |
签名方式 | HMAC-SHA256 |
接口频率 | 30QPS |
请求参数
名称 |
变量名 |
必填 |
类型 |
示例值 |
描述 |
---|---|---|---|---|---|
商户号 |
mch_id |
是 |
string(32) |
1900000100 |
微信支付分配的服务商商户号 |
子商户号 |
sub_mch_id |
是 |
string(32) |
1900000109 |
微信支付分配的子商户号,即分账的出资商户号。 |
品牌主商户号 |
brand_mch_id |
否 |
string(32) |
1900000108 |
当服务商开通了“连锁品牌工具”后,使用品牌供应链分账时,此参数传入品牌主商户号。传入后,分账方的分账比例,校验品牌主配置的全局分账。 |
公众账号ID |
appid |
是 |
string(32) |
wx8888888888888888 |
微信分配的服务商appid |
子商户公众账号ID |
sub_appid |
否 |
string(32) |
wx8888888888888888 |
微信分配的子商户公众账号ID |
随机字符串 |
nonce_str |
是 |
string(32) |
5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
随机字符串,不长于32位。推荐随机数生成算法 |
签名 |
sign |
是 |
string(64) |
C380BEC2BFD727A4B6845133519F3AD6C380BEC2BFD727A4B6845133519F3AD6 |
签名,详见签名生成算法 |
签名类型 |
sign_type |
否 |
string(32) |
HMAC-SHA256 |
签名类型,目前只支持HMAC-SHA256 |
微信订单号 |
transaction_id |
是 |
string(32) |
4208450740201411110007820472 |
微信支付订单号 |
商户分账单号 |
out_order_no |
是 |
string(64) |
P20150806125346 |
服务商系统内部的分账单号,在服务商系统内部唯一(单次分账、多次分账、完结分账应使用不同的商户分账单号),同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ |
+分账接收方列表 | receivers |
是 |
string(10240) |
[ |
分账接收方列表,不超过50个json对象,不能设置出资子商户作为分账接受方 点击行前的+展开字段详情 |
举例如下:
<xml>
<appid>wx2421b1c4370ec43b</appid>
<mch_id>10000100</mch_id>
<sub_appid>wx2203b1494370e08cm</sub_appid>
<sub_mch_id>1415701182</sub_mch_id>
<nonce_str>6cefdb308e1e2e8aabd48cf79e546a02</nonce_str>
<out_order_no>P20150806125346</out_order_no>
<transaction_id>4006252001201705123297353072</transaction_id>
<sign>FE56DD4AA85C0EECA82C35595A69E153</sign>
<sign_type>HMAC-SHA256</sign_type>
<receivers>
[
{
"type": "MERCHANT_ID",
"account":"190001001",
"amount":100,
"description": "分到商户"
},
{
"type": "PERSONAL_OPENID",
"account":"86693952",
"amount":888,
"description": "分到个人"
}
]
</receivers>
</xml>
返回结果
名称 |
变量名 |
必填 |
类型 |
示例值 |
描述 |
---|---|---|---|---|---|
返回状态码 |
return_code |
是 |
string(32) |
SUCCESS |
SUCCESS/FAIL 此字段是通信标识,非交易标识 |
返回信息 |
return_msg |
否 |
string(256) |
参数格式校验错误 |
返回信息,如非空,为错误原因 |
以下字段在return_code为SUCCESS的时候有返回
名称 |
变量名 |
必填 |
类型 |
示例值 |
描述 |
---|---|---|---|---|---|
业务结果 |
result_code |
是 |
string(32) |
SUCCESS |
SUCCESS:分账申请接收成功,结果通过分账查询接口查询 |
错误代码 |
err_code |
否 |
string(32) |
SYSTEMERROR |
列表详见错误码列表 |
错误代码描述 |
err_code_des |
否 |
string(128) |
系统超时 |
结果信息描述 |
商户号 |
mch_id |
是 |
string(32) |
1900000100 |
调用接口时提供的商户号 |
子商户号 |
sub_mch_id |
是 |
string(32) |
1900000109 |
微信支付分配的子商户号,即分账的出资商户号。 |
品牌主商户号 |
brand_mch_id |
否 |
string(32) |
1900000108 |
调用接口时提供的品牌主商户号。 |
公众账号ID |
appid |
是 |
string(32) |
wx8888888888888888 |
调用接口提供的公众账号ID |
子商户公众账号ID |
sub_appid |
否 |
string(32) |
wx8888888888888888 |
微信分配的子商户公众账号ID |
随机字符串 |
nonce_str |
是 |
string(32) |
5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
微信返回的随机字符串 |
签名 |
sign |
是 |
string(64) |
C380BEC2BFD727A4B6845133519F3AD6 |
微信返回的签名,详见签名算法 |
以下字段在return_code和result_code都为SUCCESS的时候返回
名称 |
变量名 |
必填 |
类型 |
示例值 |
描述 |
---|---|---|---|---|---|
微信订单号 |
transaction_id |
是 |
string(32) |
4208450740201411110007820472 |
微信支付订单号 |
商户分账单号 |
out_order_no |
是 |
string(64) |
P20150806125346 |
调用接口提供的商户系统内部的分账单号 |
微信分账单号 |
order_id |
是 |
string(64) |
3008450740201411110007820472 |
微信分账单号,微信支付系统返回的唯一标识 |
分账单状态 |
status |
是 |
string(16) |
FINISHED |
分账单状态,枚举值: PROCESSING:处理中 FINISHED:处理完成 |
+分账接收方列表 | receivers |
是 |
string(10240) |
内容见下方示例 | 分账接收方列表,json对象详细说明见下文,仅当查询分账请求结果时,存在本字段 点击行前的+展开字段详情 |
举例:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<result_code><![CDATA[SUCCESS]]></result_code>
<mch_id>10000100</mch_id>
<appid>wx2421b1c4370ec43b</appid>
<sub_mch_id>1415701182</sub_mch_id>
<sub_appid>wx2203b1494370e08cm</sub_appid>
<nonce_str>6cefdb308e1e2e8aabd48cf79e546a02</nonce_str>
<out_order_no>P20150806125346</out_order_no>
<transaction_id>4006252001201705123297353072</transaction_id>
<order_id>3008450740201411110007820472</order_id>
<status>FINISHED</status>
<receivers>
[
{
"type": "MERCHANT_ID",
"account":"190001001",
"amount":100,
"description": "分到商户"
"detail_id": "36011111111111111111111"
"finish_time": "20180608170132"
"receiver_mchid": "1900000110"
"result": "SUCCESS"
},
{
"type": "PERSONAL_OPENID",
"account":"86693952",
"amount":888,
"description": "分到个人"
"detail_id": "36011111111111111111111"
"finish_time": "20180608170132"
"receiver_mchid": "1900000110"
"result": "SUCCESS"
}
]
</receivers>
<sign>FE56DD4AA85C0EECA82C35595A69E153</sign>
</xml>
错误码列表
名称 |
描述 |
原因 |
解决方案 |
---|---|---|---|
SYSTEMERROR |
接口返回错误 |
系统超时 |
请不要更换商户分账单号,请使用相同参数再次调用API。否则可能造成资金损失 |
AMOUNT_OVERDUE |
分账金额超限 |
分账金额大于可分金额或大于分账最大比例 |
分账金额不能大于可分金额或大于最大分账比例金额,请调整分账金额 |
RECEIVER_INVALID |
分账接收方非法 |
未配置分账接收方 |
分账接收方在分账之前需要进行添加 |
INVALID_TRANSACTIONID |
无效的微信支付订单号 |
请求参数未按指引进行填写 |
请求参数错误,检查原交易号是否存在或发起支付交易接口返回失败 |
PARAM_ERROR |
参数错误 |
请求参数未按指引进行填写 |
请求参数错误,请重新检查再调用分账接口 |
INVALID_REQUEST |
请求不合法 |
参数中APPID或 MCHID不存在等 |
请检查请求参数 |
OPENID_MISMATCH |
Openid错误 |
Openid 与Appid不匹配 |
请检查Openid 是否正确 |
FREQUENCY_LIMITED |
频率限制 |
请求过多被频率限制 |
该笔请求未受理,请降低频率后原单重试,请勿更换商户分账单号 |
ORDER_NOT_READY |
订单处理中 |
订单处理中,暂时无法分账 |
订单处理中,暂时无法分账,请稍后再试 |
NOAUTH |
无分账权限 |
未开通分账权限 |
请先开通分账 |
NOT_SHARE_ORDER |
非分账订单 |
不是分账订单 无法分账 |
下单时请用分账的合适参数 |
RECEIVER_HIGH_RISK |
高风险接收方 |
分账接收方账户处于高风险状态 |
请联系分账接收方确认账 |