Vorwort
Wenn alle Vorbereitungen getroffen sind, implementieren Sie zunächst ein öffentliches Follow-Konto und senden Sie dann eine Nachricht an den Kunden. Das Senden einer Nachricht nach dem Aufpassen erfordert eine Get-Anfrage und eine Post-Anfrage. Die Get-Anfrage dient hauptsächlich der Überprüfung beim WeChat-Server, und die Post-Anfrage dient hauptsächlich der Verarbeitung von WeChat-Nachrichten. Für die beim Anpassen der Schnittstelle übergebenen App-IDs und App-Geheimnisse übergeben Sie bitte die Parameter, die Ihrem offiziellen Konto entsprechen.
WeChat-Ereignisinteraktion
WeChat-Ereignisinteraktion überträgt hauptsächlich XML-Datenpakete an den WeChat-Server
Siehe die Wirkung
Sehen Sie sich den Code an
[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; } }
Zusammenfassung
Sie können während der Entwicklung des nicht debuggen WeChat-Schnittstelle, der einzige Ausschluss ist Die Lösung des Problems besteht darin, sich an wichtigen Stellen anzumelden.
Die WeChat-Ereignisinteraktion analysiert hauptsächlich das von WeChat gesendete XML-Datenpaket, analysiert das XML, spleißt das XML entsprechend dem in der Nachricht angegebenen Format zusammen und sendet es an die Antwort. CheckSignature, das in der Get-Methode verwendet wird, ist eine Klasse des Shengpai WeChat SDK, die der Signaturüberprüfung dient.
Hauptsächlich ToUserName und FromUserName beim Senden von Nachrichten an den Client. Ich habe die beiden Parameter zunächst rückwärts geschrieben, was dazu führte, dass der Client die Nachricht nicht empfing.
Das Obige ist der Inhalt der C#-WeChat-Interaktion zwischen öffentlicher Kontoentwicklung und WeChat-Ereignis. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!