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完全一致,认证通过。