# CloudPay.profitSharingAddReceiver()

> 支持端：[云函数 2.0.2](/miniprogram/dev/wxcloudservice/wxcloud/reference/changelog-server-sdk)

添加分账接收方

## 说明

服务商代子商户发起添加分账接收方请求，后续可通过发起分账请求将结算后的钱分到该分账接收方。
**接口说明**

此接口与微信支付原分账接口（[文档](https://pay.weixin.qq.com/doc/v2/partner/4011984782)）的不同点在于：
- 私有安全链路，免证书管理，免签名计算
- 商户号填入 sub_mch_id 字段，小程序/公众号 appid 填入 sub_appid 字段
- 免填写以下字段：mch_id、appid、sign、sign_type
- 接口入参和返回值都为 JSON 而不是 XML

### 参数说明

| 名称             | 变量名     | 必填 | 类型         | 示例值                           | 描述                                                |
|------------------|------------|------|--------------|----------------------------------|-----------------------------------------------------|
| 子商户号         | sub_mch_id | 是   | string(32)   | 1900000109                       | 微信支付分配的子商户号                              |
| 子商户公众账号ID | sub_appid  | 否   | string(32)   | wx8888888888888888               | 微信分配的子商户公众账号ID                          |
| 随机字符串       | nonce_str  | 是   | string(32)   | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串，不长于32位。推荐随机数生成算法          |
| 分账接收方   | receiver   | 是   | String(2048) |                                  | 分账接收方对象，json格式
点击行前的+展开字段详情 |

receiver 定义：

| 名称               | 变量名          | 必填 | 类型         | 示例值                           | 描述                                                                                                                                                                                                                                                             |
|--------------------|-----------------|------|--------------|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 分账接收方类型     | type            | 是   | string(32)   | MERCHANT_ID                      | MERCHANT_ID：商户ID
PERSONAL_OPENID：个人openid（由父商户APPID转换得到）PERSONAL_SUB_OPENID: 个人sub_openid（由子商户APPID转换得到）                                                                                                                          |
| 分账接收方账号     | account         | 是   | string(64)   | 86693852                         | 类型是MERCHANT_ID时，是商户ID
类型是PERSONAL_OPENID时，是个人openid
类型是PERSONAL_SUB_OPENID时，是个人sub_openid                                                                                                                                          |
| 分账接收方全称     | name            | 否   | string(1024) | 示例商户全称                     | 分账接收方类型是MERCHANT_ID时，是商户全称（必传）
分账接收方类型是PERSONAL_OPENID时，是个人姓名（选传，传则校验）
分账接收方类型是PERSONAL_SUB_OPENID时，是个人姓名（选传，传则校验）                                                                      |
| 与分账方的关系类型 | relation_type   | 是   | string(32)   | SERVICE_PROVIDER                 | 子商户与接收方的关系。
本字段值为枚举：
SERVICE_PROVIDER：服务商
STORE：门店 
STAFF：员工
STORE_OWNER：店主
PARTNER：合作伙伴
HEADQUARTER：总部
BRAND：品牌方
DISTRIBUTOR：分销商
USER：用户
SUPPLIER：供应商
CUSTOM：自定义 |
| 自定义的分账关系   | custom_relation | 否   | string(10)   | 代理商                           | 子商户与接收方具体的关系，本字段最多10个字。
当字段relation_type的值为CUSTOM时，本字段必填
当字段relation_type的值不为CUSTOM时，本字段无需填写                                                                                                             |

### 返回值说明

| 字段名     | 变量名      | 必填 | 类型        | 示例值   | 描述                                                                             |
|------------|-------------|------|-------------|----------|----------------------------------------------------------------------------------|
| 返回状态码 | 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                         |
| 分账接收方       | receiver     | 是   | String(128) | {"type":"MERCHANT_ID","account":"190001001"} | 分账接收方对象（不包含分账接收方全称），json格式   |
| 随机字符串       | nonce_str    | 是   | string(32)  | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS             | 微信返回的随机字符串                               |
| 签名             | sign         | 是   | string(64)  | ABC6DD4AA85C0EECA82C35595A69EFGH             | 微信返回的签名，详见签名算法                       |

### 错误码

| 名称              | 描述                 | 原因                        | 解决方案                                             |
|-------------------|----------------------|-----------------------------|------------------------------------------------------|
| SYSTEMERROR       | 接口返回错误         | 系统超时                    | 请使用相同参数再次调用API                            |
| PARAM_ERROR       | 参数错误             | 请求参数未按指引进行填写    | 请求参数错误，请重新检查再调用API                    |
| INVALID_REQUEST   | 请求不合法           | 参数中APPID或 MCHID不存在等 | 请检查请求参数                                       |
| OPENID_MISMATCH   | Openid错误           | Openid 与Appid不匹配        | 请检查Openid 是否正确                                |
| FREQUENCY_LIMITED | 频率限制             | 请求过多被频率限制          | 该笔请求未受理，请降低频率后原单重试                 |
| NOAUTH            | 无分账权限           | 未开通分账权限              | 请先开通分账                                         |
| USER_NOT_EXIST    | 分账接收方不存在     | 分账接收方不存在            | 请确认分账接收方类型或者账号无误后重试               |
| ACCOUNTERROR      | 分账接收方账户不存在 | 账户未开通                  | 账户未开通，请接收方商户在商户平台点击“充值”创建账户 |

## 代码示例

```js
// 云函数代码
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })

exports.main = async (event, context) => {
  const res = await cloud.cloudPay.profitSharingAddReceiver({
    subMchId: '1900000109',
    receiver: JSON.stringify({
      type: 'MERCHANT_ID',
      account: '86693852',
      name: '示例商户全称',
      relation_type: 'SERVICE_PROVIDER'
    }),
    nonceStr: '5K8264ILTKCH16CQ2502SI8ZNMTM67VS'
  })
  return res
}
```

如果是共享小程序调用，appid需要按如下方式传入`cloud.cloudPay({ appid: 'xxxxx' }).profitSharingAddReceiver({其他参数...})`，详情参考[环境共享指引文档](/miniprogram/dev/wxcloudservice/wxcloud/guide/resource-sharing/index)
