Koa2+co-wechat快速搭建微信公眾號伺服器配置

Jiyr發表於2018-07-24

歡迎來點點我的部落格

背景

我多嘴,說我知道微信公眾號的配置流程,然後公司原來負責公眾號的人離職了,讓我先研究然後去教後端大哥,我也是醉了。但是多學一種東西,又何樂而不為呢。本來我也在學習koa2,想給自己的小程式寫介面。於是就開始了踩坑之路,也感謝網上很多大佬的分享。

本地開發除錯環境搭建

開發環境

- MacOs
- Node v8.9.1
- Koa2複製程式碼

 微信公眾平臺開發的基本原理

我們先來看看微信公眾平臺開發的基本原理:在進行微信開發的時候,需要在我們在自己的伺服器上部署服務對微信訊息進行處理。微信伺服器就相當於一個轉發伺服器。終端(手機、Pad等)發起請求至微信伺服器,微信伺服器然後將請求轉發給自定義服務(這裡就是我們的具體實現)。服務處理完畢,然後轉發給微信伺服器,微信伺服器再將具體響應回覆到終端,通訊協議為:HTTP;資料格式為:XML。我們的服務需要做的就是對請求做出響應,解析XML,進行相應的處理後再返回特定的XML。

ngrok微信本地開發

這兒我們瞭解到了接入微信開發需要一個自己的響應伺服器,我們可以購買伺服器或者新浪雲百度雲之類的服務。但是在我們開發階段這樣做是很麻煩的,我們需要搭建一個好用的本地除錯環境,將內網對映出去,讓外網能夠訪問的。
這兒推薦使用Ngrok服務。win、mac都能方便使用,而且穩定,外網域名是固定的。

開啟它的網站www.ngrok.cc/註冊登入然後開通隧道。同時你需要下載相應的客戶端
在win中這是個批處理檔案,執行它然後填入相應的隧道id回車即可,在Mac下載客戶端目錄中執行如下命令。

./sunny clientid 隧道id複製程式碼

Koa2+co-wechat快速搭建微信公眾號伺服器配置

這裡在Ngrok官網上配置埠要設定成8080(設定成別的會造成token驗證失敗)

初始化專案並安裝依賴

$ mkdir koa-wechat && cd koa-wechat && npm init -y
$ npm i -S koa co-wechat 複製程式碼

推薦cnpm下載

業務邏輯

新建app.js

//app.jsconst Koa = require('koa');const wechat = require('co-wechat');
const app = new Koa();
app.use(async(ctx, next) => {      if (ctx.path === '/wechat') { //自定義的路由,微信後臺配置的url                    await next();      } else {            ctx.body = `Hello, koa2! Path is: ${ctx.path}`;      }});
app.use(wechat({      token: '', //微信後臺配置的token      appid: '', //微信公眾號的appid      encodingAESKey: '' //微信公眾號的encodingAESKey}));
app.listen(8080); //埠要跟ngrok裡配置的對應
複製程式碼

確認程式碼裡的變數後,啟動服務。

node index.js複製程式碼

我們執行app.js,將服務跑起來,瀏覽器開啟localhost:8080我們將能夠看見返回了Hello, koa2! Path is。這兒推薦使用supervisor,它會監視你對程式碼的改動,並自動重動 Node

npm install -g supervisor
supervisor app.js複製程式碼

接下來就是用前面講的ngrok進行內網轉發了

./sunny clientid 隧道id複製程式碼

此時已經離成功一步之遙。

接入微信公眾平臺開發

接入流程

接入微信公眾平臺開發,開發者需要按照如下步驟完成:

1、填寫伺服器配置

2、驗證伺服器地址的有效性

3、依據介面文件實現業務邏輯

我們登入微信公眾平臺介面測試帳號mp.weixin.qq.com/debug/cgi-b…,登入後填寫介面配置資訊

(你的url地址以及token)

,這時肯定不能配置成功的。我們需要驗證伺服器地址的有效性,開發者提交資訊後,微信伺服器將傳送GET請求到填寫的伺服器地址URL上,GET請求攜帶引數如下表所示:

signature微信加密簽名,signature結合了開發者填寫的token引數和請求中的timestamp引數、nonce引數。
timestamp時間戳
nonce隨機數
echostr隨機字串

開發者通過檢驗signature對請求進行校驗。若確認此次GET請求來自微信伺服器,原樣返回echostr引數內容,則接入生效,成為開發者成功,否則接入失敗。加密/校驗流程如下:

  1. 將token、timestamp、nonce三個引數進行字典序排序
  2. 將三個引數字串拼接成一個字串進行sha1加密
  3. 開發者獲得加密後的字串可與signature對比,標識該請求來源於微信

幸運的是這些事 co-wechat都幫我們做了~~~ 送給作者一朵小發發

Koa2+co-wechat快速搭建微信公眾號伺服器配置

進入測試號的頁面重新提交介面配置資訊,你將會看見一個一閃而過的配置成功過提示框。恭喜,這標誌著你正式跳進了微信開發的坑了。

github地址

github.com/Jiyr0119/Ko…

參考連結

segmentfault.com/a/119000001…

blog.csdn.net/zhaolandelo…

我的部落格

歡迎大佬們多多指點

https://www.jonathon.cn/


相關文章