關注微信公眾號
1、 首先在微信公眾號平臺配置關注返回連結
2、 Post獲取微信公眾號返回的資料(返回是一個XML資料)
Private string PostInput()
{
Stream
byte[] b = new byte[s.Length];
s.Read(b, 0, (int)s.Length);
return
}
3、 接受資訊的token類和填充方法
Private class ExmlMsg
{
/// <summary>
///
/// </summary>
public string ToUserName { get; set; }
/// <summary>
/// 使用者賬號
/// </summary>
public string FromUserName { get; set; }
/// <summary>
/// 傳送時間戳
/// </summary>
public string CreateTime { get; set; }
/// <summary>
/// 傳送的文字內容
/// </summary>
public string Content { get; set; }
/// <summary>
/// 訊息的型別
/// </summary>
public string MsgType { get; set; }
/// <summary>
/// 事件名稱
/// </summary>
public string EventName { get; set; }
}
private ExmlMsg GetExmlMsg(XmlElement root)
{
ExmlMsg xmlMsg = new ExmlMsg()
{
FromUserName = root.SelectSingleNode("FromUserName").InnerText,
ToUserName = root.SelectSingleNode("ToUserName").InnerText,
CreateTime = root.SelectSingleNode("CreateTime").InnerText,
MsgType = root.SelectSingleNode("MsgType").InnerText,
};
if (xmlMsg.MsgType.Trim().ToLower() == "text")
{
xmlMsg.Content = root.SelectSingleNode("Content").InnerText;
}
else if (xmlMsg.MsgType.Trim().ToLower() == "event")
{
xmlMsg.EventName = root.SelectSingleNode("Event").InnerText;
}
return xmlMsg;
}
4、 配置接受文字的資訊(這裡適用於XML資料)
private void textCase(ExmlMsg xmlMsg)
{
int nowtime = ConvertDateTimeInt(DateTime.Now);
string msg = "";
msg = getText(xmlMsg);
string resxml = "<xml><ToUserName><![CDATA[" + xmlMsg.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + xmlMsg.ToUserName + "]]></FromUserName><CreateTime>" + nowtime + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + msg + "]]></Content><FuncFlag>0</FuncFlag></xml>";
Response.Write(resxml);
return;
}
5、 返回int的時間戳
private int ConvertDateTimeInt(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
return (int)(time - startTime).TotalSeconds;
}
6、 實際在公眾號中返回的資訊
private string getText(ExmlMsg xmlMsg)
{
System.Text.StringBuilder retsb = new StringBuilder(200);
retsb.Append("感謝您關注本公眾號 ");
return retsb.ToString();
}
7、 最後post獲取資訊。找到當返回資訊中名稱為“subscribe”欄位的資料進行操作
if (Request.HttpMethod.ToLower() == "post")
{
string postStr = "";
postStr = PostInput();//獲取xml資料
string weixin = "";
weixin = postStr;//獲取xml資料
if (!string.IsNullOrEmpty(postStr) && !string.IsNullOrEmpty(weixin))
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(weixin);//讀取xml字串
//公眾號發訊息
XmlElement root = doc.DocumentElement;
ExmlMsg xmlMsg = GetExmlMsg(root);
XmlNodeList list = doc.GetElementsByTagName("xml");
XmlNode xn = list[0];
if (xn.SelectSingleNode("//Event").InnerText == "subscribe")
{
textCase(xmlMsg);
}
}
}