亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 微信小程式 微信開發(fā) 利用node.js開發(fā)微信公眾平臺教程

利用node.js開發(fā)微信公眾平臺教程

Mar 14, 2017 pm 03:08 PM

這篇文章主要為大家分享利用node.js開發(fā)微信公眾平臺教程,如何進(jìn)行微信開發(fā),有興趣的小夥伴們可以參考一下

用nodejs怎麼來實(shí)現(xiàn)對微信公眾平臺的開發(fā)呢?

  別的就不多說了,先來簡單介紹微信公眾平臺的基本原理。

  微信伺服器就相當(dāng)於一個(gè)轉(zhuǎn)發(fā)伺服器,終端機(jī)(手機(jī)、Pad等)發(fā)起請求至微信伺服器,微信伺服器,然後將請求轉(zhuǎn)發(fā)給自訂服務(wù)(這裡就是我們的具體實(shí)作)。服務(wù)處理完畢,然後轉(zhuǎn)寄至微信伺服器,微信伺服器再將具體回應(yīng)回復(fù)到終端機(jī);通訊協(xié)定為:HTTP;資料格式為:XML
  具體的流程如下圖所示:

利用node.js開發(fā)微信公眾平臺教程

  其實(shí),我們需要做的事情,就是對HTTP請求,做出回應(yīng)。具體的請求內(nèi)容,我們依照特定的XML格式去解析,處理完畢後,也要依照特定的XML格式回傳。

平臺註冊

  要想完成對微信公眾平臺的開發(fā),我們需要註冊一個(gè)微信公眾平臺帳號。註冊步驟如下:?
  開啟微信公共平臺的官網(wǎng),https://mp.weixin.qq.com/,點(diǎn)選「立即註冊」。

  然後根據(jù)提示,填寫基本信息,郵箱激活,選擇類型,信息登記,公眾號信息,完成註冊。

  在註冊完成以後,我們要對公眾號進(jìn)行一些基本的設(shè)定。登入公眾號,找到【公眾號設(shè)定】,然後設(shè)定頭像以及其它資訊。

nodejs環(huán)境搭建

  我們需要在公網(wǎng)上找一臺伺服器,以便可以啟動(dòng)我們的nodejs的環(huán)境,啟動(dòng)環(huán)境後透過設(shè)定存取位址,我們就可以接收微信伺服器發(fā)送的訊息了,我們也可以向微信伺服器發(fā)送訊息了。

  在公網(wǎng)的伺服器中安裝完成nodejs以後,我們還需要安裝一些nodejs所用到的模組,如:express,node-xml,jssha等模組??梢酝高^npm指令進(jìn)行安裝。

  我們透過nodejs來實(shí)現(xiàn)向微信伺服器訊息的發(fā)送與接收,以及與微信伺服器的簽章認(rèn)證。

  在我們右邊的編輯環(huán)境中已經(jīng)為同學(xué)們安裝了nodejs環(huán)境。我們在接下來內(nèi)容中就為同學(xué)來實(shí)現(xiàn)微信伺服器的簽章認(rèn)證。

創(chuàng)建express框架

  我們在前面的課程中已經(jīng)安裝了express模組,並且在我們右面的環(huán)境中已經(jīng)創(chuàng)建了一個(gè)名為app.js的文件?,F(xiàn)在我們就在這個(gè)檔案中完成express框架。如下程式碼:


var express = require("express");
var path=require('path');
var app = express();
server = require('http').Server(app);
app.set('views',dirname); // 設(shè)置視圖 
app.set('view engine', 'html'); 
app.engine( '.html', require( 'ejs' ).express );
require('./index')(app); //路由配置文件
server.listen(80,function(){
console.log('App start,port 80.');
});

然後再新增一個(gè)名為test.html的檔案。寫入以下內(nèi)容


<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>匯智網(wǎng)</title>
</head>
<body>
<p><%=issuccess%></p>
</body>
</html>

  我們還要新增一個(gè)名為index.js的文件,來實(shí)現(xiàn)我們的路由。點(diǎn)擊編輯環(huán)境中的新增文件按鈕,新增文件,然後我們寫入以下程式碼,其中GET請求用來驗(yàn)證配置的URL合法性,POST請求用來處理微信訊息。


module.exports = function(app){
app.get(&#39;/&#39;,function(req,res){
res.render(&#39;test&#39;,{issuccess:"success"})
});
app.get(&#39;/interface&#39;,function(req,res){});
app.post(&#39;/interface&#39;,function(req,res){});
}

這樣我們需要的express框架就完成了,當(dāng)然我們也可以加入public公用資料夾以及我們要用到的中間件。儲存文件,點(diǎn)選【提交運(yùn)行】,然後點(diǎn)選【訪問測試】,去試試看。記下訪問測試的位址,我們將在下一節(jié)中將使用到該位址。

微信伺服器設(shè)定

  我們登入微信公眾平臺,在開發(fā)者模式下方找到基本配置,然後修改伺服器設(shè)定。如圖所示:

利用node.js開發(fā)微信公眾平臺教程

  首先URL要填入公網(wǎng)上我們安裝nodejs接收與發(fā)送資料的路徑。我們可以填寫上節(jié)【存取測試】的位址,然後加上對應(yīng)的路由就可以了。

  Token要與我們自訂伺服器端的token一致。填寫完成以後,就可以點(diǎn)選提交了,提交以前,我們啟動(dòng)app.js(點(diǎn)選【提交運(yùn)行】)。這樣根據(jù)我們的路由匹配就可以驗(yàn)證簽章是否有效了。

  當(dāng)設(shè)定完成以後,一定要啟用設(shè)定。

利用node.js開發(fā)微信公眾平臺教程

網(wǎng)址接入

  公眾平臺用戶提交信息后,微信服務(wù)器將發(fā)送GET請求到填寫的URL上,并且?guī)纤膫€(gè)參數(shù):

參數(shù) 描述
signature 微信加密簽名
timestamp 時(shí)間戳
nonce 隨機(jī)數(shù)
echostr 隨機(jī)字符串

  開發(fā)者通過檢驗(yàn)signature對請求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次GET請求來自微信服務(wù)器,請?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。

  signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。

加密/校驗(yàn)流程:

1、將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序;
2、將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密;
3、開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信。
參數(shù)排序

  首先我們確認(rèn)請求是來自微信服務(wù)器的get請求,那么就可以在index.js文件中進(jìn)行添加代碼了。然后在app.get(‘/interface',function(req,res){});的function中進(jìn)行添加。

  先來獲取各個(gè)參數(shù)的值,如下代碼:


var token="weixin";
var signature = req.query.signature;
var timestamp = req.query.timestamp;
var echostr = req.query.echostr;
var nonce = req.query.nonce;

我們在這里對token進(jìn)行設(shè)置,讓其與微信服務(wù)器中設(shè)置的token一致。

然后對其中的token、timestamp、nonce進(jìn)行排序,如下代碼:


var oriArray = new Array();
oriArray[0] = nonce;
oriArray[1] = timestamp;
oriArray[2] = token;
oriArray.sort();

這樣我們就完成了排序。

參數(shù)加密

  在上節(jié)中我們已經(jīng)對參數(shù)進(jìn)行了排序,然后我們在這一節(jié)中要將參數(shù)組成一個(gè)字符串,進(jìn)行SH-1加密。在加密以前要用到j(luò)ssha模塊,在我們的文件中要引用該模塊。


var jsSHA = require(&#39;jssha&#39;);

在上一節(jié)課中我們已經(jīng)對參數(shù)排序完成,并存放在數(shù)組中,我們可以通過join方法來生成一個(gè)字符串,如下代碼:


var original = oriArray.join(&#39;&#39;);

最后對該數(shù)據(jù)進(jìn)行加密,如下代碼:


var jsSHA = require(&#39;jssha&#39;);
var shaObj = new jsSHA(original, 'TEXT');
var scyptoString=shaObj.getHash('SHA-1', 'HEX');

好了這樣就生成了我們需要的簽名字符串scyptoString。

簽名對比

  我們已經(jīng)得到了我們想要的簽名字符串scyptoString,然后我們就可以與來自微信服務(wù)器的簽名進(jìn)行對比了,對比通過,則我們就可以接收與發(fā)送消息了。


 if(signature == scyptoString){
 //驗(yàn)證成功
 } else {
 //驗(yàn)證失敗
 }

以上是利用node.js開發(fā)微信公眾平臺教程的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72