一、前提条件,要有一台服务器
请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL
需要正确响应微信发送的Token
验证,请阅读消息接口使用指南。
二、C#代码示例
但是上面链接中的代码是PHP
示例代码,因此我整理了一份C#
版的,亲测能用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WXtoken
{
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//验证token
string poststring = string.Empty;
string token = "aabbcc"; //验证token,随意填写
if (string.IsNullOrEmpty(token))
{
return;
}
string echostr = HttpContext.Current.Request.QueryString["echostr"];
string signature = HttpContext.Current.Request.QueryString["signature"];
string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
string nonce = HttpContext.Current.Request.QueryString["nonce"];
if (checkSignature(token, signature, timestamp, nonce, nonce))
{
HttpContext.Current.Response.Write(echostr);
HttpContext.Current.Response.End();
}
}
#region 微信接口对接验证代码
public bool checkSignature(string token, string signature, string timestamp, string nonce, string echostr)
{
List<string> list = new List<string>();
list.Add(token);
list.Add(timestamp);
list.Add(nonce);
list.Sort();
string res = string.Join("", list.ToArray());
Byte[] dataToHash = Encoding.ASCII.GetBytes(res);
byte[] hashvalue = ((HashAlgorithm)CryptoConfig.CreateFromName("SHA1")).ComputeHash(dataToHash);
StringBuilder sb = new StringBuilder();
foreach (byte b in hashvalue)
{
sb.Append(b.ToString("x2"));
}
if (signature == sb.ToString())
return true;
else
return false;
}
#endregion
}
}
三、配置失败原因整理:
- 端口错误,必须是80或者443端口
- 参数错误,建议从官方文档复制参数到项目中(我就是有两个字母写反了,尴尬)
- 地址或者Token错误