91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#微信小程序服務端如何獲取用戶解密信息

發布時間:2021-07-03 18:42:36 來源:億速云 閱讀:265 作者:小新 欄目:web開發

這篇文章主要為大家展示了“C#微信小程序服務端如何獲取用戶解密信息”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C#微信小程序服務端如何獲取用戶解密信息”這篇文章吧。

 C#微信小程序服務端獲取用戶解密信息實例代碼

實現代碼:

using AIOWeb.Models; 
using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 
using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Web; 
 
namespace AIOWeb 
{ 
  /// <summary> 
  /// wxapi 的摘要說明 
  /// </summary> 
  public class wxapi : IHttpHandler 
  { 
    public void ProcessRequest(HttpContext context) 
    { 
      context.Response.ContentType = "text/plain"; 
 
      string code = ""; 
      string iv = ""; 
      string encryptedData = ""; 
      try 
      { 
        code = HttpContext.Current.Request.QueryString["code"].ToString(); 
        iv = HttpContext.Current.Request.QueryString["iv"].ToString(); 
        encryptedData = HttpContext.Current.Request.QueryString["encryptedData"].ToString(); 
      } 
      catch (Exception ex) 
      { 
        context.Response.Write(ex.ToString()); 
      } 
 
      string Appid = "wxdb2641f85b04f1b3"; 
      string Secret = "8591d8cd7197b9197e17b3275329a1e7"; 
      string grant_type = "authorization_code"; 
 
      //向微信服務端 使用登錄憑證 code 獲取 session_key 和 openid  
      string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + Appid + "&secret=" + Secret + "&js_code=" + code + "&grant_type=" + grant_type; 
      string type = "utf-8"; 
 
      AIOWeb.Models.GetUsersHelper GetUsersHelper = new AIOWeb.Models.GetUsersHelper(); 
      string j = GetUsersHelper.GetUrltoHtml(url, type);//獲取微信服務器返回字符串 
 
      //將字符串轉換為json格式 
      JObject jo = (JObject)JsonConvert.DeserializeObject(j); 
 
      result res = new result(); 
      try 
      { 
        //微信服務器驗證成功 
        res.openid = jo["openid"].ToString(); 
        res.session_key = jo["session_key"].ToString(); 
      } 
      catch (Exception) 
      { 
        //微信服務器驗證失敗 
        res.errcode = jo["errcode"].ToString(); 
        res.errmsg = jo["errmsg"].ToString(); 
      } 
      if (!string.IsNullOrEmpty(res.openid)) 
      { 
        //用戶數據解密 
        GetUsersHelper.AesIV = iv; 
        GetUsersHelper.AesKey = res.session_key; 
 
        string result = GetUsersHelper.AESDecrypt(encryptedData); 
 
 
        //存儲用戶數據 
        JObject _usrInfo = (JObject)JsonConvert.DeserializeObject(result); 
 
        userInfo userInfo = new userInfo(); 
        userInfo.openId = _usrInfo["openId"].ToString(); 
 
        try //部分驗證返回值中沒有unionId 
        { 
          userInfo.unionId = _usrInfo["unionId"].ToString(); 
        } 
        catch (Exception) 
        { 
          userInfo.unionId = "unionId"; 
        } 
         
        userInfo.nickName = _usrInfo["nickName"].ToString(); 
        userInfo.gender = _usrInfo["gender"].ToString(); 
        userInfo.city = _usrInfo["city"].ToString(); 
        userInfo.province = _usrInfo["province"].ToString(); 
        userInfo.country = _usrInfo["country"].ToString(); 
        userInfo.avatarUrl = _usrInfo["avatarUrl"].ToString(); 
 
        object watermark = _usrInfo["watermark"].ToString(); 
        object appid = _usrInfo["watermark"]["appid"].ToString(); 
        object timestamp = _usrInfo["watermark"]["timestamp"].ToString(); 
 
 
        #region 
 
 
        //創建連接池對象(與數據庫服務器進行連接) 
        SqlConnection conn = new SqlConnection("server=127.0.0.1;database=Test;uid=sa;pwd=1"); 
        //打開連接池 
        conn.Open(); 
        //創建命令對象 
        string Qrystr = "SELECT * FROM WeChatUsers WHERE openId='" + userInfo.openId + "'"; 
        SqlCommand cmdQry = new SqlCommand(Qrystr, conn); 
        object obj = cmdQry.ExecuteScalar(); 
        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) 
        { 
          string str = "INSERT INTO WeChatUsers ([UnionId] ,[OpenId],[NickName],[Gender],[City],[Province],[Country],[AvatarUrl],[Appid],1592866058,[Memo],[counts])VALUES('" + userInfo.unionId + "','" + userInfo.openId + "','" + userInfo.nickName + "','" + userInfo.gender + "','" + userInfo.city + "','" + userInfo.province + "','" + userInfo.country + "','" + userInfo.avatarUrl + "','" + appid.ToString() + "','" + timestamp.ToString() + "','來自微信小程序','1')"; 
 
          SqlCommand cmdUp = new SqlCommand(str, conn); 
          // 執行操作 
          try 
          { 
            int row = cmdUp.ExecuteNonQuery(); 
          } 
          catch (Exception ex) 
          { 
            context.Response.Write(ex.ToString()); 
          } 
        } 
        else 
        { 
          //多次訪問,記錄訪問次數counts  更新unionId是預防最初沒有,后期關聯后卻仍未記錄 
          string str = "UPDATE dbo.WeChatUsers SET counts = counts+1,UnionId = '" + userInfo.unionId + "' WHERE OpenId='" + userInfo.openId + "'"; 
          SqlCommand cmdUp = new SqlCommand(str, conn); 
          int row = cmdUp.ExecuteNonQuery(); 
        } 
         
        //關閉連接池 
        conn.Close(); 
        #endregion 
 
        //返回解密后的用戶數據 
        context.Response.Write(result); 
      } 
      else 
      { 
        context.Response.Write(j); 
      } 
    } 
 
