서문
모든 준비가 완료되면 먼저 팔로우 공개 계정을 구현한 후 고객에게 메시지를 푸시하세요. 주의를 기울인 후 메시지를 푸시하려면 가져오기 요청과 게시 요청이 주로 필요합니다. 가져오기 요청은 주로 WeChat 서버에 확인하기 위한 것이고 게시 요청은 주로 WeChat 메시지를 처리하기 위한 것입니다. 인터페이스 조정 시 전달되는 appid, appsecret에는 공식 계정에 해당하는 매개변수를 전달해 주세요.
WeChat 이벤트 상호작용
WeChat 이벤트 상호작용은 주로 XML 데이터 패킷을 WeChat 서버에 푸시합니다.
다음을 참조하세요. 효과
코드 보기
[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; } }
요약
WeChat 인터페이스 개발 중에는 디버깅할 수 없습니다. 문제를 해결하는 유일한 방법입니다. 문제는 주요 위치에 있습니다.
WeChat 이벤트 상호 작용은 주로 WeChat에서 보낸 xml 데이터 패킷을 분석하고 xml을 구문 분석한 후 메시지 지정된 형식에 따라 xml을 연결하여 응답으로 보냅니다. Get 메소드에 사용된 CheckSignature는 서명 검증을 위한 Shengpai WeChat SDK의 클래스입니다.
클라이언트에 메시지를 보낼 때 주로 ToUserName 및 FromUserName입니다. 처음에는 두 매개변수를 거꾸로 썼기 때문에 클라이언트가 메시지를 받지 못했습니다.
위 내용은 C# 위챗 공개계정 개발-위챗 이벤트 연동 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!