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

歡迎來點點個人博客node

背景
git

我多嘴,說我知道微信公衆號的配置流程,而後公司原來負責公衆號的人離職了,讓我先研究而後去教後端大哥,我也是醉了。可是多學一種東西,又何樂而不爲呢。原本我也在學習koa2,想給本身的小程序寫接口。因而就開始了踩坑之路,也感謝網上不少大佬的分享。github

本地開發調試環境搭建

開發環境

- MacOs
- Node v8.9.1
- Koa2複製代碼

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

咱們先來看看微信公衆平臺開發的基本原理:在進行微信開發的時候,須要在咱們在本身的服務器上部署服務對微信消息進行處理。微信服務器就至關於一個轉發服務器。終端(手機、Pad等)發起請求至微信服務器,微信服務器而後將請求轉發給自定義服務(這裏就是咱們的具體實現)。服務處理完畢,而後轉發給微信服務器,微信服務器再將具體響應回覆到終端,通訊協議爲:HTTP;數據格式爲:XML。咱們的服務須要作的就是對請求作出響應,解析XML,進行相應的處理後再返回特定的XML。npm

ngrok微信本地開發

這兒咱們瞭解到了接入微信開發須要一個本身的響應服務器,咱們能夠購買服務器或者新浪雲百度雲之類的服務。可是在咱們開發階段這樣作是很麻煩的,咱們須要搭建一個好用的本地調試環境,將內網映射出去,讓外網可以訪問的。
這兒推薦使用Ngrok服務。win、mac都能方便使用,並且穩定,外網域名是固定的。小程序

打開它的網站www.ngrok.cc/註冊登陸而後開通隧道。同時你須要下載相應的客戶端
在win中這是個批處理文件,運行它而後填入相應的隧道id回車便可,在Mac下載客戶端目錄中執行以下命令。segmentfault

./sunny clientid 隧道id複製代碼


這裏在Ngrok官網上配置端口要設置成8080(設置成別的會形成token驗證失敗)後端

初始化項目並安裝依賴

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

推薦cnpm下載瀏覽器

業務邏輯

新建app.jsbash

//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複製代碼

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

接入微信公衆平臺開發

接入流程

接入微信公衆平臺開發,開發者須要按照以下步驟完成:

一、填寫服務器配置

二、驗證服務器地址的有效性

三、依據接口文檔實現業務邏輯

咱們登陸微信公衆平臺接口測試賬號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都幫咱們作了~~~ 送給做者一朵小發發


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

github地址

github.com/Jiyr0119/Ko…

參考連接

segmentfault.com/a/119000001…

blog.csdn.net/zhaolandelo…

個人博客

歡迎大佬們多多指點

https://www.jonathon.cn/

相關文章
相關標籤/搜索