调用本接口前需要用户完成支付,用户支付完成后,第三方平台可以代理小程序获取该用户的 unionid,无需用户授权。本接口支付后的五分钟内有效。使用过程中如遇到问题,可在开放平台服务商专区发帖交流。
# 请求地址
以下两种方式任选其一:
- 微信订单号:
GET //api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&transaction_id=TRANSACTION_ID
- 商户订单号:
GET //api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&mch_id=MCH_ID&out_trade_no=OUT_TRADE_NO
# 请求参数说明
access_token | String | 是 | 第三方平台接口调用令牌authorizer_access_token |
openid | String | 是 | 支付用户唯一标识 |
transaction_id | String | 否 | 微信订单号 |
mch_id | String | 否 | 商户号,和商户订单号配合使用 |
out_trade_no | String | 否 | 商户订单号,和商户号配合使用 |
# 返回参数说明
unionid | String | 用户唯一标识,调用成功后返回 |
errcode | Number | 返回码 |
# 返回码说明
0 | 请求成功 |
-1 | 系统错误 |
40003 | openid 错误 |
89002 | 没有绑定开放平台账号 |
89300 | 订单无效 |
其他错误码 | 请查看全局错误码 |
调试工具
接口应在服务器端调用,详细说明参见服务端API。
本接口支持云调用。需开发者工具版本 >= 1.02.1904090(最新稳定版下载),wx-server-sdk >= 0.4.0
# 接口说明
# 接口英文名
getPaidUnionid
# 功能描述
该接口用于在用户支付完成后,获调用本接口前需要用户完成支付,用户支付完成后,取该用户的 UnionId,无需用户授权。本接口支付后的五分钟内有效。
# 注意事项
- 调用前需要用户完成支付,且在支付后的五分钟内有效。
- 使用微信支付订单号(transaction_id)和微信支付商户订单号和微信支付商户号(out_trade_no 及 mch_id),二选一
# 调用方式
# HTTPS 调用
# 云调用
出入参和 HTTPS 调用相同,调用方式可查看云调用说明文档
接口方法为: openapi.auth.getPaidUnionId
# 第三方调用
- 调用方式以及出入参和 HTTPS 相同,仅是调用的 token 不同
# 请求参数
# 返回参数
unionid | string | 用户唯一标识,调用成功后返回 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
# 调用示例
示例说明: 使用微信支付订单号
# 请求数据示例
# 返回数据示例
示例说明: 使用微信支付商户订单号和微信支付商户号(out_trade_no 及 mch_id)
# 请求数据示例
# 返回数据示例
示例说明: 云函数示例
# 请求数据示例
# 返回数据示例
# 错误码
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 | 订单无效 |
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。
# UnionID获取途径
绑定了开发者帐号的小程序,可以通过以下途径获取 UnionID。
开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户授权。
小程序端调用云函数时,可在云函数中通过 Cloud.getWXContext 获取 UnionID。
用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。
# 微信开放平台绑定小程序流程
登录微信开放平台 — 管理中心 — 小程序 — 绑定小程序
背景描述:
目前我们官网平台(PC/APP/小程序端都有绑定在同一个微信开放平台账号下)为了保证用户账号统一性都是使用unionid方式来授权登录的;
请教解答问题:
1、例如小程序接入微信支付是,只看到openid方式,没有看到 unionid方式?
因为现在官网各渠道都是使用unionid方式保证统一微信登录账号统一性,现在这样接入微信支付如何使用unionid方式接入?
另外,微信支付的其他几种方式(扫码支付、H5端支付、公众号支付、APP支付)也一样只看到openid方式。是否有统一的方法获取unionid?
//pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
2、微信支付和账号是否打通疑问:
就是目前我们在接入微信支付商户平台时,这个平台有个类似应用APPID的值叫
商户号 | mch_id |
,如果在没有绑定统一的微信开放平台账号下,如果同一个微信账号登录官网,然后进入支付阶段会不会产生不一样账号?导致用户最后支付账号不一致的情况?
登录调用的开放平台的openid和商户支付平台返回的openid是同一个吗???