问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

微信公众号开发平台,微信服务器发送验证请求时,带nonce参数的get请求时,url出错

发布网友 发布时间:2022-05-14 17:21

我来回答

1个回答

热心网友 时间:2023-10-16 04:22

     #region 微信验证代码部分

        /// <summary>
        /// 验证微信签名
        /// </summary>
        /// * 将token、timestamp、nonce三个参数进行字典序排序
        /// * 将三个参数字符串拼接成一个字符串进行sha1加密
        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
        /// <returns></returns>
        private bool CheckSignature()
        {
            string signature = Request.QueryString["signature"];
            string timestamp = Request.QueryString["timestamp"];
            string nonce = Request.QueryString["nonce"];
            string[] ArrTmp = { Token, timestamp, nonce };
            Array.Sort(ArrTmp);     //字典排序
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public static bool CheckSignature(String signature, String timestamp, String nonce)
        {
            String[] arr = new String[] { Token, timestamp, nonce };
            // 将token、timestamp、nonce三个参数进行字典序排序  
            Array.Sort<String>(arr);

            StringBuilder content = new StringBuilder();
            for (int i = 0; i < arr.Length; i++)
            {
                content.Append(arr[i]);
            }

            String tmpStr = SHA1_Encrypt(content.ToString());


            // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信  
            return tmpStr != null ? tmpStr.Equals(signature) : false;
        }

        /// <summary>
        /// 使用缺省密钥给字符串加密
        /// </summary>
        /// <param name="Source_String"></param>
        /// <returns></returns>
        public static string SHA1_Encrypt(string Source_String)
        {
            byte[] StrRes = Encoding.Default.GetBytes(Source_String);
            HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
            StrRes = iSHA.ComputeHash(StrRes);
            StringBuilder EnText = new StringBuilder();
            foreach (byte iByte in StrRes)
            {
                EnText.AppendFormat("{0:x2}", iByte);
            }
            return EnText.ToString();
        }

        private void Valid()
        {
            string echoStr = Request.QueryString["echoStr"];
            if (CheckSignature())
            {
                if (!string.IsNullOrEmpty(echoStr))
                {
                    Response.Write(echoStr);
                    Response.End();
                }
            }
        }

        /// <summary>
        /// unix时间转换为datetime
        /// </summary>
        /// <param name="timeStamp"></param>
        /// <returns></returns>
        private DateTime UnixTimeToTime(string timeStamp)
        {
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(timeStamp + "0000000");
            TimeSpan toNow = new TimeSpan(lTime);
            return dtStart.Add(toNow);
        }

        /// <summary>
        /// datetime转换为unixtime
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        private int ConvertDateTimeInt(System.DateTime time)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
            return (int)(time - startTime).TotalSeconds;
        }

        #endregion


希望你能用得上。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
父母离异的话,会不会导致孩子心智不成熟? 过节 公司给我们发的购物卡 这个怎么做分录 属于福利费吗 需要计提吗... 乡村振兴公务员和省考公务员有什么区别 ...小时候跟着爷爷学国画书法,小受家是农村的,小受姓夏或叶,他带着他... 瑞麒X1安全装置 瑞麒X1的舒适型和豪华型有什么区别?配置有哪些不同的地方?这5000块多在... 瑞麒X1的安全性能方面配置如何? 脚崴了 有大量於血 怎么样才能快速消肿 脚崴了外侧出现瘀血浮肿怎么消除? ...换了我喜欢的发型,但是穿了件有点透明的衣服,可以看到肩_百度... 什么命令可以定时弹出固定的对话框? 手机s_url参数丢失咋解决 信件怎么写 为什么银手镯会变红?类似铜的感觉? 925银镯子为什么会戴久了泛出铜红色? 银手镯变成铜红色是怎么回事啊 前男友面膜成分有哪些 为什么棒球服的袖子会变黑 路由器加USB口 我的路由器用电脑USB口做电源可以么 能不能带的动(原来电源坏了)?? 皮肤黑的适合穿红底白袖的棒球服吗 有一个9V0.6A供电的路由器,想用usb供电,需要怎么整呢? iphone手机图片怎么打马赛克 海盗龙舟赛计算道具是什么 龙舟怎么做 介绍自己做的龙舟的解说词? 一些葡萄可不可以翻译成any grapes? “一些葡萄”在英语中怎么说? 种了一些葡萄,每次快成熟的时候就会开裂,到底怎么回事? 龙舟怎么用一张纸做 打开word的时候会弹出“对话框打开时命令无法执行。单击”确定“,然后关闭对话框以继续”怎么办? CMD命令运行时,怎么弹出的对话框只显示1秒就关闭了? 右击我的电脑属性,弹出找不到Rundll32文件,在运行对话框输入任何命令都弹出打开方式对话框,叫我选择程序 浙一医院体检中心,单位体检1500元的套餐主要有哪些项目? 财务软件金蝶kis标准版11.0和9.1有什么区别? 我公务员体检被告知要复检。让我空腹,并且带好1500元。我想咨询下1500元大概是要检什么项目? 体检得花多少钱? 东北三省是哪 沈阳全身体检多少钱? 东三省是哪三省啊? 老年人体检项目与价格 厦门体检套餐包括什么|价格多少? 东三省是指那三省? 买的配螺师粉的臭酸笋,收到快递漏气了,,我又放在冰箱里几天可以吃吗 花生油为什么有臭酸笋味道? 楼下卖螺蛳粉太臭怎么投诉? 螺狮粉自己煮可以放些啥 螺蛳粉为什么这么好吃 契尔氏的冰山雪盐除螨祛痘的洗面奶好不好用 去年出了个二级造价师,请问二级建造师和二级造价师有什么区别,那个更实用?懵