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


微信回調模式的官方文檔

開發語言:C#(微信相關功能代碼可以從官網下載

首先,必須要明確幾個參數,這幾個參數在微信企業號中,每次調用都會使用到。

1、msg_signature:簽名(已加密,加密方法可從官網下載

2、timestamp:時間戳

3、nonce:隨機數

4、echostr:隨機字符串(已加密)

注:前面3個參數每次都會自動帶上,屬於必填項,第4個參數只有在首次校驗URL時(意思就是點下圖中的“保存”按鈕時,可能不准確,先這樣理解吧)才會帶上。

針對上圖的說明:

1、URL:任意網址(推薦使用二級域名)

2、Token:隨意字符,可點后面的“隨機獲取”來隨機填入幾個字符,也可以自己輸入,我就是輸入的公司英文名稱

3、EncodingAESKey:有一定的格式要求,懶得輸的可以點后面的“隨機獲取”,我就是使用這一項

4、在點擊上圖的“保存”按鈕時,頁面會根據圖中框內輸入的內容,自動生成最終請求的URL地址,同時,會自動附帶上本文開始時說的那四個參數,並向該URL地址發起GET請求

5、只有上圖的“保存”按鈕執行成功后,才會看到如下圖所示:

開始上代碼

首先,在Web.config中添加幾個AppSetting:

1 <add key="WXCorpID" value="從配置頁面獲取" />
2 <add key="WXCorpToken" value="自行輸入" />
3 <add key="WXCorpAESKey" value="自行輸入" />

說明:

1、WXCorpID:企業號唯一的ID,可以從設置頁面復制過來,如下圖所示

2、WXCorpToken:一定要和配置界面的Token框內輸入的一致

3、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 }

最后,在企業號界面上點“保存”按鈕,即可驗證,一般來說,就可以通過了。


免責聲明!

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



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