博文由 水車 編寫
歡迎各位指正,轉載請把鏈接帶上——http://www.cnblogs.com/xuange306/p/4971702.html
前期准備工作
1:如果你沒有服務器,那你需要一個內網映射工具:我用的是《花生殼》(PS:這不是廣告),花生殼在實名認證是需要8RMB的認證費,之后就可以永久使用了,並且支持80端口映射,
注:花生殼在免費申請時要申請內網,不要申請公網。
2:nodeJS 最新版本,安裝教程自行上網搜索
3:一個注冊號的微信公眾號,自行申請,這里不做說明,網上教程已經比較成熟;
花生殼使用教程:
下載地址: http://hsk.oray.com/download/
安裝:沒有需要注意的
注冊賬號:
進去點擊個人注冊,如果你是企業,那就點擊企業注冊;
注冊成功后登陸客戶端
登陸后具體怎么做我忘了,(省略實名認證過程)總之會讓你支付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驗證失敗,則是代碼問題,查看代碼哪里有錯誤!修改錯誤后重新提交!
從此,我們就可以真正的做微信開發了,查看文檔,完成自己想完成的任務去吧!
@轉載請注明出處!