一切准备工作就绪时就先实现一个关注公众号后向客户端推送一条消息。关注后推送消息需要一个get请求、一个post请求,get请求主要是为了向微信服务器验证,post请求主要就是处理微信消息了。 调接口时传递的appid和appsecret请传递自己公众号对应的参数。
微信事件交互
微信事件交互主要是向微信服务器推送XML数据包
看效果
看代码
[HttpGet] [ActionName("Index")] publicActionResult Get(stringsignature,stringtimestamp,stringnonce,stringechostr) { if(CheckSignature.Check(signature, timestamp, nonce, token)) { returnContent(echostr); } else { returnContent("err"); } [HttpPost] [ActionName("Index")] publicActionResult Get(stringsignature,stringtimestamp,stringnonce) { StreamReader sr =newStreamReader(Request.InputStream, Encoding.UTF8); XmlDocument doc =newXmlDocument(); doc.Load(sr); sr.Close(); sr.Dispose(); WxMessage wxMessage =newWxMessage(); 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") { stringcontent ="您好,欢迎访问garfieldzf8测试公众平台"; content = SendTextMessage(wxMessage, content); returnContent(content); } } returnContent(""); } privatestringSendTextMessage(WxMessage wxmessage,stringcontent) { stringresult =string.Format(Message, wxmessage.FromUserName,wxmessage.ToUserName,DateTime.Now.Ticks, content); returnresult; } publicstringMessage { get { return@""; } } publicclassWxMessage { publicstringToUserName {get;set; } publicstringFromUserName {get;set; } publiclongCreateTime {get;set; } publicstringContent {get;set; } publicstringMsgType {get;set; } publicstringEventName {get;set; } publicstringEventKey {get;set; } } {2}
总结
开发微信接口的过程中不能调试,唯一排除问题的方式就是在关键的地方记log。
微信事件交互主要是分析微信发送的xml数据包,解析xml,并按照消息指定格式拼接xml发送给response。在Get方法里用到的CheckSignature 是盛派微信SDK的一个类,也就是对签名校验。
向客户端发送消息时主要ToUserName和FromUserName。我一开始把两个参数写反了导致客户端收不到消息。
梦想家园汉化版 最新版v1.3.0
梦想家园汉化安卓版是一款以泡泡玛特为主题,玩法独特的模拟经营
服从我 (Obey Me!)安卓版v8.1.11
服从我(obey me)是一款让你陷入ikemen恶魔们深情
佩皮超级商店 免费版v1.13.1
佩皮超级商店(Pepi Super Stores)是一款经营
船舶墓地模拟器内置菜单最新版本 v142
船舶墓地模拟器内置菜单版是一款模拟经营类游戏,玩家们将在这里
铠甲勇士捕将变身器模拟器 最新版v1.5
铠甲勇士捕将变身器模拟器是一款有着丰富选择的腰带召唤器,该召