获取用户UnionID方式升级:新增支付完成后获取方式

2018-12-25 22:43 栏目:实用知识 查看(15887)

大家都知道不管是小程序还是公众号网页还是app,我们常常需要用到的一个数据就是用户的openid,包括识别用户、支付等等环节都需要用到,因为在一个小程序(或者公众号)下,一个个人微信号得到的openid是唯一的。然而小程序和公众号获取的openid并不一样的。

比如某某公司名下有一个微信公众号和一个微信小程序,我分别用同一个微信帐号进入小程序和接入微信登录的网页,系统获取到的openid并不一致,分别得到A和B。为了解决这个问题,打通不同类型的帐号应用,微信官方退出了UnionID机制。

官方的说法是这样的:如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

而这次关于unionid获取的方式新增了一种:用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。

截至现在(2018年12月,当然下次更新就要2019年去了),微信小程序支持获取UnionID的方式主要包含:
调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。

  1. 调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
  2. 如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
  3. 如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。
  4. 用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。
  5. 小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud.getWXContext 获取 UnionID。
  6. 小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud.getWXContext 获取 UnionID。

当然,不管是小程序也好还是公众号也好,能够获取到用户的UnionID的前提就是注册认证微信开放平台并关联相关小程序或微信公众号(也可以是网站、APP)。认证微信开放平台需要另外支付300元/一年的认证费哦~

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:获取用户UnionID方式升级:新增支付完成后获取方式 - 微构网络
分享: