时间:2021-05-20
前言
一切准备工作就绪时就先实现一个关注公众号后向客户端推送一条消息。关注后推送消息需要一个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 @"<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; } }总结
开发微信接口的过程中不能调试,唯一排除问题的方式就是在关键的地方记log。
微信事件交互主要是分析微信发送的xml数据包,解析xml,并按照消息指定格式拼接xml发送给response。在Get方法里用到的CheckSignature 是盛派微信SDK的一个类,也就是对签名校验。
向客户端发送消息时主要ToUserName和FromUserName。我一开始把两个参数写反了导致客户端收不到消息。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
之前做了一个淘宝客返利微信公众号,后来很多人提到过微信返利机器人,现在微信助手开发好了,可以通过微信助手接口功能实现微信返利机器人。流程如下:下面是c#实现返利
看谁转发了微信公众号暂时没有此功能,微信公众号是开发者或商家在微信公众平台上申请的应用号,是一种主流的线上线下微信互动营销方式。 微信公众号是开发者或商家在微
微信公众平台开发之前,要先了解这些基本的信息,微信公众平台的分类:分为个人微信公众平台于企业微信公众平台两种;公众号运营类型分为:订阅号,服务号和企业号,微信还
本文实例讲述了C#微信公众号与订阅号接口开发示例代码。分享给大家供大家参考,具体如下:usingSystem;usingSystem.Web;usingSyst
微信公众号火遍了大街小巷的当下,我们对微信公众号了解多少?很多人都知道微信小程序,知道这些都是微信自带的功能,实际上微信公众号也可以开发很多功能,每一种功能开发