微信後臺開發第一步:nodeJS+express接入微信後臺詳細教程

前期準備工做

1:若是你沒有服務器,那你須要一個內網映射工具:我用的是《花生殼》,花生殼在實名認證是須要8RMB的認證費,以後就能夠永久使用了,而且支持80端口映射,php

注:花生殼在免費申請時要申請內網,不要申請公網。 html

2:nodeJS 最新版本,安裝教程自行上網搜索node

3:一個註冊號的微信公衆號,自行申請,這裏不作說明,網上教程已經比較成熟;nginx

花生殼使用教程:

下載地址: http://hsk.oray.com/download/web

安裝:沒有須要注意的express

註冊帳號:npm

進去點擊我的註冊,若是你是企業,那就點擊企業註冊;瀏覽器

註冊成功後登錄客戶端服務器

登錄後具體怎麼作我忘了,(省略實名認證過程)總之會讓你支付8RMB,付款後就可使用了微信

這時你應該已經生成了本身的映射域名了;

雙擊域名

注意的地方如上圖,點擊肯定;添加成功了,再補充一點:上圖中有個80端口,那是你本地服務器的端口,和你本身的端口保持一致就好了,好比你設置的是3000端口,你就改成3000;

nodeJS配置及使用:

1:確認本身的nodeJS安裝成功,在cmd中輸入node -v

能夠看到本身node的安裝版本

2:安裝express4.x

這裏須要說明的是express4.x在使用上和express3.x略有不一樣;

1:安裝全局的express包

在cmd任意位置執行如下代碼

npm install -g express-generator

2:cmd進入到你須要建立項目的目錄下;我以個人D:/test 文件夾爲例

建立express項目,porjectName是你的項目文件夾名字,我這裏以weixin命名

express porjectName

這裏咱們在文件夾裏能夠看到已經建立好了一個文件夾,名字就是weixin

這時再執行

cd weixin && npm install

安裝成功7個npm包後,咱們就開始測試下咱們的服務器可否正常啓動!這裏須要注意的是,express4.x建立的服務器默認端口爲3000;若是須要改端口,bin/www文件裏改

我這裏用的是webstorm10.0.3開發。

啓動服務器有兩種方法,若是你也用的是webstorm。

方法一:在cmd裏輸入

npm start

方法二:在webstorm裏的www文件裏的任意位置單擊右鍵,選擇run ‘fileName’;

測試服務器是否正常啓動,在瀏覽器裏輸入localhost:3000

到這裏,咱們的本地服務器就算是搭建完成了。

3:測試花生殼是否映射成功

啓動花生殼映射:這裏注意,花生殼裏的本地端口要和node服務器的端口一致!

在瀏覽器裏打開上圖中「外網訪問地址」!咱們看到和在localhost:3000下訪問的頁面徹底同樣,這樣就映射成功

4:公衆號的接入配置:(在這裏,你應該閱讀一下微信開發者文檔裏的接入指南;地址:http://mp.weixin.qq.com/wiki/16/1e87586a83e0e121cc3e808014375b74.html 

1:打開公衆號平臺:

點擊「接口配置」

URL:就是咱們映射好的外網地址;

token:就是咱們和微信後臺約定好的令牌;

祕鑰:隨機生成;

加密方式:能夠選擇明文模式,也能夠選擇兼容模式;

注意:此時咱們還不能提交,由於咱們尚未驗證代碼的編寫;這是驗證要求;

首先:咱們這裏用到了另外一個npm包;因此咱們先須要安裝這個npm包,打開以前的cmd,進去個人微信目錄裏輸入:

npm install crypto

打開weixin/routes/index.js;

將裏面的代碼改成:

切記,代碼裏的token要改成你本身的token

var express = require('express'); var crypto = require('crypto'); var router = express.Router(); var token = "你本身規定的token"; //此處須要你本身修改! /* GET home page. */ router.get('/', function(req, res, next) { var signature = req.query.signature; var timestamp = req.query.timestamp; var nonce = req.query.nonce; var echostr = req.query.echostr; /* 加密/校驗流程以下: */ //1. 將token、timestamp、nonce三個參數進行字典序排序 var array = new Array(token,timestamp,nonce); array.sort(); var str = array.toString().replace(/,/g,""); //2. 將三個參數字符串拼接成一個字符串進行sha1加密 var sha1Code = crypto.createHash("sha1"); var code = sha1Code.update(str,'utf-8').digest("hex"); //3. 開發者得到加密後的字符串可與signature對比,標識該請求來源於微信 if(code===signature){ res.send(echostr) }else{ res.send("error"); } }); module.exports = router; 

代碼就改好了!如今開始接入:

填好就能夠提交了!若是提示url超時,就從新點擊提交!

此處可能出現的問題:

1:若是屢次提交仍是超時,則將映射地址輸入瀏覽器裏直接打開,看能請求到不,若是看到頁面顯示一個error,則從新點擊提交,若是一直加載,則是花生殼問題,關閉從新打開花生殼!

2:若是提示token驗證失敗,則是代碼問題,查看代碼哪裏有錯誤!修改錯誤後從新提交!

相關文章
相關標籤/搜索