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


最近朋友的微信公眾號准備做活動,靠固定的微信公眾平台模版搞定不了,於是請我代為開發微信后台。鑒於我也是第一次嘗試開發微信后台,所以也踩了不少坑,此系列博客將會描述微信公眾號各項功能的實現。

 

先決條件

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進行更多的操作,比如自動回復語音、文章、圖文等消息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM