微信公众号开发 asp.net mvc 如何验证服务器地址

时间:2021-10-28 18:17:40

一、保证令牌(Token)一致

      例如:微信公众号开发平台的基本配置中token为hello,那么后台代码中验证的token也要为token

二、后台代码

     基本配置中的URL填写的是你具体验证的地址,例如http://www.baidu.com/Home/WeiXin域名所绑定的ip地址需要开通80端口(443端口目前没有尝试),域名需要ICP认证,一套下来很烦,需要很长世间。

     具体代码:HomeController类中

     //定义Token,与微信公众平台保持一致

     private const string Token = "hello";

    //微信验证端口
        public ActionResult WeiXin() {
            string echoStr = Request.QueryString["echoStr"];
            string signature = Request.QueryString["signature"];
            string timestamp = Request.QueryString["timestamp"];
            string nonce = Request.QueryString["nonce"];
            if (CheckSignature(Token, signature, timestamp, nonce) && !string.IsNullOrEmpty(echoStr))
            {
                Response.Write(echoStr);
                Response.End();
            }
            return View();

        }

 //微信密码验证
        private static bool CheckSignature(string Token, string signature, string timestamp, string nonce)
        {
            string[] arrTmp = { Token, timestamp, nonce };
            Array.Sort(arrTmp);
            string tmpStr = string.Join("", arrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            if (tmpStr != null)
            {
                tmpStr = tmpStr.ToLower();
                return tmpStr == signature;
            }
            return false;

        }

三、总结

     代码复制,直接可以使用。本人从网上找了很多,都没什么用,网上的方法说的很模糊,遇事必躬亲啊