# CloudPay.profitSharingReturnQuery()

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

回退结果查询

## 说明

应用场景
- 商户需要核实回退结果，可调用此接口查询回退结果。
- 如果分账回退接口返回状态为处理中，可调用此接口查询回退结果。

接口频率：30QPS
**接口说明**

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

### 参数说明

| 名称           | 变量名        | 必填   | 类型       | 示例值                                                           | 描述                                                                                                       |
|----------------|---------------|--------|------------|------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
| 子商户号       | sub_mch_id    | 是     | string(32) | 1900000109                                                       | 微信支付分配的子商户号                                                                                     |
| 随机字符串     | nonce_str     | 是     | string(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS                                 | 随机字符串，不长于32位。推荐随机数生成算法                                                                 |
| 微信分账订单号 | order_id      | 与out_order_no二选一 | string(64) | 4208450740201411110007820472                                     | 原发起分账请求时，微信返回的微信分账单号，与商户分账单号一一对应。
微信分账单号与商户分账单号二选一填写 |
| 商户分账单号   | out_order_no  | 与order_id二选一       | string(64) | P20190806125346                                                  | 原发起分账请求时使用的商户系统内部的分账单号。
微信分账单号与商户分账单号二选一填写                     |
| 商户回退单号   | out_return_no | 是     | string(64) | R20190806125346                                                  | 调用回退接口提供的商户系统内部的回退单号                                                                   |

### 返回值说明

| 名称       | 变量名      | 必填 | 类型        | 示例值           | 描述                                                                   |
|------------|-------------|------|-------------|------------------|------------------------------------------------------------------------|
| 返回状态码 | return_code | 是   | string(32)  | SUCCESS          | 枚举值：
SUCCESS：分账回退处理成功
FAIL：分账回退处理失败        |
| 错误代码   | error_code  | 否   | string(32)  | SYSTEMERROR      | 如果返回状态码为FAIL，则本字段存在，且为失败的错误码
详见错误码列表 |
| 返回信息   | error_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) | 4208450740201411110007820472     | 原发起分账请求时，微信返回的微信分账单号，与商户分账单号一一对应。                                                                                                                                                                         |
| 商户分账单号   | 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：商户ID                                                                                                                                                                                                            |
| 回退方账号     | return_account      | 是   | string(64) | 86693852                         | 回退方类型是MERCHANT_ID时，商户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时存在                                                                                                                             |
| 完成时间       | finish_time         | 是   | string(16) | 20180608170132                   | 分账回退完成时间                                                                                                                                                                                                                           |

### 错误码

| 名称              | 描述         | 原因                        | 解决方案                                                   |
|-------------------|--------------|-----------------------------|------------------------------------------------------------|
| SYSTEMERROR       | 接口返回错误 | 系统超时                    | 请尝试再次调用API                                          |
| PARAM_ERROR       | 参数错误     | 请求参数未按指引进行填写    | 请求参数错误，请重新检查再调用回退结果查询接口             |
| INVALID_REQUEST   | 请求不合法   | 参数中APPID或 MCHID不存在等 | 请检查请求参数                                             |
| FREQUENCY_LIMITED | 频率限制     | 请求过多被频率限制          | 该笔请求未受理，请降低频率后原单重试，请勿更换商户分账单号 |
| ORDERNOTEXIST     | 回退单不存在 | 分账单号或者回退单号错误    | 请检查分账单号，回退单号是否有误                           |

## 代码示例

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

exports.main = async (event, context) => {
  const res = await cloud.cloudPay.profitSharingReturnQuery({
    subMchId: '1900000109',
    outOrderNo: 'P20190806125346',
    outReturnNo: 'R20190806125346',
    nonceStr: '5K8264ILTKCH16CQ2502SI8ZNMTM67VS'
  })
  return res
}
```

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