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

1#region 获取微信手机号 2/// <summary> 3/// 获取微信手机号 4/// </summary> 5/// <param name="aesIv">向量</param> 6/// <param name="encryptedData">encryptedData</param> 7/// <param name="code">加密数据</param> 8/// <returns></returns> 9[HttpGet] 10[RespWrapFilter] //框架引用,用于返回Json串 11public wechardetails<watermark> GetPhoneNumber(string aesIv, string encryptedData, string code) 12{ 13try 14{ 15#region 获取Session_Key 16 17var AppId = ""; //微信小程序AppID 18var Secret = ""; //微信小程序Secret 19string serviceAddress = "https://api.weixin.qq.com/sns/jscode2session?appid=" + AppId + "&secret=" 20+ Secret + "&js_code=" + code + "&grant_type=authorization_code"; 21HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress); 22request.Method = "GET"; 23request.ContentType = "text/html;charset=utf-8"; 24HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 25Stream myResponseStream = response.GetResponseStream(); 26StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.UTF8); 27string retString = myStreamReader.ReadToEnd(); 28myStreamReader.Close(); 29myResponseStream.Close(); 30var obj = new 31{ 32data = retString, 33Success = true 34}; 35Formatting microsoftDataFormatSettings = default(Formatting); 36string result = JsonConvert.SerializeObject(obj, microsoftDataFormatSettings); 37//序列化获取session_key 38v_petminiuserdetails item = JsonConvert.DeserializeObject<v_petminiuserdetails>(retString); 39 40#endregion 41 42#region 获取微信绑定手机号 43 44//判断是否是16位 如果不够补0 45//text = tests(text); 46//16进制数据转换成byte 47byte[] encryptedDatas = Convert.FromBase64String(encryptedData); // strToToHexByte(text); 48RijndaelManaged rijndaelCipher = new RijndaelManaged(); 49rijndaelCipher.Key = Convert.FromBase64String(item.session_key); // Encoding.UTF8.GetBytes(AesKey); 50rijndaelCipher.IV = Convert.FromBase64String(aesIv);// Encoding.UTF8.GetBytes(AesIV); 51rijndaelCipher.Mode = CipherMode.CBC; 52rijndaelCipher.Padding = PaddingMode.PKCS7; 53ICryptoTransform transform = rijndaelCipher.CreateDecryptor(); 54byte[] plainText = transform.TransformFinalBlock(encryptedDatas, 0, encryptedDatas.Length); 55string results = Encoding.Default.GetString(plainText); 56 57//序列化获取手机号码 58wechardetails<watermark> getPhone = JsonConvert.DeserializeObject<wechardetails<watermark>>(results); 59getPhone.watermark.openid = item.openid; //获取用户OpenID 60return getPhone; 61 62#endregion 63 64} 65catch (Exception ex) 66{ 67return null; 68 69} 70} 71#endregion 72 73 74 75//实体Model 76 77//获取用户openid、session_key 78public class v_petminiuserdetails 79{ 80/// <summary> 81/// 微信用户openId 82/// </summary> 83public string openid { get; set; } 84/// <summary> 85/// session_key 86/// </summary> 87public string session_key { get; set; } 88} 89//获取用户手机号 90public class wechardetails<T> 91{ 92/// <summary> 93/// 手机号 94/// </summary> 95public string phoneNumber { get; set; } 96/// <summary> 97/// 区域手机号 98/// </summary> 99public string purePhoneNumber { get; set; } 100/// <summary> 101/// 区码 102/// </summary> 103public string countryCode { get; set; } 104 105public T watermark { get; set; } 106} 107 108public class watermark 109{ 110/// <summary> 111/// 时间戳 112/// </summary> 113public string timestamp { get; set; } 114/// <summary> 115/// 用户appid 116/// </summary> 117public string appid { get; set; } 118/// <summary> 119/// 用户openid 120/// </summary> 121public string openid { get; set; } 122}
点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

thinkcmf+jsapi 实现微信支付

首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();

微信小程序事件传参与vue传参的不同

1、vue点击事件传参(day)的写法:2、微信小程序写法(1)事件传参(2)获取参数dayprocess(e)console.log(e.currentTarget.dataset.day)3、总结:微信小程序不支持事件传参,可以通过把参数绑定在元素上,通过currentTarget.dataset获取参数。

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

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