1. 程式人生 > >nodejs中微信公眾號開發-介面配置和簽名驗證

nodejs中微信公眾號開發-介面配置和簽名驗證

意外金喜的部落格 http://blog.csdn.net/zzwwjjdj1

-- 建立專案

nodejs微信開發,本文介紹的是在express中使用 express命令列建立專案 :點選這裡, 建立專案 : weixin_express

-- 使用的模組

sha1 : 加密模組
安裝 : npm install sha1 -save

-- 改造專案

--建立config資料夾

專案根目錄下建立config資料夾, 在config資料夾下新增config.json檔案,主要是appID,token等
這些基本引數在微訊號個人中心有,複製過來就是了.token必須和配置介面的token一致
{
	"wechat" : {
		"appID": "wx2e8f977800a3c2b8",
		"appSecret": "c99b4dde849ae0ae58e2026ce5f28f1a",
		"token": "wxexpress",
		"prefix": "https://api.weixin.qq.com/cgi-bin/",
		"mpPrefix": "https://mp.weixin.qq.com/cgi-bin/"
	}
}

-- 封裝簽名認證

專案根目錄下建立common資料夾,
common資料夾下新增utils.js檔案
var utils = {};
var sha1 = require('sha1');

//檢查微信簽名認證中介軟體
utils.sign = function (config){
	return function(req, res, next){
		config = config || {};
		var q = req.query;
	  var token = config.wechat.token;
	  var signature = q.signature; //微信加密簽名
		var nonce = q.nonce; //隨機數
		var timestamp = q.timestamp; //時間戳
		var echostr = q.echostr; //隨機字串
		/*
		 	1)將token、timestamp、nonce三個引數進行字典序排序
			2)將三個引數字串拼接成一個字串進行sha1加密
			3)開發者獲得加密後的字串可與signature對比,標識該請求來源於微信
		*/
		var str = [token, timestamp, nonce].sort().join('');
		var sha = sha1(str);
		if (req.method == 'GET') {

			if (sha == signature) {
				res.send(echostr+'')
			}else{
				res.send('err');
			}
		}
		else if(req.method == 'POST'){
			if (sha != signature) {
				return;
			}
			next();
		}
	}
};

module.exports = utils;

--引入中介軟體

在app.js檔案中引入utils.js和config.json,然後使用簽名認證中介軟體
認證的程式碼已經完了,注意app.js中程式碼的順序.

-- 介面配置

申請了一個微信測試賬號
這個url就是你專案的url了.在我的專案中對應的是 http://localhost:3000/,通過QQ瀏覽器外掛配置, 如何在本地進行微信公眾號的開發和除錯http://blog.csdn.net/zzwwjjdj1/article/details/52221493

-- 驗證簽名

點選提交後:
後臺輸出引數:
微信簽名認證算是程式碼的第一步,邁出去了.後面接著坑.偷笑 專案結構:
這個過程就添加了2個檔案,修改了app.js檔案

意外金喜的部落格 http://blog.csdn.net/zzwwjjdj1