-
微信开发公众平台网址
![](https://img-blog.csdnimg.cn/img_convert/c74c6c4f800c5f648d759b4d5a8b2fab.png)
-
其中url 需要 搭建本地服务器 并利用copar 进行内网穿透。
2.1搭建本地服务器
可参考:express 搭建简易的本地服务器_express 本地-CSDN博客
// 引入express模块
var express = require('express');
// 获取服务实力对象
var app = express();
//===================第一:获得req.query===============================
app.use((req, res, next) => {
console.log(req.query);
res.send(111);
})
// 监听端口
app.listen(3000,err => {
if(!err) console.log('服务器已启动 端口号3000:::')
})
// 配置路由
app.post('/person',(req,res)=>{
res.json({
name:'zhangsan',
age:20
})
})
2.2下载cpolar - secure introspectable tunnels to localhost
2.2.1解压 到在本地创建文件夹D:\cpolar目录
2.2.2链接authertoken关联账号
2.2.3cpolar http 8080
![](https://img-blog.csdnimg.cn/img_convert/0a5824c4a1394dfaed8b39e5ef0fffae.png)
进行接口配置后 把res.query的数据存储
![](https://img-blog.csdnimg.cn/img_convert/c732b9619a2c75054e8170ac70ffc6ff.png)
调接口获得res.query 进行存储(验证消息是否是来自微信服务器的)
// 引入express模块
var express = require('express');
// 获取服务实力对象
var app = express();
//===================第一:获得req.query===============================
// app.use((req, res, next) => {
// console.log(req.query);
// res.send(111);
// })
//===================第二:获得req.query===============================
// 引入 sha1 模块将计算出的结果加密
const sha1 = require('sha1');
// 配置对象,存我们需要的内容
const config = {
token: "ajshfkhdsfkjhlkjfwuyewueyoweuishfjdfhjskd",
appID: "wx1c5d829a0ba23423c7bcb234234",
appsevret: "a85ac6df09ebe03ebderwb9dd079b6b7757234234234"
}
app.use((req, res, next) => {
console.log(req.query);
// 解构赋值
const { signature, echostr, timestamp, nonce } = req.query;
const { token } = config;
res.set('Content-Type','text/plain')
// console.log('测试' + echostr);
//将参与微信加密签名的三个参数(传来的:timestamp、nonce、自己设置的:token),组合到一起,按照字典排序,并组合在一起形成一个数组
const arr = [timestamp, nonce, token];
// 排序
const arrSort = arr.sort();
console.log('arrSort:' + arrSort);
// 将数组所有参数拼接
const str = arr.join('');
console.log('str:' + str);
// 加密
const sha1Str = sha1(str);
console.log('加密后:' + sha1Str);
// 判断是否相同
if (sha1Str === signature) {
res.send(req.query.echostr)
} else {
res.end('error');
console.log('error');
}
});
// 监听端口
app.listen(3000,err => {
if(!err) console.log('服务器已启动 端口号3000:::')
})
tip:
-
举例:1deb32c8.r8.cpolar.top
![](https://img-blog.csdnimg.cn/img_convert/a5b9900307df94a87b81abc1edf3a41a.png)
2.
![](https://img-blog.csdnimg.cn/img_convert/500adfdd635f386ea99a3f0580b8fd22.png)
补充: 如果遇到跨域问题↓
NodeJS 的相关包管理器提供了实现 CORS 的第三方中间件
npm install cors
↓使用参考
// 引入express模块
var express = require('express');
// 获取服务实力对象
var app = express();
const cors = require('cors');
//===================第一:获得req.query===============================
app.use(cors());
app.post('/person',(req,res)=>{
res.json({
name:'zhangsan',
age:20
})
})
// 监听端口
app.listen(3000,err => {
if(!err) console.log('服务器已启动 端口号3000:::')
})
// 配置路由