1. はじめに
現在、WeChat は多くの企業や個人にとってセルフメディアを運営するための重要なチャネルとなっており、WeChat パブリック アカウント用の効率的で安定したバックエンド サービスの構築が必要不可欠になっています。 Node.js は、軽量で効率的なバックエンド言語として、その強力な非同期 IO 機能と開発効率により広く注目を集めています。この記事では、Node.jsを使用してWeChat公式アカウントのバックエンドサービスを構築する方法を簡単かつ詳細に紹介します。
2. 準備
開始する前に、次のツールと環境を準備する必要があります:
3. WeChat パブリック アカウント バックグラウンド サービスの構築
まず、プロジェクトを保存するフォルダーを作成します。次に、コマンド ラインでフォルダーを入力し、次のコマンドを実行します。
npm init
実行後、プロンプトに従ってプロジェクト名、バージョン、説明、その他の情報を入力し、プロジェクトの初期化を完了します。
次のコマンドを実行して、必要な依存関係をインストールします。
npm install express request xml2js
このうち、express は Node.js で開発された Web フレームワークです。 、request HTTPリクエストをカプセル化するライブラリで、xml2jsはXMLをJSONデータに変換するライブラリです。
プロジェクトのルート ディレクトリに、index.js という名前のファイルを作成し、次の内容をそのファイルに追加します。上記のコードはWeChatパブリックアカウントのアクセス認証を実装しています。具体的な実装方法については、公式Webサイトのドキュメントを参照してください。
WeChat メッセージの処理const express = require('express'); const request = require('request'); const { parseString } = require('xml2js'); const app = express(); app.get('/api/wechat', (req, res) => { const { signature, timestamp, nonce, echostr } = req.query; // 排序和拼接字符串 const str = [process.env.TOKEN, timestamp, nonce].sort().join(''); const sha1 = require('crypto').createHash('sha1'); sha1.update(str); const code = sha1.digest('hex'); if (code === signature) { return res.send(echostr); // 校验成功,原样返回 echostr 参数内容 } res.send(); // 校验失败,返回空响应 });
上記のコードは、WeChat 公式アカウントからのメッセージを解析し、処理後に対応する応答メッセージを返します。
サービスの開始/** * 解析 XML 数据 * @param {string} xmlStr XML 字符串 */ function parseXML(xmlStr) { const options = { explicitArray: false, // 不将子元素变为数组 ignoreAttrs: true, // 忽略属性 }; return new Promise((resolve, reject) => { parseString(xmlStr, options, (err, result) => { if (err) { return reject(err); } resolve(result.xml); }); }); } module.exports = function handleWechatMessage(req, res) { let body = ''; req.on('data', (chunk) => { body += chunk; }); req.on('end', async () => { const { ToUserName, FromUserName, CreateTime, MsgType, Event, Content, EventKey, } = await parseXML(body); let replyXML; switch (MsgType) { case 'text': // 处理文本消息 replyXML = `<xml> <ToUserName><![CDATA[${FromUserName}]]></ToUserName> <FromUserName><![CDATA[${ToUserName}]]></FromUserName> <CreateTime>${Math.floor(Date.now() / 1000)}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[${Content}]]></Content> </xml>`; break; case 'event': // 处理事件消息 if (Event === 'subscribe') { // 处理关注事件 replyXML = `<xml> <ToUserName><![CDATA[${FromUserName}]]></ToUserName> <FromUserName><![CDATA[${ToUserName}]]></FromUserName> <CreateTime>${Math.floor(Date.now() / 1000)}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[欢迎关注]]></Content> </xml>`; } else if (Event === 'unsubscribe') { // 处理取消关注事件 console.log('用户取消关注'); } else if (Event === 'CLICK' && EventKey === 'test') { // 处理菜单点击事件 replyXML = `<xml> <ToUserName><![CDATA[${FromUserName}]]></ToUserName> <FromUserName><![CDATA[${ToUserName}]]></FromUserName> <CreateTime>${Math.floor(Date.now() / 1000)}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[点击了测试菜单]]></Content> </xml>`; } break; default: break; } if (replyXML) { res.setHeader('Content-Type', 'application/xml'); return res.send(replyXML); } res.send(); }); };
4. 概要
この記事では、Node.js を使用して WeChat パブリック アカウント バックエンド サービスを構築する方法を紹介し、アクセス検証とメッセージ処理の 2 つの側面をカバーします。この記事を通じて、読者は Node.js を使用して WeChat バックエンド サービスを構築する基本原則と実装方法をすぐに理解し、習得できると思います。
以上がNode.js を使用して WeChat パブリック アカウント バックエンド サービスを構築する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。