分账回退
应用场景
● 此功能需要接收方在商户平台-交易中心-分账-分账接收设置下,开启同意分账回退后,才能使用。
● 仅对订单进行退款时,如果订单已经分账,可以先调用此接口将指定的金额从分账接收方(仅限商户类型的分账接收方)回退给特约商户,然后再退款。
● 回退以原分账请求为依据,可以对分给分账接收方的金额进行多次回退,只要满足累计回退不超过该请求中分给接收方的金额。
● 此接口采用同步处理模式,即在接收到商户请求后,会实时返回处理结果。
● 分账回退的时限是180天
接口说明
请求Url | https://api.mch.weixin.qq.com/secapi/pay/profitsharingreturn |
---|---|
是否需要证书 | 请求需要双向证书。 详见证书使用 |
请求方式 | post |
签名方式 | HMAC-SHA256 |
请求参数
名称 |
变量名 |
必填 |
类型 |
示例值 |
描述 |
---|---|---|---|---|---|
商户号 |
mch_id |
是 |
string(32) |
1900000100 |
微信支付分配的服务商商户号 |
子商户号 |
sub_mch_id |
是 |
string(32) |
1900000109 |
微信支付分配的子商户号,即分账的出资商户号。 |
公众账号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 |
微信分账单号 |
order_id |
二选一 | string(64) |
3008450740201411110007820472 |
原发起分账请求时,微信返回的微信分账单号,与商户分账单号一一对应。 微信分账单号与商户分账单号二选一填写 |
商户分账单号 |
out_order_no |
string(64) |
P20180806125346 |
原发起分账请求时使用的商户后台系统的分账单号。 微信分账单号与商户分账单号二选一填写 |
|
商户回退单号 |
out_return_no |
是 |
string(64) |
R20190516001 |
此回退单号是商户在自己后台生成的一个新的回退单号,在商户后台唯一 只能是数字、大小写字母_-|*@ ,同一回退单号多次请求等同一次。 |
回退方类型 |
return_account_type |
是 |
string(32) |
MERCHANT_ID |
枚举值: MERCHANT_ID:商户号(mch_id或者sub_mch_id) 暂时只支持从商户接收方回退分账金额 |
回退方账号 |
return_account |
是 |
string(64) |
86693852 |
回退方类型是MERCHANT_ID时,填写商户号(mch_id或者sub_mch_id) 只能对原分账请求中成功分给商户接收方进行回退 |
回退金额 |
return_amount |
是 |
int |
888 |
需要从分账接收方回退的金额,单位为分,只能为整数,不能超过原始分账单分出给该接收方的金额 |
回退描述 |
description |
是 |
string(80) |
用户退款 |
分账回退的原因描述 |
举例如下:
<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>
<sign_type>HMAC-SHA256</sign_type>
<sign>FE56DD4AA85C0EECA82C35595A69E153</sign>
<out_order_no>P20150806125346</out_order_no>
<out_return_no>R20190516001</out_return_no>
<return_account_type>MERCHANT_ID </return_account_type>
<return_account>86693852</return_account>
<return_amount>800</return_amount>
<description>用户退款</description>
</xml>
返回结果
名称 |
变量名 |
必填 |
类型 |
示例值 |
描述 |
---|---|---|---|---|---|
返回状态码 |
return_code |
是 |
string(32) |
SUCCESS |
枚举值: SUCCESS:分账回退处理成功 FAIL:分账回退处理失败 |
错误代码 |
err_code |
否 |
string(32) |
SYSTEMERROR |
如果返回状态码为FAIL,则本字段存在,且为失败的错误码 详见错误码列表 |
返回信息 |
err_msg |
否 |
string(256) |
参数格式校验错误 |
如果返回状态码为FAIL,则本字段存在,且为失败的错误信息 |
以下字段在return_code为SUCCESS的时候有返回
名称 |
变量名 |
必填 |
类型 |
示例值 |
描述 |
---|---|---|---|---|---|
商户号 |
mch_id |
是 |
string(32) |
1900000100 |
调用接口时提供的商户号 |
子商户号 |
sub_mch_id |
是 |
string(32) |
1900000109 |
微信支付分配的子商户号,即分账的出资商户号。 |
公众账号ID |
appid |
是 |
string(32) |
wx8888888888888888 |
调用接口提供的公众账号ID |
随机字符串 |
nonce_str |
是 |
string(32) |
5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
微信返回的随机字符串 |
签名 |
sign |
是 |
string(64) |
C380BEC2BFD727A4B6845133519F3AD6 |
微信返回的签名,详见签名算法 |
微信分账单号 |
order_id |
是 |
string(64) |
3008450740201411110007820472 |
原发起分账请求时,微信返回的微信分账单号 |
商户分账单号 |
out_order_no |
是 |
string(64) |
P20150806125346 |
原发起分账请求时使用的商户系统内部的分账单号。 |
商户回退单号 |
out_return_no |
是 |
string(64) |
R20150806125346 |
调用接口提供的商户系统内部的回退单号 |
微信回退单号 |
return_no |
是 |
string(64) |
3008450740201411110007820472 |
微信分账回退单号,微信支付系统返回的唯一标识 |
回退方类型 |
return_account_type |
是 |
string(32) |
MERCHANT_ID |
枚举值: MERCHANT_ID:商户号(mch_id或者sub_mch_id) |
回退方账号 |
return_account |
是 |
string(64) |
86693852 |
回退方类型是MERCHANT_ID时,商户号(mch_id或者sub_mch_id) |
回退金额 |
return_amount |
是 |
int |
888 |
回退金额,整数,单位为分 |
回退描述 |
description |
是 |
string(80) |
用户退款 |
分账回退的原因描述 |
回退结果 |
result |
是 |
string(32) |
SUCCESS |
枚举值: PROCESSING:处理中 SUCCESS:已成功 FAILED: 已失败 如果返回为处理中,请勿变更商户回退单号,使用相同的参数再次发起分账回退,否则会出现资金风险 在处理中状态的回退单如果5天没有成功,会因为超时被设置为已失败。 |
失败原因 |
fail_reason |
否 |
string(32) |
ACCOUNT_ABNORMAL |
枚举值: ACCOUNT_ABNORMAL:原分账接收方账户异常 TIME_OUT_CLOSED: 超时关单 此字段仅回退结果为FAILED时存在 PAYER_ACCOUNT_ABNORMAL:原分账分出方账户异常 |
完成时间 |
finish_time |
是 |
string(16) |
20180608170132 |
分账回退完成时间 |
举例:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<mch_id>10000100</mch_id>
<sub_mch_id>1415701182</sub_mch_id>
<appid>wx2421b1c4370ec43b</appid>
<nonce_str>6cefdb308e1e2e8aabd48cf79e546a02</nonce_str>
<sign>FE56DD4AA85C0EECA82C35595A69E153</sign>
<order_id>3008450740201411110007820472</order_id>
<out_order_no>P20150806125346</out_order_no>
<out_return_no>R20190516001</out_return_no>
<return_no>3008450740201411110007820472</return_no>
<return_account_type>MERCHANT_ID </return_account_type>
<return_account>86693852</return_account>
<return_amount>800</return_amount>
<description>用户退款</description>
<result>SUCCESS</result>
<finish_time>20180608170132</finish_time>
</xml>
错误码列表
名称 |
描述 |
原因 |
解决方案 |
---|---|---|---|
SYSTEMERROR |
接口返回错误 |
系统超时 |
请不要更换商户分账单号,请使用相同参数再次调用API。否则可能造成资金损失 |
NOTENOUGH |
回退方账户余额不足 |
回退方账户余额不足,请先充值再回退 |
请不要更换商户分账单号,等待充值完毕后,请使用相同参数再次调用API。否则可能造成资金损失 |
NOAUTH |
回退方不允许回退 |
回退方不允许分账回退 |
请先让回退方打开分账允许设置 |
ORDERNOTEXIST |
分账指令不存在 |
分账指令不存在 |
分账指令不存在,请检查是否有相应的分账单 |
PARAM_ERROR |
参数不正确,请检查参数 |
请求参数未按指引进行填写 |
return_account与mch_id不能填写为相同的商户号,不能自己给自己回退 |
INVALID_REQUEST |
请求不合法 |
参数中APPID或 MCHID不存在等 |
请检查请求参数 |
FREQUENCY_LIMITED |
频率限制 |
请求过多被频率限制 |
该笔请求未处理,请降低频率后原单重试,请勿更换商户回退单号 |
AMOUNT_OVERDUE |
可退余额不足 |
回退金额大于剩余可从接收方回退的金额 |
请检查请求参数 |