Preface
When all preparations are ready, first implement a follow public account and then push a message to the client. Pushing a message after paying attention requires a get request and a post request. The get request is mainly to verify with the WeChat server, and the post request is mainly to process WeChat messages. Please pass the parameters corresponding to your official account for the appid and appsecret passed when adjusting the interface.
WeChat event interaction
WeChat event interaction is mainly to push XML data packets to the WeChat server
See the effect
Look at the code
[HttpGet][ActionName("Index")] public ActionResult Get(string signature,string timestamp,string nonce,string echostr){ if (CheckSignature.Check(signature, timestamp, nonce, token)) { return Content(echostr); } else { return Content("err"); } }
[HttpPost][ActionName("Index")] public ActionResult Get(string signature, string timestamp, string nonce){ StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8); XmlDocument doc = new XmlDocument(); doc.Load(sr); sr.Close(); sr.Dispose(); WxMessage wxMessage = new WxMessage(); wxMessage.ToUserName = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText; wxMessage.FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText; wxMessage.MsgType = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText; wxMessage.CreateTime = int.Parse(doc.SelectSingleNode("xml").SelectSingleNode("CreateTime").InnerText); if (wxMessage.MsgType == "event") { wxMessage.EventName = doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText; if (!string.IsNullOrEmpty(wxMessage.EventName) && wxMessage.EventName == "subscribe") { string content = "您好,欢迎访问garfieldzf8测试公众平台"; content = SendTextMessage(wxMessage, content); return Content(content); } } return Content("");}private string SendTextMessage(WxMessage wxmessage,string content){ string result = string.Format(Message, wxmessage.FromUserName,wxmessage.ToUserName,DateTime.Now.Ticks, content); return result;} public string Message { get { return @"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{3}]]></Content> </xml>"; } }
public class WxMessage { public string ToUserName { get; set; } public string FromUserName { get; set; } public long CreateTime { get; set; } public string Content { get; set; } public string MsgType { get; set; } public string EventName { get; set; } public string EventKey { get; set; } }
Summary
It is not possible to debug during the development of the WeChat interface. The only way to eliminate problems is in key places Log.
WeChat event interaction mainly analyzes the xml data packet sent by WeChat, parses the xml, and splices the xml according to the message specified format and sends it to the response. CheckSignature used in the Get method is a class of Shengpai WeChat SDK, which is for signature verification.
When sending messages to the client, ToUserName and FromUserName are the main ones. I initially wrote the two parameters backwards, causing the client to not receive the message.
The above is the content of C# WeChat public account development-WeChat event interaction. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!