重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小编给大家分享一下使用C#开发微信公众号中如何实现微信事件交互,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
成都创新互联专注于企业网络营销推广、网站重做改版、铁门关网站定制设计、自适应品牌网站建设、H5页面制作、商城建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为铁门关等各大城市提供网站开发制作服务。
前言
一切准备工作就绪时就先实现一个关注公众号后向客户端推送一条消息。关注后推送消息需要一个get请求、一个post请求,get请求主要是为了向微信服务器验证,post请求主要就是处理微信消息了。 调接口时传递的appid和appsecret请传递自己公众号对应的参数。
微信事件交互
微信事件交互主要是向微信服务器推送XML数据包
看效果
看代码
[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 @""; } } {2}
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; } }
总结
开发微信接口的过程中不能调试,唯一排除问题的方式就是在关键的地方记log。
微信事件交互主要是分析微信发送的xml数据包,解析xml,并按照消息指定格式拼接xml发送给response。在Get方法里用到的CheckSignature 是盛派微信SDK的一个类,也就是对签名校验。
向客户端发送消息时主要ToUserName和FromUserName。我一开始把两个参数写反了导致客户端收不到消息。
看完了这篇文章,相信你对“使用C#开发微信公众号中如何实现微信事件交互”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!