tnblog
首页
登录

微信验证Token

79人阅读 2019/12/11 14:47 总访问:1359 评论:0 手机 收藏
分类: 笔记

const string Token = "你的token";
    
        protected void Page_Load(object sender, EventArgs e)
        {
            
            if (Request.HttpMethod.ToLower() == "post")
            {
            }
            else
            {      
                Valid();
            }
        }
       //验证token
        private void Valid()
        {
            string echoStr = Request.QueryString["echoStr"].ToString();//微信自动传过来的echostr
            if (CheckSignature())
            {
                if (!string.IsNullOrEmpty(echoStr))//当随机数和token验证成功后,返回echostr给微信,就可以了
                {
                    Response.Write(echoStr);
                    Response.End();
                }
            }

        }

         /// <summary>
        /// 验证微信签名
        /// </summary>
        /// * 将token、timestamp、nonce三个参数进行字典序排序
        /// * 将三个参数字符串拼接成一个字符串进行sha1加密
        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
        /// <returns></returns>
        private bool CheckSignature()
        
         {
            string signature = Request.QueryString["signature"].ToString();
            string timestamp = Request.QueryString["timestamp"].ToString();
            string nonce = Request.QueryString["nonce"].ToString();
            string[] ArrTmp = { Token, timestamp, nonce };
            Array.Sort(ArrTmp);//字典排序  
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//对该字符串进行sha1加密  
            tmpStr = tmpStr.ToLower();//对字符串中的字母部分进行小写转换,非字母字符不作处理  
            if (tmpStr == signature)//开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。开发者通过检验signature对请求进行校验,若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败  
            {
                return true;
            }
            else
                return false;
        }



评价
不为失败找理由,只为成功找方法
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2020TNBLOG.NET