使用NodeJS来进行微信公众号开发测试号服务器
1. 测试号管理
申请测试号的地址微信公众平台 (qq.com)
这里有相关的 信息需要填写,但是怎么填写呢?既然是测试号,肯定没有正式的服务器什么的,可以使用本地服务器进行相关的测试。
2. 内网穿透工具
我这里有使用到一个内网的穿透工具内网穿透 - 花生壳管理 (oray.com)
记得http://xxxxxx的端口为80,https://xxxxxxx的端口为443.
3. NodeJS 代码
相关的NodeJS环境什么的再次就不再赘述了,网上有相关的教程记得把环境搭建好。
主要的代码如下。
const express = require('express');
const app = express();
const sha1 = require("sha1");
// 创建本地的服务器
app.listen(80, '0.0.0.0',function(req,res){
console.log('启动本地测试服务器'+'http://localhost:80');
})
app.use((req,res,next)=>{
// GET请求携带参数是个参数signature,timestamp,nonce,echostr
console.log('req',req.query);
const {signature,timestamp,nonce,echostr} = req.query;
// 服务器的token
const token = "TOKEN";
// 将token、timestamp、nonce三个参数进行字典序排序
const arrSort = [token,timestamp,nonce];
arrSort.sort();
// 将三个参数字符串拼接成一个字符串进行sha1加密,npm install --save sha1
const str = arrSort.join("");
const shaStr = sha1(str);
// 获得加密后的字符串可与signature对比,验证标识该请求来源于微信服务器
if(shaStr === signature){
// 确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效
res.send(echostr);
}else{
//否则接入失败。
res.send("no");
}
});
相关的json配置如下.
因为每次服务器重启比较麻烦,所以采用了热更新的方式。每次ctrl+s就会更新。
"start": "nodemon index.js"
{
"name": "node_demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"mysql": "^2.18.1",
"request": "^2.88.2",
"sha1": "^1.1.1"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon index.js"
},
"author": "",
"license": "ISC"
}
4. 配置完成
配置完成后,在测试号填写相关的信息然后提交。本地终端会打印相应的信息。