1. 準備域名和服務器
微信公衆平臺需要配置服務器地址 URL 訪問,在實驗開始之前,我們要準備域名。
購買服務器(騰訊雲)
域名註冊
域名解析
域名設置解析後需要過一段時間纔會生效,通過 ping 命令檢查域名是否生效 ,如:
ping 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
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - yum install nodejs -y
安裝完成後,使用下面的命令測試安裝結果
node -v
編寫 HTTP Server 源碼
創建工作目錄
使用下面的命令在服務器創建一個工作目錄:
mkdir -p /data/release/weapp
進入此工作目錄
cd /data/release/weapp
創建 package.json
在剛纔創建的工作目錄創建
package.json
,添加我們服務器包的名稱和版本號,可參考下面的示例。{ "name": "weapp", "version": "1.0.0" }
添加 Server 源碼
在工作目錄創建
app.js
,使用Express.js
來監聽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
在開始之前,我們先來安裝 PM2
npm install pm2 --global
PM2 安裝時間可能稍長,請耐心等候
安裝 Express
我們的服務器源碼裏使用到了 Express 模塊,下面的命令使用 NPM 來安裝 Express
cd /data/release/weapp npm install express --save
安裝 Wechat
我們的服務器源碼裏使用到了 Wechat 模塊,下面的命令使用 NPM 來安裝 Wechat
cd /data/release/weapp npm install wechat --save
啓動服務
安裝完成後,使用 PM2 來啓動 HTTP 服務
cd /data/release/weapp pm2 start app.js
現在,您的 HTTP 服務已經在 http://yourdomain.com:5050 運行要查看服務輸出的日誌,可以使用下面的命令:
pm2 logs
如果要重啓服務,可以使用下面的命令:
pm2 restart app
4. 搭建 nginx 對外服務
NodeJs只是偵聽的機器上的 5050 端口,我們使用 nginx 偵聽 80 端口提供對外域名服務
安裝 Nginx
在 CentOS 上,可直接使用
yum
來安裝 Nginxyum install nginx -y
安裝完成後,使用
nginx
命令啓動 Nginx:nginx
此時,訪問 http://yourdomain.com 可以看到 Nginx 的測試頁面
配置 HTTP 反向代理
外網用戶訪問服務器的 Web 服務由 Nginx 提供,Nginx 需要配置反向代理才能使得 Web 服務轉發到本地的 Node 服務。
Nginx 配置目錄在
/etc/nginx/conf.d
,我們在該目錄創建wechat.conf
,參考示例代碼如下:server { listen 80; server_name www.example.com; # 改爲第一步申請的域名 location / { proxy_pass http://127.0.0.1:5050; } }
重新加載配置
nginx -s reload
在瀏覽器通過 http 的方式訪問你解析的域名來測試 HTTP 是否成功啓動
5. 使用Server端回覆微信消息
提交服務端配置
我們將第二步微信公衆平臺中保留的表單提交,同時將
基本配置
-服務器配置
啓用關注、發送與消息回覆
首先通過二維碼關注微信訂閱號
在聊天界面向微信公衆號發送一條消息
最終我們會回到一條
你好,Hello World!
的回覆大功搞成