微信公众号后台自带的功能可能有时不能满足我们的需要,这时候我们就需要搭建自己的服务端。本实验带您从零开始,基于 NodeJS 搭建起一个可以支撑微信订阅号自动回复的服务,包括 HTTP 部署、后台模块服务。
软件环境 CentOS 7.2 64 位
准备域名
119.29.40.188
ping
命令检查域名是否生效 ,如:ping www.yourmpdomain.com
https://mp.weixin.qq.com
开发
- 基本配置
可以拿到 AppID。基本配置
- 服务器配置
- 修改配置
表单中:随机生成
按钮来生成。提交
按钮时,微信会通过 Token 来校验 URL 的合法性,这个我们在后面步骤实现,此界面暂时保留不关闭。安装 NodeJS 和 NPM
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - yum install nodejs -y
node -v
创建工作目录
mkdir -p /data/release/weapp
cd /data/release/weapp
创建 package.json
{
"name": "weapp",
"version": "1.0.0"
}
Ctrl + S
保存文件添加 Server 源码
5050
端口
,可参考下面的示例代码(注:请将 app.js
文件中的token
/appid
/encodingAESKey
等配置项替换为您的订阅号对应的取值)。// 引用 express 来支持 HTTP Server 的实现
const express = require('express');
// 引用微信公共平台自动回复消息接口服务中间件
var wechat = require('wechat');
// 创建一个 express 实例
const app = express();
// 配置微信公众平台参数,在教程第二步中获取
var config = {
token: 'your token', // 填第二步中获取的 `token`
appid: 'your appid', // 填第二步中获取的 `appid`
encodingAESKey: 'your encodingAESKey', // 填第二步中获取的 `encodingAESKey`
checkSignature: true // 可选,默认为true。由于微信公众平台接口调试工具在明文模式下不发送签名,所以如要使用该测试工具,请将其设置为false
};
app.use(express.query());
app.use('/', wechat(config, function (req, res, next) {
res.reply({
content: '你好,Hello World!',
type: 'text'
});
}));
// 监听端口,等待连接
const port = 5050;
app.listen(port);
// 输出服务器启动日志
console.log(`Server listening at http://127.0.0.1:${port}`);
运行 HTTP 服务
安装 PM2
npm install pm2 --global
安装 Express
cd /data/release/weapp npm install express --save
安装 Wechat
cd /data/release/weapp npm install wechat --save
启动服务
cd /data/release/weapp pm2 start app.js
pm2 logs
pm2 restart app
安装 Nginx
yum
来安装 Nginxyum install nginx -y
nginx
命令启动 Nginx:nginx
server {
listen 80;
server_name www.example.com; # 改为第一步申请的域名
location / {
proxy_pass http://127.0.0.1:5050;
}
}
Ctrl + S
保存配置文件,让 Nginx 重新加载配置使其生效:nginx -s reload
基本配置
- 服务器配置
启用你好,Hello World!
的回复