搭建微信訂閱號後臺服務(筆記)
準備域名
微信公眾平臺需要配置伺服器地址 URL 訪問,在實驗開始之前,我們要準備域名。
域名註冊
如果您還沒有域名,可以在騰訊雲上選購,過程可以參考下面的視訊。
域名解析
域名購買完成後, 需要將域名解析到實驗雲主機上,實驗雲主機的 IP 為:
<您的 CVM IP 地址>
在騰訊雲購買的域名,可以到控制檯新增解析記錄,過程可參考下面的視訊:
域名設定解析後需要過一段時間才會生效,通過 ping 命令檢查域名是否生效 ,如:
ping www.*******.com
如果 ping 命令返回的資訊中含有你設定的解析的 IP 地址,說明解析成功。
注意替換下面命令中的 www.*******.com 為您自己的註冊的域名
申請微信個人訂閱號
在開始搭建我們的訂閱號伺服器之前,需要先拿到訂閱號相關資訊。
註冊開發者賬號
如果你還不是微信訂閱號開發者,請先在微信公眾平臺註冊:
https://mp.weixin.qq.com
具體註冊流程可參考如下視訊:
若您已註冊,請點選下一步。
獲取微信訂閱號公眾平臺認證欄位資訊
我們需要獲取3個欄位:AppID Token EncodingAESKey。
登入微信公眾平臺,依次進入 開發 - 基本配置 可以拿到 AppID。
在基本配置 - 伺服器配置 - 修改配置 表單中:
URL 填第一步申請的域名;
Token 使用者根據提示填寫,用於後面校驗服務端合法性;
EncodingAESKey 點選隨機生成按鈕來生成。
當點選表單提交按鈕時,微信會通過 Token 來校驗 URL 的合法性,這個我們在後面步驟實現,此介面暫時保留不關閉。
AppID Token EncodingAESKey 這3個引數具體的獲取步驟也可以參照下面的視訊
搭建 HTTP 服務
下面的步驟,將帶大家在伺服器上使用 Node 和 Express 搭建一個HTTP 伺服器
安裝 NodeJS 和 NPM
使用下面的命令安裝 NodeJS 和 NPM
curl --silent --locationhttps://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,新增我們伺服器包的名稱和版本號,可參考下面的示例。
示例程式碼:/data/release/weapp/package.json
{
"name": "weapp",
"version":"1.0.0"
}
完成後,使用 Ctrl + S 儲存檔案
新增 Server 原始碼
在工作目錄建立 app.js,使用 Express.js 來監聽 5050 埠[?],可參考下面的示例程式碼(注:請將 app.js 檔案中的token/appid/encodingAESKey等配置項替換為您的訂閱號對應的取值)。
示例程式碼:/data/release/weapp/app.js
// 引用 express 來支援 HTTP Server 的實現
const express = require('express');
// 引用微信公共平臺自動回覆訊息介面服務中介軟體
var wechat = require('wechat');
// 建立一個 express 例項
const app = express();
// 配置微信公眾平臺引數,在教程第二步中獲取
var config = {
token: 'yourtoken', // 填第二步中獲取的 `token`
appid: 'yourappid', // 填第二步中獲取的 `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 athttp://127.0.0.1:${port}`);
本實驗會以 5050 埠的開啟作為實驗步驟完成的依據,為了後面的實驗步驟順
利進行,請不要使用其它埠號
執行 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://<您的 CVM IP 地址>:5050 執行
要檢視服務輸出的日誌,可以使用下面的命令:
pm2 logs
如果要重啟服務,可以使用下面的命令:
pm2 restart app
我們使用 PM2 來進行 Node 程序的執行、監控和管理
NPM 倉庫在國內訪問速度可能不太理想,如果實在太慢可以嘗試使用 CNPM 的 Registry 進行安裝:npm install pm2 -g--registry=https://r.cnpmjs.org/
搭建 nginx 對外服務
NodeJs只是偵聽的機器上的 5050 埠,我們使用 nginx 偵聽 80 埠提供對外域名服務
安裝 Nginx
在 CentOS 上,可直接使用 yum 來安裝 Nginx
yum install nginx -y
安裝完成後,使用 nginx 命令啟動 Nginx:
nginx
此時,訪問 http://<您的域名> 可以看到 Nginx 的測試頁面[?]
如果無法訪問,請重試用 nginx -s reload 命令重啟 Nginx
配置 HTTP 反向代理
外網使用者訪問伺服器的 Web 服務由 Nginx 提供,Nginx需要配置反向代理才能使得 Web 服務轉發到本地的 Node 服務。
Nginx 配置目錄在 /etc/nginx/conf.d,我們在該目錄建立wechat.conf
示例程式碼:/etc/nginx/conf.d/wechat.conf
server {
listen 80;
server_namewww.example.com; # 改為第一步申請的域名
location /{
proxy_pass http://127.0.0.1:5050;
}
}
按Ctrl + S 儲存配置檔案,讓 Nginx 重新載入配置使其生效:
nginx -s reload
在瀏覽器通過 http 的方式訪問你解析的域名來測試 HTTP 是否成功啟動
使用Server端回覆微信訊息
提交服務端配置
我們將第二步微信公眾平臺中保留的表單提交,同時將基本配置 - 伺服器配置 啟用
關注、傳送與訊息回覆
首先通過二維碼關注微信訂閱號
在聊天介面向微信公眾號傳送一條訊息
最終我們會回到一條 你好,Hello World! 的回覆