:::info
**公告**:openid 目前已经全面对客开放,openid 相关字段请在公开的 API 文档中查看。
openid 标准目前会对新增 APPID 进行灰度,灰度中应用原有涉及 userid 的接口将会支持 openid。未处于灰度中的应用可查看 [openid 配置申请](https://opendocs.alipay.com/common/0ai9ok?pathHash=a43b913d) 进行自助申请。
**页面配置操作**:登录 **开放平台控制台** > **应用详情页** > **开发设置** > **openid配置管理** 点击 **设置** 进行查看/修改应用openid 用户标识。
**说明**:如暂时无法支持 openid 标准,可选择回退至 userid 标准,操作详情可查看 [申诉回退到 userid](https://opendocs.alipay.com/common/0ai736?pathHash=cf004b9b)。
:::
# 背景介绍
uid (即 userid)作为支付宝系统内标,在数字化业务开放过程面临着不断升级要求,为了减少开发者适配改造成本,支付宝将统一提供 openid 作为稳定且唯一的用户的标识。同时支付宝还将围绕 openid 不断开放 **棋盘密云**、**小橱窗 **等一系列特色营销产品能力,帮助商家更好的进行数字化升级。
#### openid 相比 userid 的优势
- 用户在应用下的标识后续将统一切换到 openid,系统内部标识 userid 会进行升位扩展。
- 尽早使用 openid 可以避免 userid 变更产生的影响,开发成本更低。
- 棋盘密云、会员营销等新产品仅支持 openid。
**注意**:支付宝未来推出的新产品将只支持 openid。
#### openid 覆盖的开放能力范围
目前支付宝开放平台所有产品能力都支持 openid。
| **类型** | **概念** |
| --- | --- |
| appid | appid 是支付宝开放平台应用的唯一标识。
- 例如:小程序的 appid、网页移动应用的 appid、生活号的 appid、第三方应用的 appid 等。
|
| openid | openid 是支付宝用户在应用维度下的唯一标识。
- 支付宝用户访问小程序、网页移动应用、生活号等应用,会产生唯一的 openid。并且对于同一用户,不同应用的 openid 是不同的。
- 例如,对于不同小程序,同一用户的 openid 不同;同理,对于不同的网页移动应用,同一用户的 openid 也是不同的。
|
| unionid | unionid 是支付宝用户在应用分组下的唯一标识,用于跨应用识别用户。
- 如果开发者在支付宝开放平台有多个应用(包括小程序、生活号、网页/移动应用等),可以根据 unionid 识别多个应用下的唯一用户。
- 有关应用分组:每个商家账号对应一个唯一的应用分组,可以将需要联动管理的应用绑定到应用分组中;所有绑定到应用分组中的应用,可以通过调用接口获取到同一个 unionid。
- 例如,同一用户,对于某一支付宝商家账号的应用分组中的不同应用,unionid 是相同的。
关于实现应用间的数据互通的流程,可查看 [unionid 数据互通](https://opendocs.alipay.com/common/0ai2i8?pathHash=8fe59ce6)。 |
| userid | 支付宝用户系统内部标识,后续将不再独立开放,以 openid 替换。 |
为了避免开发者混淆这几个关键的概念,可参考下面的图例理清关系。
**注意**:实例中的 appid 属于支付宝内部测试应用,仅用于说明 openid 相关概念,请勿将其用于其它商业行为。
## openid 示例
商家账号 A 下,拥有小程序应用 1(appid1=2021003146694026)。
商家账号 B 下,拥有生活号应用 2(appid2=2021003163674018)。
支付宝用户 1 和支付宝用户 2 访问不同的应用时返回的 openid 情况如下:
- 支付宝用户 1 访问小程序应用 1 时,返回 `openid1=084y_69bGhbvBmHgjH5dHVzac5jadyz95zYC50SQQ25pqk7`。
- 支付宝用户 2 访问小程序应用 1 时,返回 `openid2=042y_69bGhbvBmHgjH5dHVzad_gl9uJNvxtEgOnZltW7PYa`。
- 支付宝用户 1 访问生活号应用 2 时,返回 `openid3=084KdkSYbzHBeD_lWIwD6gJ3uquPkMaFn1mkUNPrRczKuk9`。
- 支付宝用户 2 访问生活号应用 2 时,返回 `openid4=042KdkSYbzHBeD_lWIwD6gJ3ic25rVNNkzQycZ6mB98hv46`。
不同用户访问不同的开放平台应用,返回的 openid 是不同的。
## unionid 示例
商家账号 A 下,拥有小程序应用 1(appid1=2021003146694026) 和生活号应用 2(appid2=2021003146626065),并将两个应用都绑定到了自己账号的应用分组中。
商家账号 B 下,拥有小程序应用 3(appid3=2021002113608014)和网页应用 4(appid4=2021003162631218),小程序应用 3 未绑定到任何应用分组中,网页应用 4 绑定到了自己账号的应用分组中。
支付宝用户 1 访问不同的应用时返回的 unionid 差异如下:
- 访问商家账号 A 的小程序应用 1 和生活号应用 2 时,返回相同的 `unionid1=084BRgPjzsFFon5eugozYwfn3glPhAWeUOrBBuK_iwJzG83`。
- 访问商家账号 B 的小程序应用 3 时,因应用不在任何应用分组中,不返回 unionid。
- 访问商家账号 B 的网页应用 4 时,返回 `unionid2=084XKWFH-2JY9IWdQTEyy5cSYEEkK08AzCXqbxwCXFEiQI8`。