天天看點

微信公衆号搭建本地測試環境

原因: 1、由于公司的微信公衆号已經在阿裡雲上營運,如果有任何bug不可能去停掉伺服器去調試,這就需要在本地搭建測試環境了。 2、公衆号開發涉及到微信的回調,是以你本地搭建的伺服器需要外網能夠通路,這個時候就需要把運作在内網的伺服器映射到外網去給微信通路。

方法: 1、搭建内網穿透環境: 如果喜歡自己搭建的話可以多找些關于内網穿透的資料看看,我是由于時間的關系,當時就選擇了一個工具來把自己的電腦穿透到外網,(主要是收費不是很貴)。 在這裡可以推薦一下:natapp, https://natapp.cn/,網絡感覺還不錯,雖然不快,但是基本能滿足我的微信開發就足夠了,我使用的是付費5/月的套餐,因為這樣就能固定的外網位址。

2、映射好後,要試着通路以下映射的位址,看看是否能通路到你的伺服器,可以的話就說明你的映射是成功的。如圖:

微信公衆号搭建本地測試環境

3、配置公衆号的測試賬号: 1)、進入到微信公衆号首頁左側導航欄下有個開發者工具,點選進去:

微信公衆号搭建本地測試環境

2)、在右邊能看到如下的測試賬号,點選進入

微信公衆号搭建本地測試環境

3)、用個人微信掃一掃進去即可登入個人的測試賬号,此時會有如下的東西,這個是公衆号開發的時候需要用到的參數。 注:這些最好用配置檔案的形式儲存,友善以後修改為正式環境的參數!

微信公衆号搭建本地測試環境

4)、這個url是微信那邊需要發個驗證請求過來的,需要你配置一個你伺服器的外網位址,即第一步我們将公衆号伺服器映射到外網的位址,(注意端口号哦)。token的話自己随機設定,并儲存到配置檔案中。

微信公衆号搭建本地測試環境

5)、當你點選送出的時候,微信會立刻試着發個請求到這個位址上去,如果請求成功的話,可以看到如下圖;

微信公衆号搭建本地測試環境

url尾部的wechat,是因為我本地用了nginx路由轉向,這個轉向就是轉到我的本地公衆号伺服器。(如果還沒有接觸nginx的話,可以先試着直接把映射的端口直接跟你公衆号伺服器端口設定成一樣,就是如下圖的本地端口。不過一般還是建議搭配nginx使用,這樣就不用總是去改端口,隻需要配置好你的nginx代理伺服器就可以了。

微信公衆号搭建本地測試環境

6)、微信發送認證請求到你本地伺服器的代碼如下,這個是node的代碼,這個代碼隻在微信認證的時候使用,平時注釋掉即可: // 微信url 驗證token代碼 router.get('/',function function_name(req,res) { // body... var state = req.query.state; //console.log(req); var Isign = sign.checkSignature(req.query); console.log('sign',Isign); if(!Isign){ //如果簽名不對,結束請求并傳回 res.end('signature fail'); } if (req.method == "GET") { //如果請求是GET,傳回echostr用于通過伺服器有效校驗 res.end(req.query.echostr); } }); sign檔案的檢查簽名 var crypto = require('crypto'); checkSignature = function (query) { var signature = query.signature; var timestamp = query.timestamp; var nonce = query.nonce;

var shasum = crypto.createHash('sha1'); var arr = [configs.token, timestamp, nonce].sort(); shasum.update(arr.join(''));

return shasum.digest('hex') === signature; }; 7)、當你到這一步的時候,相信你微信掃一掃關注的測試賬号就可以給你測試使用了,真機測試如下圖:

微信公衆号搭建本地測試環境