一、保证令牌(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;
}
三、总结
代码复制,直接可以使用。本人从网上找了很多,都没什么用,网上的方法说的很模糊,遇事必躬亲啊