ホームページ WeChat アプレット WeChatの開発 Node.js を使用した WeChat パブリック プラットフォームの開発に関するチュートリアル

Node.js を使用した WeChat パブリック プラットフォームの開発に関するチュートリアル

Mar 14, 2017 pm 03:08 PM

この記事は主に、node.jsを使用してWeChatパブリックプラットフォームを開発する方法に関するチュートリアルを全員に共有するためのものであり、興味のある友人は

WeChatの開発を実現するためにnodejsを使用する方法を参照してください。公共の場 毛織物?

他に言うことはあまりありません。まず、WeChat パブリック プラットフォームの基本原則を簡単に紹介しましょう。

WeChatサーバーは転送サーバーに相当します。端末(携帯電話、Padなど)はWeChatサーバーへのリクエストを開始し、WeChatサーバーはそのリクエストをカスタムサービスに転送します(これが私たちの具体的な実装です)。 。サービスが処理された後、WeChat サーバーに転送され、WeChat サーバーは特定の応答を端末に返します。通信プロトコルは HTTP、データ形式は XML です。
具体的な処理は以下の図の通りです:

Node.js を使用した WeChat パブリック プラットフォームの開発に関するチュートリアル

実際にやるべきことはHTTPリクエストに応答することです。特定のリクエストのコンテンツを特定の XML 形式に従って解析し、処理後、それを特定の XML 形式に従って返す必要があります。

プラットフォーム登録

WeChatパブリックプラットフォームの開発を完了するには、WeChatパブリックプラットフォームアカウントを登録する必要があります。登録手順は次のとおりです:
WeChat パブリック プラットフォームの公式 Web サイト https://mp.weixin.qq.com/ を開き、[今すぐ登録] をクリックします。

その後、画面の指示に従って基本情報を入力し、メールを有効化し、種類、情報登録、公式アカウント情報を選択して登録を完了します。

登録が完了したら、公式アカウントの基本設定を行う必要があります。公式アカウントにログインし、[公式アカウント設定]からアバターなどを設定します。

nodejs 環境の構築

nodejs 環境を開始するには、パブリック インターネット上でサーバーを見つける必要があります。環境を開始した後、アクセス アドレスを設定することで、WeChat サーバーから送信されたメッセージを受信できるようになります。 WeChat サーバーにもメッセージを送信します。

パブリックサーバーにnodejsをインストールした後、express、node-xml、jssha、その他のモジュールなど、nodejsで使用されるいくつかのモジュールもインストールする必要があります。 npmコマンドでインストールできます。

Nodejs を使用して、WeChat サーバーへのメッセージの送受信と、WeChat サーバーとの署名認証を実装します。

右側の編集環境に生徒用にnodejs環境がインストールされています。以下のコンテンツでは、学生向けにWeChatサーバーの署名認証を実装していきます。

expressフレームワークを作成する

前のコースでexpressモジュールをインストールし、右側の環境にapp.jsという名前のファイルを作成しました。ここで、このファイル内の Express フレームワークを完成させます。次のコード:


var express = require("express");
var path=require('path');
var app = express();
server = require('http').Server(app);
app.set('views',dirname); // 设置视图 
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 という名前のファイルを追加します。次の内容を記述します


<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>汇智网</title>
</head>
<body>
<p><%=issuccess%></p>
</body>
</html>
ログイン後にコピー

ルーティングを実装するために、index.js という名前のファイルも追加します。編集環境で [ファイルの追加] ボタン をクリックしてファイルを追加し、次のコードを記述します。このコードでは、GET リクエストは構成された URL の正当性を検証するために使用され、POST リクエストは処理に使用されます。 WeChat メッセージ。

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 フレームワークが完成しました。 もちろん、パブリック パブリック フォルダーと使用するミドルウェアも追加できます。ファイルを保存し、[実行するために送信]をクリックし、[アクセステスト]をクリックして試してください。テストにアクセスするためのアドレスをメモしておきます。このアドレスは次のセクションで使用します。

WeChat サーバー構成

WeChat パブリック プラットフォームにログインし、開発者モードで基本構成を見つけて、サーバー構成を変更します。図に示すように:

Node.js を使用した WeChat パブリック プラットフォームの開発に関するチュートリアル まず、パブリック ネットワーク上でデータを送受信するために、nodejs をインストールするパスに URL を入力する必要があります。前のセクションの [アクセス テスト] のアドレスを入力し、対応するルートを追加します。

トークンはカスタムサーバーサイドトークンと一致している必要があります。入力後、送信をクリックできます。送信する前に、app.js を起動します ([実行するには送信] をクリックします)。このようにして、ルートの一致に基づいて署名が有効かどうかを検証できます。

設定が完了したら、必ず設定を有効にしてください。

Node.js を使用した WeChat パブリック プラットフォームの開発に関するチュートリアル

网址接入

  公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:

参数 描述
signature 微信加密签名
timestamp 时间戳
nonce 随机数
echostr 随机字符串

  开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。

  signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

加密/校验流程:

1、将token、timestamp、nonce三个参数进行字典序排序;
2、将三个参数字符串拼接成一个字符串进行sha1加密;
3、开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
参数排序

  首先我们确认请求是来自微信服务器的get请求,那么就可以在index.js文件中进行添加代码了。然后在app.get(‘/interface',function(req,res){});的function中进行添加。

  先来获取各个参数的值,如下代码:


var token="weixin";
var signature = req.query.signature;
var timestamp = req.query.timestamp;
var echostr = req.query.echostr;
var nonce = req.query.nonce;
ログイン後にコピー

我们在这里对token进行设置,让其与微信服务器中设置的token一致。

然后对其中的token、timestamp、nonce进行排序,如下代码:


var oriArray = new Array();
oriArray[0] = nonce;
oriArray[1] = timestamp;
oriArray[2] = token;
oriArray.sort();
ログイン後にコピー

这样我们就完成了排序。

参数加密

  在上节中我们已经对参数进行了排序,然后我们在这一节中要将参数组成一个字符串,进行SH-1加密。在加密以前要用到jssha模块,在我们的文件中要引用该模块。


var jsSHA = require(&#39;jssha&#39;);
ログイン後にコピー

在上一节课中我们已经对参数排序完成,并存放在数组中,我们可以通过join方法来生成一个字符串,如下代码:


var original = oriArray.join(&#39;&#39;);
ログイン後にコピー

最后对该数据进行加密,如下代码:


var jsSHA = require(&#39;jssha&#39;);
var shaObj = new jsSHA(original, 'TEXT');
var scyptoString=shaObj.getHash('SHA-1', 'HEX');
ログイン後にコピー

好了这样就生成了我们需要的签名字符串scyptoString。

签名对比

  我们已经得到了我们想要的签名字符串scyptoString,然后我们就可以与来自微信服务器的签名进行对比了,对比通过,则我们就可以接收与发送消息了。


 if(signature == scyptoString){
 //验证成功
 } else {
 //验证失败
 }
ログイン後にコピー

以上がNode.js を使用した WeChat パブリック プラットフォームの開発に関するチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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