最近在做公众号相关,所以自己从头了解了一下流程,其中appid,ip等数据为虚拟数据。
- 申请域名
- 域名解析
- 申请微信个人订阅号
- 在微信开发里面填写服务器配置
获取三个字段,AppID Token EncodingAESKey,在公众号的开发/基本配置/填写服务器配置 填写。
appid:wxa7a352b54d385772
appsecret:8db49d5176c1f0b2e01b2cb5902e54f6
access_token:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
接口返回-10000状态码是需要设置ip白名单
注意 服务器配置的token是自己随便设置的字符串,填写后暂时不要关闭该页面,也不要提交,在后面服务器代码里面的token填写为和这个token保持一致就行,启动服务器并且nginx配置完成后 提交微信的配置表单,并且启用就ok。
- 服务器安装node
ssh root@111.231.117.55
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash
yum install nodejs -y
- 创建工作目录
mkdir -p /data/release/weapp
进入目录
创建app.js和package.json
编写服务器代码app.js
全局安装pm2,局部安装erpress,wechat模块。
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}`);
- 安装nginx
NodeJs只是侦听的机器上的 5050 端口,我们使用 nginx 侦听 80 端口提供对外域名服务
yum install nginx -y
安装完成后使用nginx
启动nginx
此时访问http://111.231.117.55
可以看到Nginx的测试页面
- 配置反向代理
外网用户访问服务器的 Web 服务由 Nginx 提供,Nginx 需要配置反向代理才能使得 Web 服务转发到本地的 Node 服务。
Nginx 配置目录在/etc/nginx/conf.d
,我们在该目录创建 wechat.conf,编写 wechat.conf
server {
listen 80;
server_name www.example.com; # 改为第一步申请的域名
location / {
proxy_pass http://127.0.0.1:5050;
}
}
nginx -s reload 此时可以通过域名访问
- 提交之前微信服务器配置的页面。并启用。
- 在公众号聊天界面中发送消息,可以得到回复。