• <var id="g54z3"></var><span id="g54z3"></span>
    <label id="g54z3"><legend id="g54z3"><bdo id="g54z3"></bdo></legend></label>
    <li id="g54z3"><meter id="g54z3"></meter></li>

    <li id="g54z3"><legend id="g54z3"></legend></li>
    <rt id="g54z3"></rt>

    <span id="g54z3"><optgroup id="g54z3"></optgroup></span>
    \r\n

    <%=issuccess%><\/p>\r\n<\/body>\r\n<\/html><\/pre>

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

    <\/p>

    module.exports = function(app){\r\napp.get('\/',function(req,res){\r\nres.render('test',{issuccess:\"success\"})\r\n});\r\napp.get('\/interface',function(req,res){});\r\napp.post('\/interface',function(req,res){});\r\n}<\/pre>

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

    微信伺服器設(shè)定<\/strong><\/p>

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

    \"利用node.js開發(fā)微信公眾平臺教程\"<\/p>

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

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

      當設(shè)定完成以後,一定要啟用設(shè)定。 <\/p>

    \"利用node.js開發(fā)微信公眾平臺教程\"<\/p>

    網(wǎng)址接入<\/strong><\/p>

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

      參數(shù)                     描述  signature            微信加密簽名  timestamp            時間戳  nonce                隨機數(shù)  echostr              隨機字符串<\/strong><\/span><\/p>

      開發(fā)者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務(wù)器,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。<\/p>

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

    加密\/校驗流程:<\/strong><\/span><\/p>

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

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

      先來獲取各個參數(shù)的值,如下代碼:<\/p>

    <\/p>

    var token=\"weixin\";\r\nvar signature = req.query.signature;\r\nvar timestamp = req.query.timestamp;\r\nvar echostr = req.query.echostr;\r\nvar nonce = req.query.nonce;<\/pre>

    我們在這里對token進行設(shè)置,讓其與微信服務(wù)器中設(shè)置的token一致。<\/p>

    然后對其中的token、timestamp、nonce進行排序,如下代碼:<\/p>

    <\/p>

    var oriArray = new Array();\r\noriArray[0] = nonce;\r\noriArray[1] = timestamp;\r\noriArray[2] = token;\r\noriArray.sort();<\/pre>

    這樣我們就完成了排序。<\/p>

    參數(shù)加密<\/strong><\/p>

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

    <\/p>

    var jsSHA = require('jssha');<\/pre>

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

    <\/p>

    var original = oriArray.join('');<\/pre>

    最后對該數(shù)據(jù)進行加密,如下代碼:<\/p>

    <\/p>

    var jsSHA = require('jssha');\r\nvar shaObj = new jsSHA(original, 'TEXT');\r\nvar scyptoString=shaObj.getHash('SHA-1', 'HEX');<\/pre>

    好了這樣就生成了我們需要的簽名字符串scyptoString。<\/p>

    簽名對比<\/strong><\/p>

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

    <\/p>

     if(signature == scyptoString){\r\n \/\/驗證成功\r\n } else {\r\n \/\/驗證失敗\r\n }<\/pre>"}	
    	
    
    
    
    
    
    
    

    国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

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

    Mar 14, 2017 pm 03:08 PM

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

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

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

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

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

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

    平臺註冊

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

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

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

    nodejs環(huán)境搭建

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

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

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

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

    創(chuàng)建express框架

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


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

    然後再新增一個名為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>

      我們還要新增一個名為index.js的文件,來實現(xiàn)我們的路由。點擊編輯環(huán)境中的新增文件按鈕,新增文件,然後我們寫入以下程式碼,其中GET請求用來驗證配置的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框架就完成了,當然我們也可以加入public公用資料夾以及我們要用到的中間件。儲存文件,點選【提交運行】,然後點選【訪問測試】,去試試看。記下訪問測試的位址,我們將在下一節(jié)中將使用到該位址。

    微信伺服器設(shè)定

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

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

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

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

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

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

    網(wǎng)址接入

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

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

      開發(fā)者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務(wù)器,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。

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

    加密/校驗流程:

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

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

      先來獲取各個參數(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進行設(shè)置,讓其與微信服務(wù)器中設(shè)置的token一致。

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


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

    這樣我們就完成了排序。

    參數(shù)加密

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


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

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


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

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


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

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

    簽名對比

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


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

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

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

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

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

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

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

    Dreamweaver CS6

    Dreamweaver CS6

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

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    熱門話題

    Laravel 教程
    1600
    29
    PHP教程
    1502
    276