应用场景
微信订单支付成功后,服务商代子商户发起分账请求,将结算后的钱分到分账接收方。多次分账请求仅会按照传入的分账接收方进行分账,不会对剩余的金额进行任何操作。故操作成功后,在待分账金额不等于零时,订单依旧能够再次进行分账。
● 多次分账,可以将本商户作为分账接收方直接传入,实现释放资金给本商户的功能
| 1、单个服务商(请求分账) 300QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。 2、单个交易收款商户(请求分账) 30QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。同时,建议对同一主体的商户拆分多个商户号进行交易,避免交易集中到单个商户。 1、对同一笔订单最多能发起50次分账请求,每次请求最多分给50个接收方。 2、服务商需确保向微信支付传输用户身份信息和账号标识信息做一致性校验已合法征得用户授权 |
|
接口说明
|
是否需要证书 | 请求需要双向证书。 详见证书使用 |
请求方式 | post |
签名方式 | HMAC-SHA256 |
请求参数
|
商户号 | 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) | [ { "type": "MERCHANT_ID", "account":"190001001", "amount":100, "description": "分到商户" }, { "type": "PERSONAL_OPENID", "account":"86693952", "amount":888, "description": "分到个人" } ] | 分账接收方列表,不超过50个json对象,可以设置出资子商户作为分账接受方 点击下行的>展开字段详情 |
| 分账接收方列表 | | |
分账接收方类型 | type | 是 | string(32) | MERCHANT_ID | MERCHANT_ID:商户号(mch_id或者sub_mch_id) PERSONAL_OPENID:个人openid(由父商户APPID转换得到)PERSONAL_SUB_OPENID: 个人sub_openid(由子商户APPID转换得到) | 分账接收方账号 | account | 是 | string(64) | 86693852 | 类型是MERCHANT_ID时,是商户号(mch_id或者sub_mch_id) 类型是PERSONAL_OPENID时,是个人openid 类型是PERSONAL_SUB_OPENID时,是个人sub_openid | 分账金额 | amount | 是 | int | 888 | 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额 | 分账描述 | description | 是 | string(80) | 分给商户A | 分账的原因描述,分账账单中需要体现 | 分账个人接收方姓名 | name | 否 | string(64) | 张三 | 可选项,在接收方类型为个人的时可选填,若有值,会检查与 name 是否实名匹配,不匹配会拒绝分账请求 1、分账接收方类型是PERSONAL_OPENID时,是个人姓名(选传,传则校验) |
|
|
1<xml>
2 <appid>wx2421b1c4370ec43b</appid>
3 <mch_id>10000100</mch_id>
4 <sub_appid>wx2203b1494370e08cm</sub_appid>
5 <sub_mch_id>1415701182</sub_mch_id>
6 <nonce_str>6cefdb308e1e2e8aabd48cf79e546a02</nonce_str>
7 <out_order_no>P20150806125346</out_order_no>
8 <transaction_id>4006252001201705123297353072</transaction_id>
9 <sign>FE56DD4AA85C0EECA82C35595A69E153</sign>
10 <sign_type>HMAC-SHA256</sign_type>
11 <receivers>
12 [
13 {
14 "type": "MERCHANT_ID",
15 "account":"190001001",
16 "amount":100,
17 "description": "分到商户"
18 },
19 {
20 "type": "PERSONAL_OPENID",
21 "account":"86693952",
22 "amount":888,
23 "description": "分到个人"
24 }
25 ]
26</receivers>
27</xml>
返回结果
|
返回状态码 | return_code | 是 | string(32) | SUCCESS | SUCCESS/FAIL 此字段是通信标识,非交易标识 |
返回信息 | return_msg | 否 | string(256) | 参数格式校验错误 | 返回信息,如非空,为错误原因 |
以下字段在return_code为SUCCESS的时候有返回
|
业务结果 | result_code | 是 | string(32) | SUCCESS | SUCCESS:分账申请接收成功,结果通过分账查询接口查询 FAIL :提交业务失败 |
错误代码 | 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对象详细说明见下文,仅当查询分账请求结果时,存在本字段 点击下行的>展开字段详情 |
| 分账接收方列表 | | |
分账金额 | amount | 是 | int | 888 | 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额。 | 分账描述 | description | 是 | string(80) | 分帐1900000110 | 分账完结的原因描述,仅当查询分账完结的执行结果时,存在本字段 | 分账失败原因 | fail_reason | 否 | string(32) | NO_RELATION | 分账失败原因,当分账结果result为CLOSED(已关闭)时,返回该字段 枚举值: 1、ACCOUNT_ABNORMAL : 分账接收账户异常 2、NO_RELATION : 分账关系已解除 3、RECEIVER_HIGH_RISK : 高风险接收方 4、RECEIVER_REAL_NAME_NOT_VERIFIED : 接收方未实名 5、NO_AUTH : 分账权限已解除 6、RECEIVER_RECEIPT_LIMIT : 接收方已达收款限额 7、PAYER_ACCOUNT_ABNORMAL : 分出方账户异常 | 分账明细单号 | detail_id | 是 | string(64) | 36011111111111111111111 | 微信分账明细单号,每笔分账业务执行的明细单号,可与资金账单对账使用 | 分账完成时间 | finish_time | 是 | string(16) | 20180608170132 | 分账完成时间 | 分账接收方账号 | account | 是 | string(64) | 1900000109 | 分账接收方账号: 类型是MERCHANT_ID时,是商户号(mch_id或者sub_mch_id) 类型是PERSONAL_OPENID时,是个人openid | 分账接收商户号 | receiver_mchid | 是 | string(32) | 1900000110 | 仅分账接收方类型为MERCHANT_ID时,填写微信支付分配的商户号 | 分账结果 | result | 是 | string(32) | SUCCESS | 分账结果,枚举值: PENDING:待分账 SUCCESS:分账成功 CLOSED: 分账失败已关闭 | 分账接收方类型 | type | 是 | string(32) | MERCHANT_ID | 枚举值: MERCHANT_ID:商户号(mch_id或者sub_mch_id) PERSONAL_OPENID:个人openid(由服务商的APPID转换得到) PERSONAL_SUB_OPENID:个人sub_openid(由品牌主的APPID转换得到) |
|
|
1<xml>
2 <return_code><![CDATA[SUCCESS]]></return_code>
3 <return_msg><![CDATA[OK]]></return_msg>
4 <result_code><![CDATA[SUCCESS]]></result_code>
5 <mch_id>10000100</mch_id>
6 <appid>wx2421b1c4370ec43b</appid>
7 <sub_mch_id>1415701182</sub_mch_id>
8 <sub_appid>wx2203b1494370e08cm</sub_appid>
9 <nonce_str>6cefdb308e1e2e8aabd48cf79e546a02</nonce_str>
10 <out_order_no>P20150806125346</out_order_no>
11 <transaction_id>4006252001201705123297353072</transaction_id>
12 <order_id>3008450740201411110007820472</order_id>
13 <status>FINISHED</status>
14 <receivers>
15 [
16 {
17 "type": "MERCHANT_ID",
18 "account":"190001001",
19 "amount":100,
20 "description": "分到商户"
21 "detail_id": "36011111111111111111111"
22 "finish_time": "20180608170132"
23 "receiver_mchid": "1900000110"
24 "result": "SUCCESS"
25 },
26 {
27 "type": "PERSONAL_OPENID",
28 "account":"86693952",
29 "amount":888,
30 "description": "分到个人"
31 "detail_id": "36011111111111111111111"
32 "finish_time": "20180608170132"
33 "receiver_mchid": "1900000110"
34 "result": "SUCCESS"
35 }
36 ]
37 </receivers>
38 <sign>FE56DD4AA85C0EECA82C35595A69E153</sign>
39 </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 | 非分账订单 | 不是分账订单 无法分账 | 下单时请用分账的合适参数 |
INVALID_REQUEST | 分账次数过多 | 分账次数超过上限(最多50次) | 执行分账完结,或者等待超时自动分账 |
RECEIVER_HIGH_RISK | 高风险接收方 | 分账接收方账户处于高风险状态 | 请联系分账接收方确认账 |