微信企業號開發(1)WebAPI在回調模式中的URL驗證

微信回調模式的官方文檔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 }

最後,在企業號界面上點「保存」按鈕,便可驗證,通常來講,就能夠經過了。

相關文章
相關標籤/搜索