.NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?
前言
获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性。
官方的解释:如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
相关公众号开发文章:
.NET Core 小程序开发零基础系列(1)——开发者启用并牵手成功
.NET Core 小程序开发零基础系列(2)——小程序服务通知(模板消息)
.NET Core 微信小程序支付——(统一下单)
.NET Core 微信小程序退款——(统一退款)
1
UnionID机制说明
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
2
UnionID获取的6种途径(代码实现)
UnionID获取的6种途径
调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login +
code2Session
获取到该用户 UnionID,无须用户再次授权。如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login +
code2Session
获取到该用户 UnionID ,无须用户再次授权。用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过
getPaidUnionId
接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud.getWXContext 获取 UnionID。
小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud.getWXContext 获取 UnionID。
第一种UnionID获取
调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
最常见的一种,很多同学应该用的这种。
流程:用户授权——获取密钥——后端解密——获取UnionID
开放平台绑定小程序如图:
前端授权获取密钥:
后端解密获取UnionID
varsettingItem = Senparc.Weixin.Config.SenparcWeixinSetting.Items[appID];
JsCode2JsonResult jsonResult = SnsApi.JsCode2Json(settingItem.WxOpenAppId, settingItem.WxOpenAppSecret, param.Code);
if (jsonResult.errcode != ReturnCode.请求成功)
{ return (false, jsonResult.errmsg);
} string unionID;
var encryptedData = Senparc.Weixin.WxOpen.Helpers.EncryptHelper.DecodeEncryptedData(jsonResult.session_key, param.EncryptedData, param.IV);
DecodedUserInfo decodedUserInfo = SerializerHelper.GetObject<DecodedUserInfo>(encryptedData);
unionID = decodedUserInfo.unionId;
第二种UnionID获取
如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
流程:关注了公众号——获取UnionID
1、关注同一主体公众号就好了
2、获取UnionID,如下代码
varsettingItem = Senparc.Weixin.Config.SenparcWeixinSetting.Items[appID];
JsCode2JsonResult jsonResult = SnsApi.JsCode2Json(settingItem.WxOpenAppId, settingItem.WxOpenAppSecret, param.Code);
if (jsonResult.errcode != ReturnCode.请求成功)
{ return (false, jsonResult.errmsg);
} string unionID;
if (!jsonResult.unionid.IsNullOrEmpty())
{ unionID = jsonResult.unionid; Console.WriteLine($"unionID获取(无需解密):参数EncryptedData={param.EncryptedData},IV={param.IV},unionID={unionID}");
}
第三种UnionID获取
如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。
流程:与第二步流程类似,可以参数
第四种UnionID获取
用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。
流程:订单支付成功得到相应信息——通过接口请求getPaidUnionId得到UnionID
1、支付流程请参考:.NET Core 微信小程序支付——(统一下单)
2、通过接口请求getPaidUnionId得到UnionID
以下两种方式任选其一。
a、微信支付订单号(transaction_id)
https://api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&transaction_id=TRANSACTION_ID
b、微信支付商户订单号和微信支付商户号(out_trade_no 及 mch_id)
https://api.weixin.qq.com/wxa/getpaidunionid?access_token=ACCESS_TOKEN&openid=OPENID&mch_id=MCH_ID&out_trade_no=OUT_TRADE_NO
通过两个接口请求方式就可以得到UnionID
第五种UnionID获取
小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud.getWXContext 获取 UnionID。
流程:关注了公众号——通过云函数获取UnionID
官方函数说明:
代码示例:
const cloud = require('wx-server-sdk')
exports.main = async (event, context) => { const { OPENID, APPID, UNIONID, ENV, } = cloud.getWXContext() return { OPENID, APPID, UNIONID, ENV, }
}
第六种UnionID获取
小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud.getWXContext 获取 UnionID。
流程:与第五种类似,可以参数。
3
总结
相关推荐
.NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?相关推荐
- 微信,支付宝支付,微信公众号小程序授权等
微信,支付宝支付,微信公众号小程序授权等 前言 微信支付 微信授权 maven依赖(更新) 前言 最近在公司也做了很多移动端项目,如今微信公众号,小程序又特别火爆,免不了要接触支付,授权这类的业务需求 ...
- crmeb打通版开源微信公众号小程序商城框架源码
crmeb是什么? crmeb是一套客户管理加电商营销系统,基于ThinkPhp6.0+Vue采用前后端分离模式开发,前后台都具有非常标准的API接口,是一款非常优秀的开源微信端及小程序商城框架,能够 ...
- python爬虫爬取微信公众号小程序信息
python爬虫爬取微信公众号小程序信息 爬取内容 某汽车维修信息提供的维修店名称,地点以及电话(手机)号码 爬取步骤 啥也别管,先抓包看看,在这里,博主使用的抓包软件是charles 抓包:将网络传 ...
- 微信公众号小程序第三方获取授权流程
概述 这是一个类似平时的C-S模型,但在这模型中有一个问题,服务器能够获取到客户端的客户唯一标识,在微信中应该就是微信号.应该是出于保护用户隐私的目的,微信选择了使用openid来代替微信号作为唯一标 ...
- 微信公众号小程序外卖返利分销系统美团饿了么外卖cps软件源码
饿了么美团外卖返利程序对接公众号发单机器人分销系统返利源码 美团/饿了么外卖CPS联盟返利公众号小程序裂变核心源码 源代码地址 http://y.mybei.cn 成品展示 截图 步骤 下载以上源代码 ...
- 微信公众号/小程序注册认证
本篇文章主要从注册微信小程序的角度讲如何注册小程序账号. 作为一名小程序开发者,可能您不用操心注册账号和微信认证的事情,这种事情一般可以交由客户去注册. 但当您的客户需要您自己去注册账号时,您可能需要 ...
- 微信公众号 小程序 开放平台是什么鬼
三个东西,公众号,小程序,微信开放平台 公众号,小程序,微信开放平台都要申请及认证 1)公众号申请需要填写企业详情,对公小额转帐验证会退回,不要钱,审核营业资质.最后认证费用300 2)如果你要开通 ...
- 如何对接微信公众号/小程序的在线客服
第一步:下载在线客服软件 二.开启微信客服功能并扫码绑定 第一次登进后默认是没有微信客服项目的,需要在左边先找到"微信客服"模块,然后"开启客服功能"(点击按钮 ...
- 关于微信公众号小程序在运营过程中的注意事项
运营必看 想使用"小程序数据助手",但是没有数据 分析问题 在PC端,网页上如何授权 重点:你要有小程序的管理账户 Good luck ! 想使用"小程序数据助手&quo ...
最新文章
- PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头2
- 基于向量空间的知识图谱查询及结果解释
- 不共线三点确定特征平面并求解平面系数
- JS的Object.keys
- C语言学习及应用笔记之五:C语言typedef关键字及其使用
- android布局layout中的一些属性
- 时间戳与全球唯一性标识
- VirtualBox中,LINUX与Windows可以通过链接来跳转
- 苹果6s强制删除id锁_苹果ID锁安全神话破灭!2分钟就能解锁
- Win10 系统通过易升升级后,系统盘空间不足解决办法(个人经历)
- gabor matlab pudn,matlab-Face-recognition 基于Gabor特征提取和人工智能的人脸检测系统 271万源代码下载- www.pudn.com...
- 2016英语三级分数计算机,2016年英语三级成绩查询准考证号忘了怎么办?
- Linux 打印机移植说明
- 基于深度学习的推荐系统
- 打扰一下计算机房在哪里用英语怎么写,打扰用英语怎么说例句翻译
- vue3的中间值思维
- 大专自学python找工作_大专生自学Python到找到工作的经历
- 2020年10月12日斗鱼虎牙合并的瓜
- 微信小程序:微信也可以发闪照了闪照制作生成微信小程序源码下载,自定义闪照时间
- android视频图片上传,适配Android WebView支持上传图片,视频