1. 准备域名和服务器
微信公众平台需要配置服务器地址 URL 访问,在实验开始之前,我们要准备域名。
购买服务器(腾讯云)
域名注册
域名解析
域名设置解析后需要过一段时间才会生效,通过 ping 命令检查域名是否生效 ,如:
1ping www.yourdomain.com如果 ping 命令返回的信息中含有你设置的解析的 IP 地址,说明解析成功。
2. 申请微信个人订阅号
在开始搭建我们的订阅号服务器之前,需要先拿到订阅号相关信息。
注册开发者账号
如果你还不是微信订阅号开发者,请先在微信公众平台注册:
https://mp.weixin.qq.com获取微信订阅号公众平台认证字段信息
我们需要获取3个字段:
AppID
Token
EncodingAESKey
。登录微信公众平台,依次进入
开发
-基本配置
可以拿到 AppID。在
基本配置
-服务器配置
-修改配置
表单中:
URL 填第一步申请的域名;Token 用户根据提示填写,用于后面校验服务端合法性;
EncodingAESKey 点击
随机生成
按钮来生成。当点击表单
提交
按钮时,微信会通过 Token 来校验 URL 的合法性,这个我们在后面步骤实现,此界面暂时保留不关闭。
3. 搭建 HTTP 服务
下面的步骤,将带大家在服务器上使用 Node 和 Express 搭建一个 HTTP 服务器
安装 NodeJS 和 NPM
使用下面的命令安装 NodeJS 和 NPM
12curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -yum install nodejs -y安装完成后,使用下面的命令测试安装结果
1node -v编写 HTTP Server 源码
创建工作目录
使用下面的命令在服务器创建一个工作目录:
1mkdir -p /data/release/weapp进入此工作目录
1cd /data/release/weapp创建 package.json
在刚才创建的工作目录创建
package.json
,添加我们服务器包的名称和版本号,可参考下面的示例。1234{"name": "weapp","version": "1.0.0"}添加 Server 源码
在工作目录创建
app.js
,使用Express.js
来监听5050
端口,可参考下面的示例代码(注:请将app.js
文件中的token
/appid
/encodingAESKey
等配置项替换为您的订阅号对应的取值)。1234567891011121314151617181920212223242526272829303132// 引用 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
在开始之前,我们先来安装 PM2
1npm install pm2 --globalPM2 安装时间可能稍长,请耐心等候
安装 Express
我们的服务器源码里使用到了 Express 模块,下面的命令使用 NPM 来安装 Express
12cd /data/release/weappnpm install express --save安装 Wechat
我们的服务器源码里使用到了 Wechat 模块,下面的命令使用 NPM 来安装 Wechat
12cd /data/release/weappnpm install wechat --save启动服务
安装完成后,使用 PM2 来启动 HTTP 服务
12cd /data/release/weapppm2 start app.js现在,您的 HTTP 服务已经在 http://yourdomain.com:5050 运行要查看服务输出的日志,可以使用下面的命令:
1pm2 logs如果要重启服务,可以使用下面的命令:
1pm2 restart app
4. 搭建 nginx 对外服务
NodeJs只是侦听的机器上的 5050 端口,我们使用 nginx 侦听 80 端口提供对外域名服务
安装 Nginx
在 CentOS 上,可直接使用
yum
来安装 Nginx1yum install nginx -y安装完成后,使用
nginx
命令启动 Nginx:1nginx此时,访问 http://yourdomain.com 可以看到 Nginx 的测试页面
配置 HTTP 反向代理
外网用户访问服务器的 Web 服务由 Nginx 提供,Nginx 需要配置反向代理才能使得 Web 服务转发到本地的 Node 服务。
Nginx 配置目录在
/etc/nginx/conf.d
,我们在该目录创建wechat.conf
,参考示例代码如下:12345678server {listen 80;server_name www.example.com; # 改为第一步申请的域名location / {proxy_pass http://127.0.0.1:5050;}}重新加载配置
1nginx -s reload在浏览器通过 http 的方式访问你解析的域名来测试 HTTP 是否成功启动
5. 使用Server端回复微信消息
提交服务端配置
我们将第二步微信公众平台中保留的表单提交,同时将
基本配置
-服务器配置
启用关注、发送与消息回复
首先通过二维码关注微信订阅号
在聊天界面向微信公众号发送一条消息
最终我们会回到一条
你好,Hello World!
的回复大功搞成