# CloudPay.profitSharing()
支持端:云函数 2.0.2
请求单次分账
# 说明
单次分账请求按照传入的分账接收方账号和资金进行分账,同时会将订单剩余的待分账金额解冻给特约商户。故操作成功后,订单不能再进行分账,也不能进行分账完结。 接口说明*
此接口与微信支付原分账接口(文档)的不同点在于:
- 私有安全链路,免证书管理,免签名计算
 - 商户号填入 sub_mch_id 字段,小程序/公众号 appid 填入 sub_appid 字段
 - 免填写以下字段:mch_id、appid、sign、sign_type
 - 接口入参和返回值都为 JSON 而不是 XML 接口限频*
 
接口限频: 1、单个服务商(请求分账) 300QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。
2、单个交易收款商户(请求分账) 30QPS,如果超过频率限制,会报错FREQUENCY_LIMITED,请降低频率请求。同时,建议对同一主体的商户拆分多个商户号进行交易,避免交易集中到单个商户。
# 参数说明
| 名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 | 
|---|---|---|---|---|---|
| 子商户号 | sub_mch_id | 是 | string(32) | 1900000109 | 微信支付分配的子商户号 | 
| 子商户公众账号ID | sub_appid | 否 | string(32) | wx8888888888888888 | 微信分配的子商户公众账号ID | 
| 随机字符串 | nonce_str | 是 | string(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 | 
| 微信订单号 | 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对象,不能设置出资子商户作为分账接受方 点击行前的+展开字段详情  | 
receivers 是个 JSON 序列化后的字符串,JSON 序列化前是个对象数组,其中的对象的定义如下:
| 名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 | 
|---|---|---|---|---|---|
| -分账接收方类型 | type | 是 | string(32) | MERCHANT_ID | MERCHANT_ID:商户ID PERSONAL_SUB_OPENID: 个人sub_openid(由子商户APPID转换得到)  | 
| -分账接收方账号 | account | 是 | string(64) | 86693852 | 类型是MERCHANT_ID时,是商户ID 类型是PERSONAL_OPENID时,是个人openid 类型是PERSONAL_SUB_OPENID时,是个人sub_openid  | 
| -分账金额 | amount | 是 | int | 888 | 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额 | 
| -分账描述 | description | 是 | string(80) | 分给商户A | 分账的原因描述,分账账单中需要体现 | 
| -分账个人接收方姓名 | name | 否 | string(64) | 张三 | 可选项,在接收方类型为个人的时可选填,若有值,会检查与 name 是否实名匹配,不匹配会拒绝分账请求 1、分账接收方类型是PERSONAL_OPENID时,是个人姓名(选传,传则校验)  | 
# 返回值说明
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 | 
|---|---|---|---|---|---|
| 返回状态码 | return_code | 是 | String(16) | SUCCESS | SUCCESS/FAIL | 
| 返回信息 | return_msg | 否 | String(128) | 签名失败 | 返回信息,如非空,为错误原因。如 签名失败、参数格式校验错误 | 
以下字段在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 | 微信支付分配特约商户的商户号 | 
| 公众账号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 | 微信分账单号,微信系统返回的唯一标识 | 
# 错误码
| 名称 | 描述 | 原因 | 解决方案 | 示例值 | 描述 | 
|---|---|---|---|---|---|
| SYSTEMERROR | 接口返回错误 | 系统超时 | 请不要更换商户分账单号,请使用相同参数再次调用API。否则可能造成资金损失 | 4208450740201411110007820472 | 微信支付订单号 | 
| AMOUNT_OVERDUE | 分账金额超限 | 分账金额大于可分金额或大于分账最大比例 | 分账金额不能大于可分金额或大于最大分账比例金额,请调整分账金额 | P20150806125346 | 调用接口提供的商户系统内部的分账单号 | 
| RECEIVER_INVALID | 分账接收方非法 | 未配置分账接收方 | 分账接收方在分账之前需要进行添加 | 3008450740201411110007820472 | 微信分账单号,微信系统返回的唯一标识 | 
| INVALID_TRANSACTIONID | 无效的微信支付订单号 | 请求参数未按指引进行填写 | 请求参数错误,检查原交易号是否存在或发起支付交易接口返回失败 | ||
| PARAM_ERROR | 参数错误 | 请求参数未按指引进行填写 | 请求参数错误,请重新检查再调用分账接口 | ||
| INVALID_REQUEST | 请求不合法 | 参数中APPID或 MCHID不存在等 | 请检查请求参数 | ||
| OPENID_MISMATCH | Openid错误 | Openid 与Appid不匹配 | 请检查Openid 是否正确 | ||
| FREQUENCY_LIMITED | 频率限制 | 请求过多被频率限制 | 该笔请求未受理,请降低频率后原单重试,请勿更换商户分账单号 | ||
| ORDER_NOT_READY | 订单处理中 | 订单处理中,暂时无法分账 | 订单处理中,暂时无法分账,请稍后再试 | ||
| NOAUTH | 无分账权限 | 未开通分账权限 | 请先开通分账 | ||
| NOT_SHARE_ORDER | 非分账订单 | 不是分账订单 无法分账 | 下单时请用分账的合适参数 | 
# 代码示例
参考支付下单
如果是共享小程序调用,appid需要按如下方式传入cloud.cloudPay({ appid: 'xxxxx' }).unifiedOrder({其他参数...}),详情参考环境共享指引文档