asp.net微信公众号开发,测试公众号收发消息
2018-08-26 14:24
113 查看
版权声明:文系原创,如需转载,请先申明 https://blog.csdn.net/mc0csdn02015/article/details/82080066
准备:
1、学习阶段,可以申请测试账号,此账号接口权限很多,方便做测试。
2、由于微信web开发必须为外网服务器,可以将使用工具将内网穿透到外网,本人使用的是natapp,该网站有免费的隧道,可是域名每次都是随机生成的,每次开发微信功能时,都需要在测试账号界面更改服务器,验证token,较为麻烦。建议购买隧道,价格核还算公道,会很省事。注意,每次做开发时都需要打开natapp的客户端,因此需要配置config,使得每次打开natapp都可以直接穿透,不需要输入代码。
3、使用本机作为服务器,每次验证功能时需要将项目通过IIS发布到本地文件夹。
验证token
验证token的目的在于确认你所填写的url是有效的。验证位置在申请测试账号页面,我们需要做的,就是在项目的启动项的后太码里面获取服务的参数timestamp、nonce,和自己填写的token经过一个加密算法形成一个字符串,如何和请求服务器获得的signature吻合,则验证成功。验证只需要一次,在申请测试号界面token验证通过,则可以注释掉验证代码。
[code] private void valid() { string echoStr = Request.QueryString["echoStr"].ToString(); if (CheckSignature()) { if (!string.IsNullOrEmpty(echoStr)) { Response.Write(echoStr); Response.End(); } } } private bool CheckSignature() { string signature = Request.QueryString["signature"].ToString(); string timestamp = Request.QueryString["timestamp"].ToString(); string nonce = Request.QueryString["nonce"].ToString(); string[] ArrTmp = { Token, timestamp, nonce }; Array.Sort(ArrTmp); //字典排序 string tmpStr = string.Join("", ArrTmp); tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); tmpStr = tmpStr.ToLower(); if (tmpStr == signature) { return true; } else { return false; } }
接受消息(微信服务器)
用户关注了公众号以后,可能会对公众号发送一个“你好”的消息。这个消息会先发送给微信的服务器(手机微信上面的操作,肯定是先由微信服务器处理),再通过微信服务器发送的我们填写的url上,此处即是我们本机。发送到本机的哪里呢,发送到本机IIS发布好的项目里,由项目里的默认项负责处理。
[code] private string GetPostMsg() { try { System.IO.Stream s = Request.InputStream; int count = 0; byte[] buffer = new byte[s.Length]; StringBuilder builder = new StringBuilder(); while ((count = s.Read(buffer, 0, buffer.Length)) > 0) { builder.Append(Request.ContentEncoding.GetString(buffer, 0, count)); } s.Flush(); s.Close(); s.Dispose(); return builder.ToString(); } catch (Exception ex) { throw ex; } }
发送消息
微信公众号在接受了用户的消息以后,发给本机,再由本机接受数据,通过对发送的数据进行解析,明确用户的目的,再做出相应的回应,这有点类似AI,其实就是一个switch判断而已。
[code] private void ResponseMsg(string _postStr) { try { XmlDocument document = new XmlDocument(); document.LoadXml(_postStr); XmlNode root = document.SelectSingleNode("xml"); XmlNodeList nodeList = root.ChildNodes; //model存储获取的数据 var model = new { ToUserName = nodeList.Item(0).InnerText, FromUserName = nodeList.Item(1).InnerText, CreateTime = nodeList.Item(2).InnerText, MsgType = nodeList.Item(3).InnerText, Content = nodeList.Item(4).InnerText }; //获取当前的时间 int currentTime = AppGL.ConvertDateTimeInt(DateTime.Now); switch(model.Content.Substring(0,2)) { case "你好":Response.Write(你想要发送的数据(注意格式)); break; case "图片":Response.Write(你想要发送的数据(注意格式)); break; case "电影":Response.Write(你想要发送的数据(注意格式)); break; default: Response.Write(你想要发送的数据(注意格式)); break; } } catch (Exception ex) { //错误信息,写入日志 WriteTextLog(ex.Message); } }
结语
阅读更多本文所写是微信开发中基础中的基础,完全是针对刚入行的朋友,不喜勿喷。后续还会持续更新,欢迎交流。
相关文章推荐
- C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
- C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)
- ASP.NET MVC 微信公共平台开发之验证消息的真实性
- 微信公众号入门学习1_使用C#,ASP.NET APIController如何公众号接入服务器并启动开发者模式
- ASP.Net: EshineASPNet教程-公众号开发与框架
- Asp.net Web Api开发(第一篇) 自定义HTTP消息拦截器
- 用java开发微信公众号:测试公众号与本地测试环境搭建(一)
- [c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
- 公众平台测试帐号开发全流程第5篇-消息
- 微软测试轻量级ASP.NET开发框架WebMatrix
- 在ASP.NET MVC中使用测试驱动开发 Test Driven Development with ASP.Net MVC (Part 1)
- Asp.net Core 微信公众号开发系列
- 微信公众号开发教程[010]-消息管理-获取公众号的自动回复规则
- asp.net 微信公众平台开发(二)公众账号开发模式
- 【公众号开发】开启微信公众号开发者模式接收消息
- Asp.net Web Api开发(第一篇) 自定义HTTP消息拦截器
- asp.net实现微信公众账号接口开发教程
- 微信公众号开发笔记之收发消息
- 易信公众平台开发(ASP.NET WebForm) Using Senparc.Weixin.MP SDK