要開發使用微信的平臺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程序鏈接微信帳號的過程,以後會講到怎麼與微信進行交互