十一之后的空窗期,想静下来写点东西,不知道能支撑到最后嘛~~~~~~~~~~~~~大家一起共勉
参照:
http://www.jb51.net/article/110747.htm
https://www.cnblogs.com/zcy123-com/p/6922724.html
https://www.cnblogs.com/xuange306/p/4971702.html
准备工作:
- 申请微信公众号
- 安装、搭建node环境
- 安装node.js(https://nodejs.org/en/download/)
- 打开cmd:
node -v //查看是否安装成功
npm install -g express //安装express模块(用于创建服务器,默认端口号3000)
npm install -g express-generator@4 //由于Express自4. 版本中将命令工具分离出来
接入微信公众平台:
1.创建Node.js 项目:
cmd:进入项目存放位置,执行express wechat (命名随意)
cmd:进入到根目录下wechat,执行npm i
接下来就是验收成果:
启动项目 cmd:npm run start
2.部署项目:
这里用了Sunny-Ngrok内网穿透,因为它提供免费内网穿透服务,免费服务器支持绑定自定义域名:
在官网注册:https://www.ngrok.cc
官网左侧开通一个免费隧道:开通教程
3.公众号的接入配置:
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮。
URL:刚刚映射好的外网地址
cmd:在根目录下执行 npm i crypto //安装crypto模块(加密解密)
在根目录下新建config.json,用来设置token:
{
"token":"****" // 填入你的token值
}
修改routes文件夹下的index.js文件,如下:
var express = require('express'), // 引入express模块
crypto = require('crypto'), // 引入加密模块
config = require('../config'), // 引入配置文件
router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
var signature = req.query.signature, // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp = req.query.timestamp, // 时间戳
nonce = req.query.nonce, // 随机数
echostr = req.query.echostr; // 随机字符串
// 1)将token、timestamp、nonce三个参数进行字典序排序
var array = [config.token, timestamp, nonce];
array.sort();
// 2)将三个参数字符串拼接成一个字符串进行sha1加密
var string = array.join(''),
hashCode = crypto.createHash('sha1'), // 创建加密类型
resultCode = hashCode.update(string, 'utf8').digest('hex'); // 对字符串进行加密
//3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if (resultCode === signature) {
res.send(echostr);
} else {
res.send('error!!!');
}
});
module.exports = router;
回到微信公众平台:
提交成功!!!
接入微信公众平台成功!!!