消息关闭
    暂无新消息!


我用了,以下的代码做了一个asp.net  web页,但总是验证不通过,跪求帮助:

        const string Token = "abc123456";//定义一个局部变量不可以被修改,这里定义的变量要与接口配置信息中填写的Token一
        protected void Page_Load(object sender, EventArgs e)  
        {  
            Valid();//校验签名  
        }  
  
        private void Valid()  
        {  
            string echoStr = Request.QueryString["echoStr"].ToString();  
            if (CheckSignature())  
            {  
                if (!string.IsNullOrEmpty(echoStr))  
                {  
                    Response.Write(echoStr);  
                    Response.End();  
                }  
            }  
        }  
  
        /// <summary>  
        /// 验证微信签名  
        /// </summary>  
        /// <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对比,标识该请求来源于微信。开发者通过检验signat
            {  
                return true;  
            }  
            else  
                return false;  
        }          
    }  

0个回答

暂无回答!