C#微信公众号开发 微信事件交互

前言

一切准备工作就绪时就先实现一个关注公众号后向客户端推送一条消息。关注后推送消息需要一个get请求、一个post请求,get请求主要是为了向微信服务器验证,post请求主要就是处理微信消息了。 调接口时传递的appid和appsecret请传递自己公众号对应的参数。

微信事件交互

微信事件交互主要是向微信服务器推送XML数据包

C#微信公众号开发 微信事件交互

看代码

[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。我一开始把两个参数写反了导致客户端收不到消息。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多C#微信公众号开发 微信事件交互相关文章请关注PHP中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2552529.html

(0)
上一篇 2025年3月6日 06:29:56
下一篇 2025年3月6日 01:04:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • C#微信公众号开发之接收事件推送与消息排重的方法

    本文实例讲述了c#微信公众号开发之接收事件推送与消息排重的方法。分享给大家供大家参考。具体分析如下: 微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。这样的话,问题就来了。有这样一个场景:当用户关注微信账号时,获取当…

    编程技术 2025年3月6日
    200
  • c#使用微信接口开发微信门户应用

    微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下、学习下微信的相关开发,也就成为日常计划的重要事情之一了。本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验总结,希望…

    2025年3月6日 编程技术
    200

发表回复

登录后才能评论