node下的微信之路-1:介面資訊配置

三月懶驢發表於2016-03-08

分享給每一個想統治宇宙的Jser。

介面資訊配置

前言:做外包遇到最多的就是基於微信的H5頁面。做這種頁面js-sdk引入是必須的。萬惡的TX把這個東西做到了繫結域名,要計算驗證才能使用。我苦逼的小小jser又如何去慢慢一步步摸索過來的呢。聽我慢慢訴說。

  • 首先你的申請一個測試者賬號,點我大跳轉門--> 傳送門

    • 第一項“測試號資訊”有你的app ID和appsercet。先不要管他。

    • 第二項的介面配置和資訊,這裡填寫的URL,就是你的伺服器IP:http:// +IP地址。
      Token就是你和微信約定好的一個字串,你喜歡填寫什麼就填寫什麼。隨意填寫的一個字串。後面解析請求的時候用到(這一步先填寫好,不能按提交那麼快)

    • 第三項:JS介面安全域名。這個是萬惡的根源,填上你自己的域名。最好就是根域名,這樣的話,在這個根之下的域名的頁面都能用到。

    • 下面的幾項和這次的無關,不說了,跳回去我們的sublime編輯程式碼去。

  • 回到我們的程式碼去,伺服器後臺用node+express的,首先我們要處理上面沒有確認的一個配置資訊。當我們填好URL+Token之後點選提交的話,微信會向你的伺服器傳送資訊,你要解析一遍之後返回正確的資訊,這一步的配置才能成功。
    所以我們就在router裡面加一個get的處理
    //來自微信的資訊
    router.get(`/`,function(req,res,next){});
    //不是來自微信的資訊
    router.get(`/`, function(req, res, next) {

       res.render(`index`, {title:`hello !`});

    });

    這時候get過來的資訊有四個:

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

整個驗證過程簡單來說就是這麼一個過程:

通過檢驗signature對請求進行校驗: 若確認此次GET請求來自微信伺服器,請原樣返回>echostr引數內容,則接入生效,成為開發者成功, 否則接入失敗。

加密/校驗流程如下:

1.將token(伺服器內定義)、timestamp、nonce三個引數進行字典序排序
2.將三個引數字串拼接成一個字串進行sha1加密
3.開發者獲得加密後的字串可與signature對比,標識該請求來源於微信

好了,前面說了那麼多廢話,現在開始進行程式碼,show your 本事 in code
預熱工作:因為裡面用sha1加密,使用crypto模組是個不錯的選擇

npm install crypto --save

來到router裡面,我們引入這個模組

var crypto = require(`crypto`);

然後開始處理資訊了

var TOKEN = `sanyuelanv`;
/*來自微信的資訊*/
router.get(`/`,function(req,res,next){
     var query = req.query;
    /*取出四個值*/
    var signature = query.signature;
    var echostr = query.echostr;
    var timestamp = query[`timestamp`];
    var nonce = query.nonce;
    /*拼成陣列,字典排序,再拼接*/
    var tmpArr = [TOKEN,timestamp,nonce];
    tmpArr.sort();
    var tmpStr = tmpArr[0] + tmpArr[1] + tmpArr[2];
    /*進行加密*/
    var shasum = crypto.createHash(`sha1`);
    shasum.update(tmpStr);
    var shaResult = shasum.digest(`hex`);
    //來自微信的請求,就返回echostr
    if (shaResult == signature){res.send(echostr);}
    else{next();}
});

這一段程式碼下來,我們提交到伺服器之後,reload一下,再回到微信測試者帳號的頁面,把前面配置的確認確定就提交上去,這是就OK了!
下一篇文章再寫JSSDK驗證吧!

相關文章