微信通过encryptedData,iv,Code获取用户信息

   #region 通过encryptedate,iv,code获取用户信息返回登录状态
/// <summary>
/// 判断用户是否存在-如果不存在保存用户信息,如果存在泽不需要更新
/// </summary>
/// <param name="encryptedData"></param>
/// <param name="iv"></param>
/// <param name="code"></param>
/// <returns></returns>
        [HttpPost]
public ActionResult GetWxinfo(string encryptedData, string iv, string Code)
{
string Appid = "wx4feb6bfe43b18822";
string Secret = "012857c1e1fcb98496b8c5ba9d44f544";
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";
string obj = Toolkits.GetUrltoHtml(url, type);//获取微信服务器返回字符串
//将字符串转换为json格式  







调用方法下方
 #region 获取链接返回数据,调用url,获取链接返回数据
/// <summary>
/// 获取链接返回数据
/// </summary>
/// <param name="Url">链接</param>
/// <param name="type">请求类型</param>
/// <returns></returns>
public static string GetUrltoHtml(string Url, string type)
{
try
{
System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
System.Net.WebResponse wResp = wReq.GetResponse();
System.IO.Stream respStream = wResp.GetResponseStream();
using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
{
return reader.ReadToEnd();
}
}
catch (System.Exception ex)
{
return ex.Message;
}
}
#endregion
#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 static 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

JObject jsonlist = (JObject)JsonConvert.DeserializeObject(obj);
WxModel wxres = new WxModel();
try
{
//微信服务器验证成功  
wxres.openid = jsonlist["openid"].ToString();
wxres.session_key = jsonlist["session_key"].ToString();
}
catch (Exception)
{
//微信服务器验证失败  
wxres.errcode = jsonlist["errcode"].ToString();
wxres.errmsg = jsonlist["errmsg"].ToString();
}
//判断返回的oepnID知否存在
if (string.IsNullOrEmpty(wxres.openid))
{
//用户数据解密  
Toolkits.AesIV = iv;
Toolkits.AesKey = wxres.session_key;
var result = Toolkits.AESDecrypt(encryptedData);
//存储用户数据  
JObject _usrInfo = (JObject)JsonConvert.DeserializeObject(result);
//userInfo userInfo = new userInfo();
//userInfo.openId = _usrInfo["openId"].ToString();
            }

微信通过encryptedData,iv,Code获取用户信息

原文:https://www.cnblogs.com/SDdemon/p/14891654.html

以上是微信通过encryptedData,iv,Code获取用户信息的全部内容。
THE END
分享
二维码
)">
< <上一篇
下一篇>>