1. 程式人生 > >搭建微信訂閱號後臺服務(筆記)

搭建微信訂閱號後臺服務(筆記)

準備域名

微信公眾平臺需要配置伺服器地址 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! 的回覆