要开发使用微信的平台API,就须要到微信的公众平台(https://mp.weixin.qq.com/)去注册,拥有一个服务号或者订阅号,服务号主要面对企业和组织,订阅号主要面向组织和我的,他们之间有必定的差别,根据不一样的须要本身申请对应的帐号便可。php
微信有两种方式的菜单定义,一种是编辑模式,一种是开发模式,二者互斥,也就是说,一旦咱们采用了开发模式,就不能使用编辑模式了,反过来也同样。编辑下的菜单,其实也是能够管理的,可是微信不支持,以为很不爽。服务器
通常状况下,若是咱们刚刚申请了微信号码,可使用编辑菜单测试一下,根听说明编辑一些菜单试试。虽然微信说24小时内更新,不过通常很快,最快可能一两分钟就更新了,感受仍是不错的。微信
使用开发者模式,你须要根据微信的要求,在服务器上放置一个页面连接,使用C#开发的,能够采用***.ashx的命名方式,使用Asp.NET的通常处理程序便可,不须要使用普通的页面,或者也可使用MVC进行对接。工具
使用开发模式的菜单,也就是能够调用微信API进行菜单建立的工做,对于调用微信的API(微信有不少API能够调用),咱们须要知道,有几个参数的重要性,因此在开发模式打开的时候,会给你列出这些参数,以下所示。post
在进入本身的订阅号后里面有一个开发工具:开发工具
上面说了,你申请开发模式对菜单或者对其余API的调用,你须要顺利经过接入微信的测试,也就是确认你填写的连接存在并能顺利通过微信的回调测试。微信提供了一个PHP的页面处理例子,若是咱们是C#开发的呢,能够搜一下就会获得答案,个人处理方式以下所示。测试
建立一个MVC处理程序,而后在其处理页面里面增长一个处理逻辑,若是是非POST方式的内容,就是表示微信进行的Get测试,你须要增长一些处理逻辑,把它给你的内容传回去便可,若是是POST方式的,就是微信服务器对接口消息的请求操做了,后面介绍。ui
/// <summary> /// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url /// </summary> [HttpGet] public ActionResult Index(string signature, string timestamp, string nonce, string echostr) { string token = System.Configuration.ConfigurationManager.AppSettings["Token"]; var ent = ""; if (CheckSignature(signature, timestamp, nonce, token, out ent)) { return Content("参数错误!"); } return Content(echostr); //返回随机字符串则表示验证经过 }
通用验证方法:spa
/// <summary> /// 检查签名是否正确: /// http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 /// </summary> /// <param name="signature"></param> /// <param name="timestamp"></param> /// <param name="nonce"></param> /// <param name="token">AccessToken</param> /// <returns> /// true: check signature success /// false: check failed, 非微信官方调用! /// </returns> public static bool CheckSignature(string signature, string timestamp, string nonce, string token, out string ent) { var arr = new[] { token, timestamp, nonce }.OrderBy(z => z).ToArray(); var arrString = string.Join("", arr); var sha1 = System.Security.Cryptography.SHA1.Create(); var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString)); StringBuilder enText = new StringBuilder(); foreach (var b in sha1Arr) { enText.AppendFormat("{0:x2}", b); } ent = enText.ToString(); return signature == sha1Arr.ToString(); }
若是是post请求就是开始进行交互了(暂时先设置为空,否则公众号会返回:该公众号暂时没法提供服务,请稍后再试):code
/// <summary> /// 用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML。 /// </summary> [HttpPost] public ActionResult Index() { Stream requestStream = System.Web.HttpContext.Current.Request.InputStream; byte[] requestByte = new byte[requestStream.Length]; requestStream.Read(requestByte, 0, (int)requestStream.Length); string requestStr = Encoding.UTF8.GetString(requestByte); //SNFWeiXinProcess.Log("请求值:" + requestStr); //return Content(SNFWeiXinProcess.Run(requestStr)); //return Content(sss(signature, timestamp, nonce, echostr) ); //return Content(ReceiveXml()); return Content(""); }
以上就是从申请到MVC程序链接微信帐号的过程,以后会讲到怎么与微信进行交互