1. Introduction
De nos jours, WeChat est devenu un canal important permettant à de nombreuses entreprises et particuliers d'exploiter leurs propres médias, et créer un service back-end efficace et stable pour les comptes publics WeChat est devenu une nécessité. En tant que langage back-end léger et efficace, Node.js a reçu une large attention pour ses puissantes capacités d'E/S asynchrones et son efficacité de développement. Cet article présentera de manière simple et approfondie comment utiliser Node.js pour créer un service backend de compte officiel WeChat.
2. Préparation
Avant de commencer, vous devez préparer les outils et l'environnement suivants :
3. Créez le service backend du compte public WeChat
Tout d'abord, créez un dossier pour stocker le projet. Ensuite, entrez le dossier dans la ligne de commande et exécutez la commande suivante :
npm init
Après l'exécution, suivez les invites pour saisir le nom du projet, la version, la description et d'autres informations pour terminer l'initialisation du projet.
Exécutez la commande suivante pour installer les dépendances nécessaires :
npm install express request xml2js
Parmi eux, express est un framework Web développé par Node.js, request est une bibliothèque qui encapsule les requêtes HTTP et xml2js est une bibliothèque qui convertit XML en bibliothèque A pour les données JSON.
Dans le répertoire racine du projet, créez un fichier nommé index.js et ajoutez le contenu suivant au fichier :
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(); // 校验失败,返回空响应 });
Le code ci-dessus implémente la vérification d'accès du compte officiel WeChat, l'implémentation spécifique Veuillez vous référer à la documentation du site officiel pour la méthode.
Dans le répertoire racine du projet, créez un fichier nommé message.js pour traiter les messages WeChat. Ajoutez le contenu suivant au fichier :
/** * 解析 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(); }); };
Le code ci-dessus analyse le message du compte officiel WeChat et renvoie le message de réponse correspondant après traitement.
Dans index.js, ajoutez le code suivant pour démarrer le service :
const handleWechatMessage = require('./message'); const server = app.listen(process.env.PORT || 3000, () => { const address = server.address(); console.log(`Server running at http://${address.address}:${address.port}`); }); app.post('/api/wechat', handleWechatMessage);
Après avoir démarré le service, vous pouvez le vérifier en configurant l'adresse du serveur en arrière-plan de le compte officiel WeChat. Après une vérification réussie, vous pouvez utiliser cette adresse comme adresse de service backend du compte officiel WeChat. Dans le même temps, vous pouvez déboguer le code pour garantir que les messages peuvent être transmis et répondus normalement.
4. Résumé
Cet article présente comment utiliser Node.js pour créer des services backend de compte public WeChat, couvrant deux aspects : la vérification des accès et le traitement des messages. Grâce à cet article, je pense que les lecteurs peuvent rapidement comprendre et maîtriser les principes de base et les méthodes de mise en œuvre de l'utilisation de Node.js pour créer des services backend WeChat.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!