首先: 你得有一个微信公众号,当然你也可以使用测试的公众号
其次:微信开发接口文档http://mp.weixin.qq.com/wiki/home/index.html
步骤:
配置接口信息如图:
url里面填充的是你的服务器地址,http://你的域名/控制器/函数,你得保证这个地址在外网上能够访问,
错误情况:
url请求超时:你的地址微信访问不到,如果你的写的是192.168的ip肯定是不行,最好有个域名
token配置错误:你填写的token和你代码里面的token不一致
配置失败:你的签名函数验证失败,刚开始的时候可以跳过这一步,直接将微信传过来的echostr字符串返回
验签代码:
<span style="white-space:pre"> </span>/// <summary>
/// 微信推送地址
/// </summary>
/// <returns></returns>
public string go()
{
string xml = "error";
if (Request.QueryString["echostr"] != null)
{
//signature 验证服务器地址的有效性
string signature = Request.QueryString["signature"].ToString();
string timestamp = Request.QueryString["timestamp"].ToString();
string nonce = Request.QueryString["nonce"].ToString();
string echostr = Request.QueryString["echostr"].ToString();
xml = renzhen(signature, timestamp, nonce, echostr);
}
else
{
//推送消息和事件
xml = ProcessRequest(HttpContext);
}
return xml;
}
<span style="white-space: pre;"> </span>/// <summary>
/// 微信认证
/// </summary>
/// <param name="signature"></param>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
/// <param name="echostr"></param>
/// <returns></returns>
private string renzhen(string signature, string timestamp, string nonce, string echostr)
{
string res = "";
string token = ConfigurationManager.AppSettings["token"];
if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(signature) || string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(echostr))
{
res = "error";
}
else
{
ArrayList arr = new ArrayList() { token, timestamp, nonce };
arr.Sort();
string signature1 = GetSHA1(arr[0].ToString() + arr[1].ToString() + arr[2].ToString());
if (signature1 == signature)
{
res = echostr;
}
else
{
res = "error";
}
}
return res;
}
/// <summary>
/// 加密字符串
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
private string GetSHA1(string password)
{
string sha1string = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "SHA1");
return sha1string.ToLower();
}