搭建微信訂閱號後臺服務

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 來安裝 Nginx

    yum 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! 的回覆

  • 大功搞成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章