用户信息 /用户信息 /支付后获取 Unionid

# 支付后获取 Unionid

> 接口应在服务器端调用,详细说明参见[服务端API](https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/backend-api.html)。

> 本接口支持[云调用](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)。需开发者工具版本 >= `1.02.1904090`(最新[稳定版下载](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)),`wx-server-sdk` >= `0.4.0`

## 接口说明

### 接口英文名

getPaidUnionid

### 功能描述

该接口用于在用户支付完成后,获调用本接口前需要用户完成支付,用户支付完成后,取该用户的 UnionId,无需用户授权。本接口支付后的五分钟内有效。

### 注意事项

- 调用前需要用户完成支付,且在支付后的五分钟内有效。
- 使用微信支付订单号(transaction_id)和微信支付商户订单号和微信支付商户号(out_trade_no 及 mch_id),二选一

## 调用方式

### HTTPS 调用

```text
GET https://api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN 
```

### 云调用

- 出入参和 HTTPS 调用相同,调用方式可查看[云调用说明文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)
- 接口方法为: openapi.auth.getPaidUnionId

### 第三方调用

- 调用方式以及出入参和 HTTPS 相同,仅是调用的 token 不同

### 请求参数

| 属性                                  | 类型   | 必填 | 说明                                                         |
| :------------------------------------ | :----- | :--- | :----------------------------------------------------------- |
| access_token / cloudbase_access_token | string | 是   | 接口调用凭证,该参数为 URL 参数,非 Body 参数。access_token和cloudbase_access_token二选一 其中access_token可通过[getAccessToken](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html)接口获得; 如果是第三方代调用请传入[authorizer_access_token](https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/api_authorizer_token.html); cloudbase_access_token可通过[getOpenData](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/token.html)接口获得 |
| openid                                | string | 是   | 支付用户唯一标识                                             |
| transaction_id                        | string | 否   | [微信支付订单号](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7) |
| mch_id                                | string | 否   | 微信支付分配的[商户号](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7),和商户订单号配合使用 |
| out_trade_no                          | string | 否   | [微信支付商户订单号](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7),和商户号配合使用 |

### 返回参数

| 属性    | 类型   | 说明                         |
| :------ | :----- | :--------------------------- |
| unionid | string | 用户唯一标识,调用成功后返回 |
| errcode | number | 错误码                       |
| errmsg  | string | 错误信息                     |

## 调用示例

> 示例说明: 使用微信支付订单号

### 请求数据示例

```text
GET https://api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&transaction_id=TRANSACTION_ID 
```

### 返回数据示例

```json
{
  "unionid": "oTmHYjg-tElZ68xxxxxxxxhy1Rgk",
  "errcode": 0,
  "errmsg": "ok"
} 
```

> 示例说明: 使用微信支付商户订单号和微信支付商户号(out_trade_no 及 mch_id)

### 请求数据示例

```text
 GET https://api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&mch_id=MCH_ID&out_trade_no=OUT_TRADE_NO 
```

### 返回数据示例

```json
{
  "unionid": "oTmHYjg-tElZ68xxxxxxxxhy1Rgk",
  "errcode": 0,
  "errmsg": "ok"
} 
```

> 示例说明: 云函数示例

### 请求数据示例

```text
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.auth.getPaidUnionId({
        "openid": '',
        "transactionId": '',
        "mchId": '',
        "outTradeNo": ''
      })
    return result
  } catch (err) {
    return err
  }
} 
```

### 返回数据示例

```json
{
  "unionid": "oTmHYjg-tElZ68xxxxxxxxhy1Rgk",
  "errCode": 0,
  "errMsg": "openapi.auth.getPaidUnionId:ok"
} 
```

### 错误码

| 错误码 | 错误码取值                                              | 解决方案                                                     |
| :----- | :------------------------------------------------------ | :----------------------------------------------------------- |
| 40001  | invalid credential access_token isinvalid or not latest | 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口 |
| 0      | ok                                                      | ok                                                           |
| -1     | system error                                            | 系统繁忙,此时请开发者稍候再试                               |
| 40003  | invalid openid                                          | 不合法的 OpenID ,请开发者确认 OpenID (该用户)是否已关注公众号,或是否是其他公众号的 OpenID |
| 89002  | open not exists                                         | open not exists,该公众号/小程序未绑定微信开放平台帐号。     |
| 89300  | invalid trade                                           | 订单无效                                                     |

|      |      |      |
| :--- | :--- | :--- |
|      |      |      |
|      |      |      |
|      |      |      |