微信開發筆記(一)通過.net如何實現接入微信


微信公眾平台,給個人、企業和組織提供業務服務與用戶管理能力的全新服務平台。現在基本上每個地方都可以看到微信存在,動不動就是讓你掃一下加下微信。

經常遇到這樣情況,“到一家餐館吃飯,拿了個號,前台服務引導我們說掃下微信,就可實時知道你前面還有多少人了,現在叫到哪個號了”,對於大部分人來說,都覺得好神奇,其實如果你是一個開發,而且了解微信中的一些接口知識,你也完全可以搞出這么一個東西來。

總之,微信的應用現在到處都是,作為開發的你是否想一試??

 

本文主題,如何來接入微信公眾平台呢??接入的目的實際就是用戶每次向公眾號發送消息、或者點擊某個菜單,或者掃一個二維碼,都會向你接入操作中填寫的地址推送消息。

1、接入之前,先好好的看下微信提供的文檔。

微信公眾平台文檔地址:http://mp.weixin.qq.com/wiki/home/

         從左側導航選擇“開始開發”-->“接入指南”,仔細看下吧。

 

2、正式開始接入,這里以測試號(接口文檔“開始開發”-->“接口測試號申請”掃一掃開通)為例,通過.net如何來實現接入微信。

a)填寫服務器配置,如下圖(正式號也類似)

   URL:開發者用來接收微信消息和事件的接口URL,這里類似:http://yousitename.com/weixin.aspx

   Token:可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)

 

b)驗證服務器地址

 提交服務器配置信息后,微信服務器將發送GET請求到填寫的服務器地址URL上(也就是http://yousitename.com/weixin.aspx),GET請求攜帶四個參數:

signature     微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
timestamp   時間戳
nonce         隨機數
echostr       隨機字符串

開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。

加密/校驗流程如下:
1. 將token、timestamp、nonce三個參數進行字典序排序
2. 將三個參數字符串拼接成一個字符串進行sha1加密
3. 開發者獲得加密后的字符串可與signature對比,標識該請求來源於微信

 直接貼上.net校驗的代碼,復制到page_load中:

if (Request.HttpMethod.ToLower() == "get")
{
    string token = "wxtest";   //配置時寫的token
    
    //從微信服務器 傳遞過來的數據
    string signature = Request.QueryString["signature"]; //微信加密簽名
    string timestamp = Request.QueryString["timestamp"];//時間戳
    string nonce = Request.QueryString["nonce"];//隨機數
    string echostr = Request.QueryString["echostr"];   //隨機字符串

    //將token、timestamp、nonce三個參數進行字典序排序
    string[] arr = { token, timestamp, nonce };
    Array.Sort(arr);

    //將三個參數字符串拼接成一個字符串進行sha1加密
    string str = string.Join("", arr);
    str = FormsAuthentication.HashPasswordForStoringInConfigFile(str, "sha1").ToLower();

    //開發者獲得加密后的字符串可與signature對比,標識該請求來源於微信,如果一致則成功
    if (str == signature)
    {
        Response.Write(echostr);
    }
}

 

 

 c)接入成功。驗證URL有效性成功后即接入生效,成為開發者。此后用戶每次向公眾號發送消息、或者產生自定義菜單點擊事件時,開發者填寫的服務器配置URL將得到微信服務器推送過來的消息和事件,然后開發者可以依據自身業務邏輯進行響應,例如回復消息等。

 


免責聲明!

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



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