nodejs中微信公众号开发-接口配置和签名验证

版权声明:本文为 zzwwjjdj1(意外金喜) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/zzwwjjdj1/article/details/52222137

意外金喜的博客 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浏览器插件配置,

-- 验证签名

点击提交后:

后台输出参数:

微信签名认证算是代码的第一步,迈出去了.后面接着坑.偷笑
项目结构:

这个过程就添加了2个文件,修改了app.js文件

意外金喜的博客 http://blog.csdn.net/zzwwjjdj1

猜你喜欢

转载自blog.csdn.net/zzwwjjdj1/article/details/52222137