您好,登錄后才能下訂單哦!
1. 您得從微信官方平臺注冊一個微信訂閱號:
https://mp.weixin.qq.com
2. 這個教程使用nodejs開發微信訂閱號對應的消息服務器,因此需要具備基本的nodejs開發技能。
登錄微信公眾號平臺 https://mp.weixin.qq.com , 使用菜單:Development->Basic configuration:
最重要的是在訂閱號的控制臺里指定一個消息服務器的url。如下圖所示。這個消息服務器的url從哪里來?
我會用nodejs開發一個服務器,部署到Salesforce的云平臺Heroku上。
當您的微信訂閱號的粉絲通過微信App同您的訂閱號交互,比如發消息,或者使用您的微信訂閱號自定義菜單時,這些請求就會通過微信App轉發到您的nodejs消息服務器上。
但是當您配置的消息服務器要真正起作用,還得先通過一個驗證。驗證流程在微信官網上: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5
微信官網上提供的驗證流程的實現是用Python寫的,我提供了一個nodejs版本的實現。
我們在微信訂閱號的控制臺點了Submit按鈕之后,微信框架會發送一個HTTP請求到你的微信服務器去,請求明細如下:
https://<your server url>/?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137×tamp=1512810825&nonce=384289189
您的微信服務器的職責就是:按照上面流程圖定義的規范,計算根據您微信訂閱號的token(令牌),時間戳和nonce字段,計算出一個簽名值,然后同發到消息服務器的簽名值做對比。如果對比發現兩者不一致,會收到錯誤消息“Token authentication failed”。
下面是如何用nodejs開發使得消息服務器通過驗證流程。
1. 創建一個新的nodejs工程,下列package.json文件里高亮部分是用于消息服務器通信的重要部分。
主要的邏輯位于server.js里。
2. Server.js的主要代碼:
var express = require('express');var routesEngine = require('./index.js');var app = express(); routesEngine(app); app.listen(process.env.PORT || 3000, function () {console.log('Listening on port, process.cwd(): ' + process.cwd() ); }); In implementation of index.js, now we need to implement verification process:var request = require('request');var jsSHA = require('jssha');module.exports = function (app) { app.route('/').get(function(req,res){var token="jerry"; // replace it with your own tokenvar signature = req.query.signature, timestamp = req.query.timestamp, echostr = req.query.echostr, nonce = req.query.nonce; oriArray = new Array(); oriArray[0] = nonce; oriArray[1] = timestamp; oriArray[2] = token; oriArray.sort();var original = oriArray.join('');var shaObj = new jsSHA("SHA-1", 'TEXT'); shaObj.update(original);var scyptoString = shaObj.getHash('HEX');console.log("calculated string: " + scyptoString);if (signature == scyptoString) { res.send(echostr); } else { res.send('bad token'); } }); };
3. 將該nodejs應用部署到Heroku平臺。具體操作參考Heroku的操作手冊。
部署成功后,到微信訂閱號操作臺點Submit按鈕提交驗證請求,然后在Heroku應用的控制臺上能觀察到我們自己的微信服務器計算出的signature和微信平臺發送的signature完全一致,認證通過。
回到訂閱號的操作臺,發現我們的nodejs微信服務器認證成功,可以做開發了。
后續Jerry會帶來更多微信訂閱號開發的內容。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。