黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

微信小程序服务端获取用户解密信息的方法

来源:黔优媒体网   时间:2024-09-19

这篇文章主要介绍了 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); 

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();

//创建连接池对象(与数据库服务器进行连接) SqlConnection conn = new SqlConnection( server=127.0.0.1;database=Test;uid=sa;pwd=1 //打开连接池 conn.Open(); //创建命令对象 string Qrystr = SELECT * FROM WeChatUsers WHERE openId= #39; + userInfo.openId + #39; 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],1726712066,[Memo],[counts])VALUES( #39; + userInfo.unionId + #39;, #39; + userInfo.openId + #39;, #39; + userInfo.nickName + #39;, #39; + userInfo.gender + #39;, #39; + userInfo.city + #39;, #39; + userInfo.province + #39;, #39; + userInfo.country + #39;, #39; + userInfo.avatarUrl + #39;, #39; + appid.ToString() + #39;, #39; + timestamp.ToString() + #39;, #39;来自微信小程序 #39;, #39;1 #39;) 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 = #39; + userInfo.unionId + #39; WHERE OpenId= #39; + userInfo.openId + #39; 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 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何解决微信小程序请求服务器手机预览请求不到数据的问题

关于微信小程序中弹框和模态框的实现

以上就是微信小程序服务端获取用户解密信息的方法的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:微信小程序服务端获取用户解密信息的方法;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)
此操作需要登录,请先登录~
免费注册会员,尽享国内领先平台!