最近朋友的微信公眾號准備做活動,靠固定的微信公眾平台模版搞定不了,於是請我代為開發微信后台。鑒於我也是第一次嘗試開發微信后台,所以也踩了不少坑,此系列博客將會描述微信公眾號各項功能的實現。
先決條件
1.一台可部署web服務的服務器或者雲平台(我采用的是Microsoft Azure)
2.一個可以正常使用的微信公眾賬號
3.Visual Studio
開發准備
1.采用ASP.NET Web API網站項目作為微信公眾號后台服務
成為微信公眾號開發者
這一步很簡單,只要在微信公眾號后台的開發者中心同意協議即可,同意之后頁面如下:
服務器配置
登錄微信公眾平台官網后,在公眾平台后台管理頁面 - 開發者中心頁,點擊“修改配置”按鈕,填寫服務器地址(URL)、Token和EncodingAESKey,其中URL是開發者用來接收微信消息和事件的接口URL。Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。
同時,開發者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務器配置在提交后都會立即生效,請開發者謹慎填寫及選擇。加解密方式的默認狀態為明文模式,選擇兼容模式和安全模式需要提前配置好相關加解密代碼。
詳細內容參考官方指南:http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html
這里我給出c#實現的簽名生成代碼:
//注意返回echostr字符串類型微信只接受“application/x-www-form-urlencoded”,直接返回是不被接受的 public HttpResponseMessage Get(string signature, string timestamp, string nonce, string echostr) { if (CheckSource(signature, timestamp, nonce)) { var result = new StringContent(echostr, UTF8Encoding.UTF8, "application/x-www-form-urlencoded"); var response = new HttpResponseMessage { Content = result }; return response; } return new HttpResponseMessage(); } //檢驗是否來自微信的簽名 public bool CheckSource(string signature, string timestamp, string nonce) { var str = string.Empty; var token = "cwtesttoken"; var parameter = new List<string> { token, timestamp, nonce }; parameter.Sort(); var parameterStr = parameter[0] + parameter[1] + parameter[2]; var tempStr = GetSHA1(parameterStr).Replace("-", "").ToLower(); if (tempStr == signature) return true; return false; } //SHA1加密 public string GetSHA1(string input) { var output = string.Empty; var sha1 = new SHA1CryptoServiceProvider(); var inputBytes = UTF8Encoding.UTF8.GetBytes(input); var outputBytes = sha1.ComputeHash(inputBytes); sha1.Clear(); output = BitConverter.ToString(outputBytes); return output; }
這樣在我們填入我們服務器端API地址后,就能夠順利搞定服務器配置,綁定微信公眾號后台了。
配置完成
總結
我們完成了配置微信公眾號開發的第一步,后續將會利用微信的api進行更多的操作,比如自動回復語音、文章、圖文等消息。