ASP.NET?MVC開發(fā)接入微信公共平臺
申請微信公共賬號
既然要接入微信公共平臺,微信公共號是必須的(當然如果只是測試的話也可以申請微信公共平臺接口測試賬號),來這里微信公共平臺 申請微信公共號(注:申請微信公共號不能用已綁定微信的郵箱),微信公共平臺有自己的官方文檔,官方文檔有不少資料,可以多看看,開發(fā)者模式默認是關閉的,需要配置并啟用,如下圖:
URL即你的網站處理微信模塊,必須是HTTP://開頭的網站,筆者自己之前接入幾天一直失敗,最終發(fā)現是因為自己網站加密了用的是HTTPS,這個需要注意HTTPS網站是不可以的,Token是不會驗證成功的,Token是自定義的不少于3個字符,EncodingAESKey會在加密消息時用到。
編寫網站邏輯
編寫微信接口測試代碼,創(chuàng)建控制器,在控制器中編寫代碼,編寫一個Action 方法用于微信服務器檢驗,Token是否配置成功或者接入成功。
既然使用MVC,本人比較懶,懶得用Request.QueryStrings["echostr"] 這樣的方法來一個一個獲取參數,于是創(chuàng)建了一個Model,用來讓微信服務器請求時參數自動適配到Model的相應屬性,便于訪問,便于寫代碼,在微信公共平臺的官方文檔中可以看到用到的參數
于是創(chuàng)建一個這樣的Model
public class WeChatRequestModel { public string signature { get; set; } public string timestamp { get; set; } public string nonce { get; set; } public string echostr { get; set; } }
接著看官方文檔,接下來開始在控制器中編寫代碼,開始驗證
根據校驗流程開始編寫代碼,也可參考官方給出PHP代碼編寫相應的 .NET 代碼
下面給出我的示例代碼,在接入沒成功之前參考許多別人的代碼,不一定是最好的,你也可以參考一些別人的代碼(這里說明一下,驗證signature是否正確是從安全方面考慮的,你也可以將GET請求中的echostr參數直接輸出,建議還是驗證一下,畢竟安全更重要一些)
用來讓微信服務器訪問的Action 方法代碼
配置微信公共平臺上的信息
配置接入服務器,圖中的參數都必須配置,Token要與網站代碼中的Token保持一致,EncodingAESKey直接隨機生成就可以,當然自己寫也是可以的,只要你愿意,消息加解密方式,建議開發(fā)測試階段選擇明文模式以及兼容模式,正式上線使用后選擇安全模式。
最后第一項也是最重要的一項,URL,再次強調必須是HTTP網站,HTTPS是驗證不成功的,如果是HTTPS能改成HTTP的話要改成HTTP,Url寫成剛才我們編寫的用于訪問的驗證的Action的Url地址,即要訪問這個控制器時請求的URL地址,如: http://www.example.com/Home/Valid/
public class HomeController :Controller { /// <summary> /// 定義Token,與微信公共平臺上的Token保持一致 /// </summary> private const string Token = "StupidMe"; /// <summary> /// 驗證簽名,檢驗是否是從微信服務器上發(fā)出的請求 /// </summary> /// <param name="model">請求參數模型 Model</param> /// <returns>是否驗證通過</returns> private bool CheckSignature(Model.FormatModel.WeChatRequestModel model) { string signature, timestamp, nonce, tempStr; //獲取請求來的參數 signature = model.signature; timestamp = model.timestamp; nonce = model.nonce; //創(chuàng)建數組,將 Token, timestamp, nonce 三個參數加入數組 string[] array = { Token, timestamp, nonce }; //進行排序 Array.Sort(array); //拼接為一個字符串 tempStr = String.Join("", array); //對字符串進行 SHA1加密 tempStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tempStr, "SHA1").ToLower(); //判斷signature 是否正確 if (tempStr.Equals(signature)) { return true; } else { return false; } } public void Valid(Model.FormatModel.WeChatRequestModel model) { //獲取請求來的 echostr 參數 string echoStr = model.echostr; //通過驗證 if (CheckSignature(model)) { if (!string.IsNullOrEmpty(echoStr)) { //將隨機生成的 echostr 參數 原樣輸出 Response.Write(echoStr); //截止輸出流 Response.End(); } } } }
以上就是ASP.NET MVC開發(fā)接入微信公共平臺的詳細內容,更多關于ASP.NET MVC接入微信公共平臺的資料請關注腳本之家其它相關文章!
相關文章
asp.net Repeater控件的說明及詳細介紹及使用方法
Repeater控件是Web 服務器控件中的一個容器控件,它使您可以從頁的任何可用數據中創(chuàng)建出自定義列表。2010-04-04深入理解Asp.net中DataBinder.Eval的用法總結
本篇文章是對Asp.net中DataBinder.Eval的用法進行了詳細的分析介紹,需要的朋友參考下2013-06-06Asp.net TextBox的TextChanged事件使用介紹
動態(tài)創(chuàng)建的控件是如何加載視圖狀態(tài),還提到ProcessPostData方法的調用,這里我就用TextBox的TextChanged事件來說說視圖數據的加載以及事件的觸發(fā)2012-12-12