微信程序開發系列教程(一)開發環境搭建

1. 您得從微信官方平臺註冊一個微信訂閱號:javascript

https://mp.weixin.qq.comjava

2. 這個教程使用nodejs開發微信訂閱號對應的消息服務器,所以須要具有基本的nodejs開發技能。node

登陸微信公衆號平臺https://mp.weixin.qq.com, 使用菜單:Development->Basic configuration:express

最重要的是在訂閱號的控制檯裏指定一個消息服務器的url。以下圖所示。這個消息服務器的url從哪裏來?json

我會用nodejs開發一個服務器,部署到Salesforce的雲平臺Heroku上。服務器

當您的微信訂閱號的粉絲經過微信App同您的訂閱號交互,好比發消息,或者使用您的微信訂閱號自定義菜單時,這些請求就會經過微信App轉發到您的nodejs消息服務器上。微信

可是當您配置的消息服務器要真正起做用,還得先經過一個驗證。驗證流程在微信官網上: https://mp.weixin.qq.com/wiki...app

微信官網上提供的驗證流程的實現是用Python寫的,我提供了一個nodejs版本的實現。框架

咱們在微信訂閱號的控制檯點了Submit按鈕以後,微信框架會發送一個HTTP請求到你的微信服務器去,請求明細以下:ssh

https://<your server url>/?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137&timestamp=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 token

var 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的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼:

相關文章
相關標籤/搜索