この記事は主に、node.jsを使用してWeChatパブリックプラットフォームを開発する方法に関するチュートリアルを全員に共有するためのものであり、興味のある友人は
WeChatの開発を?qū)g現(xiàn)するためにnodejsを使用する方法を參照してください。公共の場 毛織物?
他に言うことはあまりありません。まず、WeChat パブリック プラットフォームの基本原則を簡単に紹介しましょう。
WeChatサーバーは転送サーバーに相當(dāng)します。端末(攜帯電話、Padなど)はWeChatサーバーへのリクエストを開始し、WeChatサーバーはそのリクエストをカスタムサービスに転送します(これが私たちの具體的な実裝です)。 。サービスが処理された後、WeChat サーバーに転送され、WeChat サーバーは特定の応答を端末に返します。通信プロトコルは HTTP、データ形式は XML です。
具體的な処理は以下の図の通りです:
実際にやるべきことはHTTPリクエストに応答することです。特定のリクエストのコンテンツを特定の XML 形式に従って解析し、処理後、それを特定の XML 形式に従って返す必要があります。
プラットフォーム登録
WeChatパブリックプラットフォームの開発を完了するには、WeChatパブリックプラットフォームアカウントを登録する必要があります。登録手順は次のとおりです:
WeChat パブリック プラットフォームの公式 Web サイト https://mp.weixin.qq.com/ を開き、[今すぐ登録] をクリックします。
その後、畫面の指示に従って基本情報(bào)を入力し、メールを有効化し、種類、情報(bào)登録、公式アカウント情報(bào)を選択して登録を完了します。
登録が完了したら、公式アカウントの基本設(shè)定を行う必要があります。公式アカウントにログインし、[公式アカウント設(shè)定]からアバターなどを設(shè)定します。
nodejs 環(huán)境の構(gòu)築
nodejs 環(huán)境を開始するには、パブリック インターネット上でサーバーを見つける必要があります。環(huán)境を開始した後、アクセス アドレスを設(shè)定することで、WeChat サーバーから送信されたメッセージを受信できるようになります。 WeChat サーバーにもメッセージを送信します。
パブリックサーバーにnodejsをインストールした後、express、node-xml、jssha、その他のモジュールなど、nodejsで使用されるいくつかのモジュールもインストールする必要があります。 npmコマンドでインストールできます。
Nodejs を使用して、WeChat サーバーへのメッセージの送受信と、WeChat サーバーとの署名認(rèn)証を?qū)g裝します。
右側(cè)の編集環(huán)境に生徒用にnodejs環(huán)境がインストールされています。以下のコンテンツでは、學(xué)生向けにWeChatサーバーの署名認(rèn)証を?qū)g裝していきます。
expressフレームワークを作成する
前のコースでexpressモジュールをインストールし、右側(cè)の環(huán)境にapp.jsという名前のファイルを作成しました。ここで、このファイル內(nèi)の 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.'); });
次に、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>
ルーティングを?qū)g裝するために、index.js という名前のファイルも追加します。編集環(huán)境で [ファイルの追加] ボタン をクリックしてファイルを追加し、次のコードを記述します。このコードでは、GET リクエストは構(gòu)成された URL の正當(dāng)性を検証するために使用され、POST リクエストは処理に使用されます。 WeChat メッセージ。
module.exports = function(app){ app.get('/',function(req,res){ res.render('test',{issuccess:"success"}) }); app.get('/interface',function(req,res){}); app.post('/interface',function(req,res){}); }
このようにして、必要な Express フレームワークが完成しました。 もちろん、パブリック パブリック フォルダーと使用するミドルウェアも追加できます。ファイルを保存し、[実行するために送信]をクリックし、[アクセステスト]をクリックして試してください。テストにアクセスするためのアドレスをメモしておきます。このアドレスは次のセクションで使用します。 WeChat サーバー構(gòu)成
WeChat パブリック プラットフォームにログインし、開発者モードで基本構(gòu)成を見つけて、サーバー構(gòu)成を変更します。図に示すように:
まず、パブリック ネットワーク上でデータを送受信するために、nodejs をインストールするパスに URL を入力する必要があります。前のセクションの [アクセス テスト] のアドレスを入力し、対応するルートを追加します。
トークンはカスタムサーバーサイドトークンと一致している必要があります。入力後、送信をクリックできます。送信する前に、app.js を起動(dòng)します ([実行するには送信] をクリックします)。このようにして、ルートの一致に基づいて署名が有効かどうかを検証できます。
設(shè)定が完了したら、必ず設(shè)定を有効にしてください。
網(wǎng)址接入
公眾平臺(tái)用戶提交信息后,微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的URL上,并且?guī)纤膫€(gè)參數(shù):
參數(shù) 描述
signature 微信加密簽名
timestamp 時(shí)間戳
nonce 隨機(jī)數(shù)
echostr 隨機(jī)字符串
開發(fā)者通過檢驗(yàn)signature對(duì)請(qǐng)求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次GET請(qǐng)求來自微信服務(wù)器,請(qǐng)?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。
signature結(jié)合了開發(fā)者填寫的token參數(shù)和請(qǐng)求中的timestamp參數(shù)、nonce參數(shù)。
加密/校驗(yàn)流程:
1、將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序;
2、將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密;
3、開發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來源于微信。
參數(shù)排序
首先我們確認(rèn)請(qǐng)求是來自微信服務(wù)器的get請(qǐng)求,那么就可以在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;
我們?cè)谶@里對(duì)token進(jìn)行設(shè)置,讓其與微信服務(wù)器中設(shè)置的token一致。
然后對(duì)其中的token、timestamp、nonce進(jìn)行排序,如下代碼:
var oriArray = new Array(); oriArray[0] = nonce; oriArray[1] = timestamp; oriArray[2] = token; oriArray.sort();
這樣我們就完成了排序。
參數(shù)加密
在上節(jié)中我們已經(jīng)對(duì)參數(shù)進(jìn)行了排序,然后我們?cè)谶@一節(jié)中要將參數(shù)組成一個(gè)字符串,進(jìn)行SH-1加密。在加密以前要用到j(luò)ssha模塊,在我們的文件中要引用該模塊。
var jsSHA = require('jssha');
在上一節(jié)課中我們已經(jīng)對(duì)參數(shù)排序完成,并存放在數(shù)組中,我們可以通過join方法來生成一個(gè)字符串,如下代碼:
var original = oriArray.join('');
最后對(duì)該數(shù)據(jù)進(jìn)行加密,如下代碼:
var jsSHA = require('jssha'); var shaObj = new jsSHA(original, 'TEXT'); var scyptoString=shaObj.getHash('SHA-1', 'HEX');
好了這樣就生成了我們需要的簽名字符串scyptoString。
簽名對(duì)比
我們已經(jīng)得到了我們想要的簽名字符串scyptoString,然后我們就可以與來自微信服務(wù)器的簽名進(jìn)行對(duì)比了,對(duì)比通過,則我們就可以接收與發(fā)送消息了。
if(signature == scyptoString){ //驗(yàn)證成功 } else { //驗(yàn)證失敗 }
以上がNode.js を使用した WeChat パブリック プラットフォームの開発に関するチュートリアルの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)