最近微信新上线了一些功能,越来越多的人对微信感兴趣并开发一些小功能,前一段时间研究了一下微信的东西,跟想刚开始入门的人一点参考。
一、获取凭证
在使用通用接口前,你需要做以下两个操作;
1.申请一个微信公众账号,并获取appid和appsecret(在公众平台申请自定义菜单功能,在高级模式中开启开发者模式,填写URL和Token后获得)
2.通过获取凭证接口获取到acess_token
二、验证微信通信
string TOKEN = "acess_token";
public void valid()
{
string echoStr = Request.QueryString["echostr"];
if (checkSignature())
{
if (!string.IsNullOrEmpty(echoStr))
{
Response.Write(echoStr);
Response.End();
}
}
else
{
return;
}
}
private bool checkSignature()
{
string signature = Request.QueryString["signature"];
string timestamp = Request.QueryString["timestamp"];
string nonce = Request.QueryString["nonce"];
//排序5
string[] arr = { TOKEN, timestamp, nonce };
Array.Sort(arr, StringComparer.Ordinal);
string tmpStr = string.Join("", arr);
//加密后字符串
string tmpSha = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, FormsAuthPasswordFormat.SHA1.ToString());
tmpStr = tmpSha.ToLower();
if (tmpStr.Equals(signature.ToLower()))
{
return true;
}
else
{
return false;
}
}
三、当用户关注公共账号时发送欢迎语
public void ResponseMsg(HttpContext context)
{
string input = string.Empty;
using (StreamReader sr = new StreamReader(context.Request.InputStream))
{
input = sr.ReadToEnd();
}
if (string.IsNullOrEmpty(input))
{
context.Response.ContentType = "text/plain";
context.Response.End();
}
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(input);
string MsgType = xmlDoc.DocumentElement.SelectSingleNode("MsgType").InnerText;
string ToUserName = xmlDoc.DocumentElement.SelectSingleNode("ToUserName").InnerText;
string FromUserName = xmlDoc.DocumentElement.SelectSingleNode("FromUserName").InnerText;
string resultStr = string.Empty;
string contentStr = string.Empty;
if (MsgType != "")
{
string fromUsername = FromUserName;
string toUsername = ToUserName;
DateTime time = DateTime.Now;
if (MsgType == "event")
{
string msgType = "text";
string textTpl = "<xml>"
+ "<ToUserName><![CDATA[{0}]]></ToUserName>"
+ "<FromUserName><![CDATA[{1}]]></FromUserName>"
+ "<CreateTime>{2}</CreateTime>"
+ "<MsgType><![CDATA[{3}]]></MsgType>"
+ "<Content><![CDATA[{4}]]></Content>"
+ "<FuncFlag>0</FuncFlag>"
+ "</xml>";
contentStr = "欢迎加入微信公共账号";
resultStr = string.Format(textTpl, fromUsername, toUsername, time, msgType, contentStr);
context.Response.Write(resultStr);
}
}
else
{
context.Response.Write(resultStr);
}
}
如果你关注公共账号发送“欢迎加入微信公共账号”的话,那么恭喜你,你已经实现微信验证通过并发送欢迎语