Avant-propos
Lorsque tous les préparatifs sont prêts, mettez d'abord en place un compte public de suivi, puis envoyez un message au client. Pousser un message après avoir prêté attention nécessite une demande d'obtention et une demande de publication. La demande d'obtention sert principalement à vérifier auprès du serveur WeChat, et la demande de publication sert principalement à traiter les messages WeChat. Pour l'appid et l'appsecret transmis lors du réglage de l'interface, merci de transmettre les paramètres correspondant à votre compte officiel.
Interaction avec les événements WeChat
L'interaction avec les événements WeChat pousse principalement les paquets de données XML vers le serveur WeChat
Voir le effet
Regardez le 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; } }
Résumé
Vous ne pouvez pas déboguer pendant le développement du Interface WeChat, la seule exclusion est La façon de résoudre le problème est de se connecter aux endroits clés.
L'interaction avec l'événement WeChat analyse principalement le paquet de données XML envoyé par WeChat, analyse le XML, épisse le XML selon le format spécifié du message et l'envoie à la réponse. CheckSignature utilisée dans la méthode Get est une classe du SDK Shengpai WeChat, destinée à la vérification de la signature.
Principalement ToUserName et FromUserName lors de l'envoi de messages au client. J'ai initialement écrit les deux paramètres à l'envers, ce qui a empêché le client de recevoir le message.
Ce qui précède est le contenu de l'interaction entre le développement du compte public C# WeChat et l'événement WeChat. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !