使用NodeJs開發微信公衆號(一)

  準備工做
node

1.首先註冊本身的微信公衆號。git

微信公衆號如今分爲訂閱號,服務號,企業號,服務號和企業號不對我的開發者開放,因此咱們只能選擇訂閱號。github

可是訂閱號也有認證和未認證之分,認證的訂閱號支持的接口更多也更高級,下圖是微信的接口權限圖,只截取了一部分。算法

 

若是咱們想測試這些接口怎麼辦?咱們能夠申請微信的測試帳號,測試帳號只能用於測試接口,不能用於真實的項目。下面就看看怎麼申請測試帳號吧。npm

1.1進入微信公衆平臺首頁 https://mp.weixin.qq.com/緩存

1.2在下方的帳號分類裏找到訂閱號,點擊開發文檔,在左側邊欄找到開始開發-接口測試號申請,以下圖所示服務器

點擊進入申請就行了。微信

2.一個域名和一個服務器,強烈建議在阿里雲上購買,便宜穩定省心。如今.cn的域名29元/年,1核1G的服務器是330元/年。具體怎麼申請,以及服務器怎麼使用,你們能夠網上自行百度,這裏就再也不贅述了。app

準備工做就到這裏,下面正式開始微信公衆號的開發。微信公衆平臺

2、接入微信

第一步、填寫服務器配置信息 

進入微信測試號管理頁面,填寫接口配置信息。

 

1.URL地址,必須以http://或https://開始,分別支持80和443端口,例如:http://www.baidu.com/,這裏你應該填寫你本身的域名,這個域名指向的是你買的服務器。

2.Token是必須爲英文或者數字,長度爲2-32個字符。

第二步、驗證消息的確來自微信服務器

爲了驗證消息的確來自微信服務器,微信服務器會向咱們的服務器發送GET請求,GET請求攜帶四個參數

1)signature:微信加密簽名,簽名裏包含了咱們填寫的Token信息,和請求中的timestamp和nonce參數

2)timestamp:時間戳

3)nonce:隨機數

4)echostr:隨機字符串

開發者經過校驗signature對請求進行驗證,下面介紹校驗算法。

1)將Token,timestamp,nonce按字典排序,好在js的sort()方法能夠幫咱們完成這個工做

2)排序以後,將這三個參數拼成一個字符串,進行sha1加密,這裏也不用懼怕,npm的有現成的sha1包。

3)而後判斷signature與咱們本身用sha1加密後的字符串是否相等,若是相等則說明請求來自於微信,而後咱們將echostr原封不動的返回給微信服務器,接入驗證就成功了。

好了,有了這些理論知識,咱們就開始編寫代碼吧。

  編寫接入微信服務器代碼

新建index.js,並在噹噹前目錄下安裝koa框架和sha1模塊.  

首先咱們要安裝koa框架,Koa是繼Express以後的一個新的Web框架,使用Koa框架能夠是Web開發,變得更加容易和快速,由於這裏只用到koa一些簡單的功能,因此不作詳細的介紹了。  

 安裝sha1模塊,用於進行將字符串進行sha1加密。

npm install koa

npm install sha1

下面是index.js中的代碼

//嚴格模式
"use strict"

//引入koa框架
let Koa=require("koa");
//引入sha1模塊
let sha1=require("sha1");

let koa=new Koa();

//微信訂閱號的配置信息
let config={
    wechat:{
        appID:"wx2ea795e409b2c674",
        appsecret:"e4632492abb3de0943fc7ca20c4b27d0",
//這裏你得填寫你本身設置的Token值 token:
"wechat", } }; koa.use(function(ctx){ //ctx.query獲取請求中攜帶的參數 let token=config.wechat,token; //獲取請求中的signature let signature=ctx.query.signature; //獲取請求中的timestamp let timestamp=ctx.query.timestamp; //獲取請求中的nonce let nonce=ctx.query.nonce; //獲取請求中的echostr let echostr=ctx.query.echostr; //將Token,timestamp,nonce按字典排序,排序後連接成一個字符串 let str=[token,timestamp,nonce].sort().join(""); //使用sha1模塊進行sha1加密 let sha1Str=sha1(str); //判斷加密後的字符串與請求中signature是否相等 //若是相等返回echostr if(sha1Str === signature){ //將echostr返回給微信服務器 ctx.body=echostr; } else{ ctx.body="wrong"; } }) //監聽服務器的80端口,這裏須要注意一下,若是你監聽的不是80端口,那麼你就得修改url,在url最後加上你要監聽的端口號,例如http://www.baidu.com:3000 koa.listen(80); console.log("服務器已經跑起來了.....");

 

接入服務器的代碼就這麼多,最後文件的結構是這樣的

node_modules這個文件夾裏存放的就是koa和sha1相關的文件。而後將這個文件夾挪到你的服務器上,

並在這個目錄下,用node把Index.js跑起來,成功的話,應該是下面的效果。

最後就能夠提交咱們的信息了,其實在提交以後,微信服務器會向咱們的服務器發送請求,咱們的代碼就是處理這個請求,並把微信服務器須要的信息響應給它。

提交以後,就會顯示配置成功。

之後咱們就可使用咱們本身的服務器,向微信服務器發送請求了。

下一期將會講解怎麼獲取access_token,並緩存access_token。

這一期的代碼我已經提交到個人github上了,有興趣的你們能夠來看看使用Node開發微信訂閱號

相關文章
相關標籤/搜索