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}
C# 微信小程序获取绑定手机号
Wesley13
2021-10-11
1456 0 0
点赞
收藏
评论区
加载中...