微信回調模式的官方文檔。php
開發語言:C#(微信相關功能代碼能夠從官網下載)api
首先,必需要明確幾個參數,這幾個參數在微信企業號中,每次調用都會使用到。微信
一、msg_signature:簽名(已加密,加密方法可從官網下載)加密
二、timestamp:時間戳spa
三、nonce:隨機數code
四、echostr:隨機字符串(已加密)對象
注:前面3個參數每次都會自動帶上,屬於必填項,第4個參數只有在首次校驗URL時(意思就是點下圖中的「保存」按鈕時,可能不許確,先這樣理解吧)纔會帶上。blog
針對上圖的說明:開發
一、URL:任意網址(推薦使用二級域名)文檔
二、Token:隨意字符,可點後面的「隨機獲取」來隨機填入幾個字符,也能夠本身輸入,我就是輸入的公司英文名稱
三、EncodingAESKey:有必定的格式要求,懶得輸的能夠點後面的「隨機獲取」,我就是使用這一項
四、在點擊上圖的「保存」按鈕時,頁面會根據圖中框內輸入的內容,自動生成最終請求的URL地址,同時,會自動附帶上本文開始時說的那四個參數,並向該URL地址發起GET請求
五、只有上圖的「保存」按鈕執行成功後,纔會看到以下圖所示:
開始上代碼
首先,在Web.config中添加幾個AppSetting:
1 <add key="WXCorpID" value="從配置頁面獲取" /> 2 <add key="WXCorpToken" value="自行輸入" /> 3 <add key="WXCorpAESKey" value="自行輸入" />
說明:
一、WXCorpID:企業號惟一的ID,能夠從設置頁面複製過來,以下圖所示
二、WXCorpToken:必定要和配置界面的Token框內輸入的一致
三、WXCorpAESKey:必定要和配置界面的EncodingAESKey框內輸入的一致
其次,配置一個WebAPI的路徑:
1 config.Routes.MapHttpRoute(name: "VerifyApi", routeTemplate: "api", defaults: new { controller = "Verify" });
而後,創建一個VerifyController,並添加方法:
1 [HttpGet] 2 public void VerifyURL() 3 { 4 // 本文頂部說的四個參數,最好進行URL解碼 5 var signature = HttpUtility.UrlDecode(HttpContext.Current.Request["msg_signature"] ?? string.Empty); 6 var timestamp = HttpUtility.UrlDecode(HttpContext.Current.Request["timestamp"] ?? string.Empty); 7 var nonce = HttpUtility.UrlDecode(HttpContext.Current.Request["nonce"] ?? string.Empty); 8 var echo = HttpUtility.UrlDecode(HttpContext.Current.Request["echostr"] ?? string.Empty); 9 10 // 驗證結束後的返回值,必定不要帶引號!!! 11 var echoResult = string.Empty; 12 13 // 微信提供的驗證對象(參數爲AppSetting中的三個值) 14 var crypt = new WXBizMsgCrypt(AppSettings.WX_CORP_TOKEN, AppSettings.WX_CORP_AES_KEY, AppSettings.WX_CORP_ID); 15 16 // 微信提供的驗證方法 17 var result = crypt.VerifyURL(signature, timestamp, nonce, echo, ref echoResult); 18 if (result != 0) 19 { 20 return; 21 } 22 23 // 將驗證後的返回值寫入響應流,這樣能夠去掉引號!!! 24 HttpContext.Current.Response.Clear(); 25 HttpContext.Current.Response.Write(echoResult); 26 HttpContext.Current.Response.End(); 27 }
最後,在企業號界面上點「保存」按鈕,便可驗證,通常來講,就能夠經過了。