最近朋友的微信公衆號準備作活動,靠固定的微信公衆平臺模版搞定不了,因而請我代爲開發微信後臺。鑑於我也是第一次嘗試開發微信後臺,因此也踩了很多坑,此係列博客將會描述微信公衆號各項功能的實現。html
先決條件web
1.一臺可部署web服務的服務器或者雲平臺(我採用的是Microsoft Azure)c#
2.一個能夠正常使用的微信公衆帳號api
3.Visual Studio安全
開發準備服務器
1.採用ASP.NET Web API網站項目做爲微信公衆號後臺服務微信
成爲微信公衆號開發者app
這一步很簡單,只要在微信公衆號後臺的開發者中心贊成協議便可,贊成以後頁面以下:微信公衆平臺
服務器配置ide
登陸微信公衆平臺官網後,在公衆平臺後臺管理頁面 - 開發者中心頁,點擊「修改配置」按鈕,填寫服務器地址(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進行更多的操做,好比自動回覆語音、文章、圖文等消息。