c# 调用微信小程序

//微信也不给个c#调用的例子 只好自己造咯;ps:大佬勿喷
1
public string GetWx(string code, string iv, string encryptedData) 2 { 3 // context.Response.ContentType = "text/plain"; 4 string xx = ""; 5 try 6 { 7 //code = HttpContext.Current.Request.QueryString["code"].ToString(); 8 //iv = HttpContext.Current.Request.QueryString["iv"].ToString(); 9 //encryptedData = HttpContext.Current.Request.QueryString["encryptedData"].ToString(); 10 } 11 catch (Exception ex) 12 { 13 // context.Response.Write(ex.ToString()); 14 } 15 16 string Appid = "wx187bd36d7393af6b"; 17 string Secret = "8f14745e1dd01cedbdcac790aa397149"; 18 string grant_type = "authorization_code"; 19 20 //向微信服务端 使用登录凭证 code 获取 session_key 和 openid 21 string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + Appid + "&secret=" + Secret + "&js_code=" + code + "&grant_type=" + grant_type; 22 string type = "utf-8"; 23 24 GetUsersHelper GetUsersHelper = new GetUsersHelper(); 25 string j = GetUsersHelper.GetUrltoHtml(url, type);//获取微信服务器返回字符串 26 27 //将字符串转换为json格式 28 JObject jo = (JObject)JsonConvert.DeserializeObject(j); 29 30 result res = new result(); 31 try 32 { 33 //微信服务器验证成功 34 res.openid = jo["openid"].ToString(); 35 res.session_key = jo["session_key"].ToString(); 36 } 37 catch (Exception) 38 { 39 //微信服务器验证失败 40 res.errcode = jo["errcode"].ToString(); 41 res.errmsg = jo["errmsg"].ToString(); 42 } 43 return res.openid; 44 } 45 46 public class GetUsersHelper 47 { 48 49 /// <summary> 50 /// 获取链接返回数据 51 /// </summary> 52 /// <param name="Url">链接</param> 53 /// <param name="type">请求类型</param> 54 /// <returns></returns> 55 public string GetUrltoHtml(string Url, string type) 56 { 57 try 58 { 59 System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url); 60 // Get the response instance. 61 System.Net.WebResponse wResp = wReq.GetResponse(); 62 System.IO.Stream respStream = wResp.GetResponseStream(); 63 // Dim reader As StreamReader = New StreamReader(respStream) 64 using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type))) 65 { 66 return reader.ReadToEnd(); 67 } 68 } 69 catch (System.Exception ex) 70 { 71 return ex.Message; 72 } 73 }
 #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;

                }
            }

            /// <summary>  
            /// 根据微信小程序平台提供的解密算法解密数据  
            /// </summary>  
            /// <param name="encryptedData">加密数据</param>  
            /// <param name="iv">初始向量</param>  
            /// <param name="sessionKey">从服务端获取的SessionKey</param>  
            /// <returns></returns>  
            public userInfo Decrypt(string encryptedData, string iv, string sessionKey)
            {
                userInfo userInfo;
                //创建解密器生成工具实例  
                AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
                //设置解密器参数  
                aes.Mode = CipherMode.CBC;
                aes.BlockSize = 128;
                aes.Padding = PaddingMode.PKCS7;
                //格式化待处理字符串  
                byte[] byte_encryptedData = Convert.FromBase64String(encryptedData);
                byte[] byte_iv = Convert.FromBase64String(iv);
                byte[] byte_sessionKey = Convert.FromBase64String(sessionKey);

                aes.IV = byte_iv;
                aes.Key = byte_sessionKey;
                //根据设置好的数据生成解密器实例  
                ICryptoTransform transform = aes.CreateDecryptor();

                //解密  
                byte[] final = transform.TransformFinalBlock(byte_encryptedData, 0, byte_encryptedData.Length);

                //生成结果  
                string result = Encoding.UTF8.GetString(final);

                //反序列化结果,生成用户信息实例  
                userInfo = JsonConvert.DeserializeObject<userInfo>(result);

                return userInfo;

            }


            #endregion
        }



        public class wechat
        {
        }
        #region 实体类
        /// <summary>  
        /// 微信用户类  
        /// </summary>  
        public class userInfo
        {
            public string openId { get; set; }
            public string nickName { get; set; }
            public string gender { get; set; }
            public string city { get; set; }
            public string province { get; set; }
            public string country { get; set; }
            public string avatarUrl { get; set; }
            public string unionId { get; set; }
            public data watermark { get; set; }
        }
        /// <summary>  
        /// 微信用户数据水印  
        /// </summary>  
        public class data
        {
            public string appid { get; set; }
            public string timestamp { get; set; }
        }
        /// <summary>  
        /// 微信小程序验证返回结果  
        /// </summary>  
        public class result
        {
            public string openid { get; set; }
            public string session_key { get; set; }
            public string errcode { get; set; }
            public string errmsg { get; set; }
        }
        #endregion

 

 

转载于:https://www.cnblogs.com/provedl/p/9336480.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vs 2017 git成功 miyao 亲测可行 1.注册 ssh key 本地方生成 复制到远端 2. 远端建立仓库 3.在 网站上点击sourcetree 会自动打开本地sourcetree 。 本地先安装 好sourcetree ,并注册一下 4.sourcetree拉取远端文件 5.在vs中打开 自动可以操作了 在线购物商城微信小程序前端和后台源码 源码描述: 一、源码特点 在线购物商城微信小程序前端和后台数据管理系统源码,使用.net开发,测试无Bug,感兴趣的欢迎下载 二、微信小程序功能 1、 会员自动授权登录注册 2、 产品分类、产品检索、产品筛选、产品详情、 3、 广告展示、 4、 购物车 6、 收货地址 7、 订单提交微信支付 8、 订单检索等功能 三、后台功能 1、 后台会员系统:会员列表、会员基本信息,积分明细、余额明细、购物记录、收货地址(在系统设置的频道管理可以开启此功能) 2、 后台系统设置:导航栏目、分类管理、 OAuth设置 、支付设置、扩展字段 、频道管理、模型管理、站点基本信息等功能设置 3、 订单管理:在线购物订单查看、发货、确认 4、 产品管理:分类管理 、产品管理 、 积分产品管理 四、注意事项 1、开发环境为Visual Studio 2010,数据库为SQLServer2008,使用.net 4.0开发。 2、管理员登陆名:admin 密码:admin888 3、默认数据库连接字符串在webconfig配置文件中修改 4、DB文件夹中是数据库脚本文件,使用sqlerver工具运行即可 5、cmsWeb文件夹里面是api接口后台 xcx文件夹是微信小程序 DataBase文件夹是数据库文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值