C# 微信小程序获取绑定手机号

Wesley13
• 阅读 809
#region 获取微信手机号
/// <summary>
/// 获取微信手机号
/// </summary>
/// <param name="aesIv">向量</param>
/// <param name="encryptedData">encryptedData</param>
/// <param name="code">加密数据</param>
/// <returns></returns>
[HttpGet]
[RespWrapFilter]   //框架引用,用于返回Json串
public wechardetails<watermark> GetPhoneNumber(string aesIv, string encryptedData, string code)
{
try
{
#region 获取Session_Key

var AppId = ""; //微信小程序AppID
var Secret = "";  //微信小程序Secret 
string serviceAddress = "https://api.weixin.qq.com/sns/jscode2session?appid=" + AppId + "&secret="
+ Secret + "&js_code=" + code + "&grant_type=authorization_code";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);
request.Method = "GET";
request.ContentType = "text/html;charset=utf-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
var obj = new
{
data = retString,
Success = true
};
Formatting microsoftDataFormatSettings = default(Formatting); 
string result = JsonConvert.SerializeObject(obj, microsoftDataFormatSettings);
//序列化获取session_key
v_petminiuserdetails item = JsonConvert.DeserializeObject<v_petminiuserdetails>(retString); 

#endregion

#region 获取微信绑定手机号

//判断是否是16位 如果不够补0
//text = tests(text);
//16进制数据转换成byte
byte[] encryptedDatas = Convert.FromBase64String(encryptedData); // strToToHexByte(text);
RijndaelManaged rijndaelCipher = new RijndaelManaged();
rijndaelCipher.Key = Convert.FromBase64String(item.session_key); // Encoding.UTF8.GetBytes(AesKey);
rijndaelCipher.IV = Convert.FromBase64String(aesIv);// Encoding.UTF8.GetBytes(AesIV);
rijndaelCipher.Mode = CipherMode.CBC;
rijndaelCipher.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
byte[] plainText = transform.TransformFinalBlock(encryptedDatas, 0, encryptedDatas.Length);
string results = Encoding.Default.GetString(plainText);

//序列化获取手机号码
wechardetails<watermark> getPhone = JsonConvert.DeserializeObject<wechardetails<watermark>>(results);
getPhone.watermark.openid = item.openid; //获取用户OpenID
return getPhone;

#endregion

}
catch (Exception ex)
{
return null;

}
}
#endregion

 

//实体Model

//获取用户openid、session_key
public class v_petminiuserdetails
{
/// <summary>
/// 微信用户openId
/// </summary>
public string openid { get; set; }
/// <summary>
/// session_key
/// </summary>
public string session_key { get; set; } 
}
//获取用户手机号
public class wechardetails<T>
{
/// <summary>
/// 手机号
/// </summary>
public string phoneNumber { get; set; }
/// <summary>
/// 区域手机号
/// </summary>
public string purePhoneNumber { get; set; }
/// <summary>
/// 区码
/// </summary>
public string countryCode { get; set; }

public T watermark { get; set; }
}

public class watermark
{
/// <summary>
/// 时间戳
/// </summary>
public string timestamp { get; set; }
/// <summary>
/// 用户appid
/// </summary>
public string appid { get; set; }
/// <summary>
/// 用户openid
/// </summary>
public string openid { get; set; }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
thinkcmf+jsapi 实现微信支付
首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();
放学路上 放学路上
2年前
微信小程序事件传参与vue传参的不同
1、vue点击事件传参(day)的写法:2、微信小程序写法(1)事件传参(2)获取参数dayprocess(e)console.log(e.currentTarget.dataset.day)3、总结:微信小程序不支持事件传参,可以通过把参数绑定在元素上,通过currentTarget.dataset获取参数。
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Easter79 Easter79
3年前
Taro小程序自定义顶部导航栏
微信自带的顶部导航栏是无法支持自定义icon和增加元素的,在开发小程序的时候自带的根本满足不了需求,分享一个封装好的组件,支持自定义icon、扩展dom,适配安卓、ios、h5,全面屏。我用的是京东的Taro多端编译框架写的小程序,原生的也可以适用,用到的微信/taro的api做调整就行,实现效果如下。!在这里插入图片描述(https://i
Stella981 Stella981
3年前
C#获取微信二维码显示到wpf
微信的api开放的二维码是一个链接地址,而我们要将这个二维码显示到客户端。方式很多,今天我们讲其中一种。///<summary///获取图片路径///</summary///<paramname"httpUrl"</param
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这