微信,emmm……
0x00.前言
0x01.引用
1.0 准备域名
微信公众平台需要配置服务器地址URL
访问,在实验开始之前,我们要准备域名。
1.1 域名注册
如果您还没有域名,可以在腾讯云上选购,过程可以参考下面的视频。
1.2 域名解析
域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的IP
为:119.29.143.246
在腾讯云购买的域名,可以到控制台添加解析记录
域名设置解析后需要过一段时间才会生效,通过ping
命令检查域名是否生效(注意替换下面命令中的www.yourmpdomain.com
为您自己的注册的域名),如:ping www.yourmpdomain.com
如果ping
命令返回的信息中含有你设置的解析的IP
地址,说明解析成功。
2.0 申请微信个人订阅号
在开始搭建我们的订阅号服务器之前,需要先拿到订阅号相关信息。
2.1 注册开发者账号
如果你还不是微信订阅号开发者,请先在微信公众平台注册:https://mp.weixin.qq.com
若您已注册,请点击下一步。
2.2 获取微信订阅号公众平台认证字段信息
我们需要获取3个字段:AppID
Token
EncodingAESKey
。
登录微信公众平台,依次进入开发 - 基本配置
可以拿到AppID
。
在基本配置 - 服务器配置 - 修改配置
表单中:URL
填第一步申请的域名;Token
用户根据提示填写,用于后面校验服务端合法性;EncodingAESKey
点击随机生成
按钮来生成。
当点击表单提交按钮时,微信会通过Token
来校验URL
的合法性,这个我们在后面步骤实现,此界面暂时保留不关闭。
3.0 搭建HTTP
服务
下面的步骤,将带大家在服务器上使用 Node 和 Express 搭建一个 HTTP 服务器
3.1 安装NodeJS
和NPM
使用下面的命令安装NodeJS
和NPM
yum install nodejs npm -y
安装完成后,使用下面的命令测试安装结果node -v
emmm……又翻车了
3.2 编写HTTP Server
源码
3.2.1 创建工作目录
使用下面的命令在服务器创建一个工作目录:mkdir -p /data/release/weapp
进入此工作目录cd /data/release/weapp
3.2.2 创建package.json
在刚才创建的工作目录创建package.json
,添加我们服务器包的名称和版本号,可参考下面的示例。
1 | { |
完成后,使用Ctrl+S保存文件
3.2.3 添加Server
源码
在工作目录创建app.js
,使用Express.js
来监听5050
端口(本实验会以5050
端口的打开作为实验步骤完成的依据,为了后面的实验步骤顺利进行,请不要使用其它端口号)
,可参考下面的示例代码(注:请将app.js
文件中的token/appid/encodingAESKey
等配置项替换为您的订阅号对应的取值)。
1 | // 引用 express 来支持 HTTP Server 的实现 |
3.3 运行HTTP
服务
3.3.1 安装PM2
在开始之前,我们先来安装PM2
(我们使用PM2
来进行Node
进程的运行、监控和管理)npm install pm2 --global
PM2
安装时间可能稍长,请耐心等候(NPM
仓库在国内访问速度可能不太理想,如果实在太慢可以尝试使用CNPM
的Registry
进行安装:npm install pm2 -g --registry=https://r.cnpmjs.org/
)
3.3.2 安装Express
我们的服务器源码里使用到了Express
模块,下面的命令使用NPM
来安装Express
cd /data/release/weapp
npm install express --save
3.3.3 安装Wechat
我们的服务器源码里使用到了Wechat
模块,下面的命令使用NPM
来安装Wechat
cd /data/release/weapp
npm install wechat --save
3.3.4 启动服务
安装完成后,使用PM2
来启动HTTP
服务cd /data/release/weapp
pm2 start app.js
现在,您的HTTP
服务已经在http://119.29.143.246:5050
运行
要查看服务输出的日志,可以使用下面的命令:pm2 logs
如果要重启服务,可以使用下面的命令:pm2 restart app
4.0 搭建nginx
对外服务
NodeJs
只是侦听的机器上的5050
端口,我们使用nginx
侦听80
端口提供对外域名服务
安装Nginx
在CentOS
上,可直接使用yum
来安装Nginx
yum install nginx -y
安装完成后,使用nginx
命令启动Nginx
:nginx
此时,访问http://119.29.143.246
可以看到Nginx
的测试页面(如果无法访问,请重试用nginx -s reload
命令重启Nginx
)
4.1 配置HTTP
反向代理
外网用户访问服务器的Web
服务由Nginx
提供,Nginx
需要配置反向代理才能使得Web
服务转发到本地的Node
服务。Nginx
配置目录在/etc/nginx/conf.d
,我们在该目录创建wechat.conf
1 | server { |
按Ctrl+S保存配置文件,让Nginx
重新加载配置使其生效:nginx -s reload
在浏览器通过http
的方式访问你解析的域名来测试HTTP
是否成功启动
5.0 使用Server
端回复微信消息
提交服务端配置
我们将第二步微信公众平台中保留的表单提交,同时将基本配置 - 服务器配置
启用
5.1 关注、发送与消息回复
首先通过二维码关注微信订阅号
在聊天界面向微信公众号发送一条消息
最终我们会回到一条你好,Hello World!
的回复