ASP.NET Web API實現微信公衆平臺開發(一)服務器驗證

最近朋友的微信公衆號準備作活動,靠固定的微信公衆平臺模版搞定不了,因而請我代爲開發微信後臺。鑑於我也是第一次嘗試開發微信後臺,因此也踩了很多坑,此係列博客將會描述微信公衆號各項功能的實現。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進行更多的操做,好比自動回覆語音、文章、圖文等消息。

相關文章
相關標籤/搜索