    public bool IsReusable 
    { 
      get 
      { 
        return false; 
      } 
    } 
  } 
}

GetUsersHelper 幫助類

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Security.Cryptography; 
using System.Text; 
using System.Threading.Tasks; 
 
namespace AIOWeb.Models 
{ 
  public class GetUsersHelper 
  { 
 
    /// <summary> 
    /// 獲取鏈接返回數據 
    /// </summary> 
    /// <param name="Url">鏈接</param> 
    /// <param name="type">請求類型</param> 
    /// <returns></returns> 
    public string GetUrltoHtml(string Url, string type) 
    { 
      try 
      { 
        System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url); 
        // Get the response instance. 
        System.Net.WebResponse wResp = wReq.GetResponse(); 
        System.IO.Stream respStream = wResp.GetResponseStream(); 
        // Dim reader As StreamReader = New StreamReader(respStream) 
        using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type))) 
        { 
          return reader.ReadToEnd(); 
        } 
      } 
      catch (System.Exception ex) 
      { 
        return ex.Message; 
      } 
    } 
    #region 微信小程序用戶數據解密 
 
    public static string AesKey; 
    public static string AesIV; 
 
    /// <summary> 
    /// AES解密 
    /// </summary> 
    /// <param name="inputdata">輸入的數據encryptedData</param> 
    /// <param name="AesKey">key</param> 
    /// <param name="AesIV">向量128</param> 
    /// <returns name="result">解密后的字符串</returns> 
    public string AESDecrypt(string inputdata) 
    { 
      try 
      { 
        AesIV = AesIV.Replace(" ", "+"); 
        AesKey = AesKey.Replace(" ", "+"); 
        inputdata = inputdata.Replace(" ", "+"); 
        byte[] encryptedData = Convert.FromBase64String(inputdata); 
 
        RijndaelManaged rijndaelCipher = new RijndaelManaged(); 
        rijndaelCipher.Key = Convert.FromBase64String(AesKey); // 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(encryptedData, 0, encryptedData.Length); 
        string result = Encoding.UTF8.GetString(plainText); 
 
        return result; 
      } 
      catch (Exception) 
      { 
        return null; 
 
      } 
    } 
    #endregion 
  } 
}

以上是“C#微信小程序服務端如何獲取用戶解密信息”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘西| 荃湾区| 耒阳市| 施甸县| 南溪县| 杭州市| 介休市| 锡林郭勒盟| 宜城市| 慈溪市| 恩平市| 专栏| 顺昌县| 隆德县| 茶陵县| 东宁县| 伊宁县| 广河县| 诸城市| 田东县| 乌兰察布市| 德惠市| 安图县| 罗城| 宝鸡市| 皋兰县| 大方县| 资中县| 龙里县| 万盛区| 中方县| 吴旗县| 东阿县| 阿克| 文昌市| 靖安县| 上虞市| 广德县| 抚顺县| 秦皇岛市| 龙泉市|