• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

.NETCORE微信小程序消息验证的坑

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

进入微信小程序,点击开发-》选择消息推送-》扫码授权,填写必要参数

进入接口开发:

  

 /// <summary>
        /// 验证小程序
        /// </summary>
        /// <returns></returns>
        [HttpGet("checksign")]
        public dynamic CheckSignature()
        {
            /// 1、将token、timestamp、nonce三个参数进行字典序排序 
            /// 2、将三个参数字符串拼接成一个字符串进行sha1加密 
            /// 3、开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
            var _signature = Request.Query["signature"].ToString();
            var _timestamp = Request.Query["timestamp"].ToString();
            var _nonce = Request.Query["nonce"].ToString();
        
       //参数排序 SortedDictionary<string, string> keyValuePairs = new SortedDictionary<string, string>(); keyValuePairs.Add("token", "xxxxxxxx"); //设定的token keyValuePairs.Add("timestamp", _timestamp); keyValuePairs.Add("_nonce", _nonce); StringBuilder sb = new StringBuilder(); foreach (var item in keyValuePairs) { sb.Append(item.Value); } var signature = StringHelper.Sha1(sb.ToString()).ToLower(); //sha1加密,注意,必须是小写的 if (signature.Equals(_signature)) { return Request.Query["echostr"].ToString(); //注意:坑,官方文档上提示返回true和false,其实返回的是echostr参数 } else { return "非法請求"; } }

  sha1加密:

 /// <summary>
        /// 基于Sha1的自定义加密字符串方法:输入一个字符串,返回一个由40个字符组成的十六进制的哈希散列(字符串)。
        /// </summary>
        /// <param name="str">要加密的字符串</param>
        /// <returns>加密后的十六进制的哈希散列(字符串)</returns>
        public static string Sha1(this string str)
        {
            var buffer = Encoding.UTF8.GetBytes(str);
            var data = SHA1.Create().ComputeHash(buffer);

            var sb = new StringBuilder();
            foreach (var t in data)
            {
                sb.Append(t.ToString("X2"));
            }

            return sb.ToString();
        }

  然后把上述接口发布到服务器上,必须绑定域名,而且直接指定到对应的接口上,如:http://api.xylove.net/lee/WX/checksign


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap