授权码认证
提供两个接口,均使用 AuthCodeParam:
| 接口 | 地址 | 返回 | 用途 |
|---|---|---|---|
| 获取认证结果 | POST /unipay/assist/channel/auth/auth | Result<AuthResult> | 通过授权码换取 openId/userId,返回给调用方 |
| 获取并设置 | POST /unipay/assist/channel/auth/auth-and-set | Result<Void> | 换取后直接写入会话(不返回 openId),供后续支付复用 |
注意响应类型
这两个接口返回的是平台级 Result(字段 message),不是 DaxResult(无 sign/resTime/reqId)。详见 错误码 - 响应结构。
AuthCodeParam 请求参数
基础参数同 统一支付 - 基础参数,业务参数:
| 参数 | 类型 | 必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| authCode | string | 是 | — | 三方通道 OAuth 授权码(换 openId/userId),亦可直接写入已拿到的 openId |
| authType | string | 否 | 32 | 认证类型(多类型通道必填:wechat/alipay/union_pay/douyin) |
| authToken | string | 否 | 64 | 认证会话码(H5 授权重定向场景下由 生成授权链接 下发,凭此恢复上下文) |
| product | string | 否 | 32 | 支付产品编码(小程序直连场景无会话码时必传) |
| capability | string | 否 | 32 | 支付能力编码(小程序场景需要) |
| channelAppId | string | 否 | 128 | 指定认证应用 AppId(会话码恢复时可空) |
| accessToken | string | 否 | — | AccessToken(通道直接返回时填入) |
| unionIdentifier | string | 否 | — | 云闪付 App 标识(从 UA 的 UnionPay/<版本> <标识> 截取) |
| queryCode | string | 否 | — | 查询 Code(用于关联生成授权链接时返回的标识) |
接口一:获取认证结果
请求地址
POST /unipay/assist/channel/auth/auth
- 认证:无
@PaymentVerify(注意:此接口不验签,依赖网关层防护) - 响应:
Result<AuthResult>
请求示例
json
{
"mchNo": "M200000001",
"appId": "APP001",
"authCode": "061XYYxxx0xxx",
"authType": "wechat",
"authToken": "AT20241201020"
}响应参数 AuthResult
| 参数 | 类型 | 描述 |
|---|---|---|
| openId | string | OpenId(微信场景) |
| userId | string | 用户 ID(支付宝存量商户部分返回) |
| accessToken | string | AccessToken(微信会返回,用于获取用户信息) |
| status | string | 状态(ChannelAuthStatusEnum:waiting/success/not_exist) |
| returnPath | string | 来源回跳路径(会话恢复时回填) |
响应示例
json
{
"code": 0,
"message": "success",
"data": {
"openId": "oXxX_xxxxxxxxxxxxx",
"status": "success",
"returnPath": "/pay/result"
}
}接口二:获取并设置
请求地址
POST /unipay/assist/channel/auth/auth-and-set
- 认证:无
@PaymentVerify - 响应:
Result<Void>
与「获取认证结果」入参相同,区别在于:换取后直接写入会话上下文,不返回 openId。适用于前端轮询场景——调用方只关心授权是否完成(HTTP 200 + code=0),openId 由后续支付请求自动复用。
响应示例
json
{
"code": 0,
"message": "success",
"data": null
}