>위챗 애플릿 >위챗 개발 >C# WeChat 공개 계정 개발 - WeChat 이벤트 상호 작용

C# WeChat 공개 계정 개발 - WeChat 이벤트 상호 작용

黄舟
黄舟원래의
2017-01-16 10:56:301948검색

서문

모든 준비가 완료되면 먼저 팔로우 공개 계정을 구현한 후 고객에게 메시지를 푸시하세요. 주의를 기울인 후 메시지를 푸시하려면 가져오기 요청과 게시 요청이 주로 필요합니다. 가져오기 요청은 주로 WeChat 서버에 확인하기 위한 것이고 게시 요청은 주로 WeChat 메시지를 처리하기 위한 것입니다. 인터페이스 조정 시 전달되는 appid, appsecret에는 공식 계정에 해당하는 매개변수를 전달해 주세요.

WeChat 이벤트 상호작용

WeChat 이벤트 상호작용은 주로 XML 데이터 패킷을 WeChat 서버에 푸시합니다.

C# WeChat 공개 계정 개발 - WeChat 이벤트 상호 작용

다음을 참조하세요. 효과

C# WeChat 공개 계정 개발 - 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)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.