Rumah >hujung hadapan web >tutorial js >Penjelasan mendalam tentang cara membina perkhidmatan bahagian belakang akaun awam WeChat menggunakan Node.js
1. Kata Pengantar
Kini, WeChat telah menjadi saluran penting bagi banyak syarikat dan individu untuk mengendalikan media kendiri, dan membina perkhidmatan bahagian belakang akaun awam WeChat yang cekap dan stabil telah menjadi satu keperluan. Sebagai bahasa back-end yang ringan dan cekap, Node.js telah mendapat perhatian yang meluas untuk keupayaan IO tak segerak yang berkuasa dan kecekapan pembangunan. Artikel ini akan memperkenalkan dengan cara yang mudah dan mendalam cara menggunakan Node.js untuk membina perkhidmatan bahagian belakang akaun rasmi WeChat.
2. Persediaan
Sebelum bermula, anda perlu menyediakan alatan dan persekitaran berikut:
3. Bina perkhidmatan bahagian belakang akaun awam WeChat
Pertama, cipta folder untuk menyimpan projek. Kemudian, masukkan folder dalam baris arahan dan laksanakan arahan berikut:
npm init
Selepas pelaksanaan, ikut gesaan untuk memasukkan nama projek, versi, penerangan dan maklumat lain untuk melengkapkan permulaan projek.
Laksanakan arahan berikut untuk memasang kebergantungan yang diperlukan:
npm install express request xml2js
Antaranya, express ialah rangka kerja web yang dibangunkan oleh Node .js , request ialah pustaka yang merangkum permintaan HTTP dan xml2js ialah pustaka yang menukar XML kepada data JSON.
Dalam direktori akar projek, buat fail bernama index.js dan tambah kandungan berikut pada fail:
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(); // 校验失败,返回空响应 });
Kod di atas melaksanakan pengesahan akses akaun awam WeChat Untuk kaedah pelaksanaan tertentu, sila rujuk dokumentasi laman web rasmi.
Dalam direktori akar projek, cipta fail bernama message.js untuk memproses mesej WeChat. Tambahkan kandungan berikut pada fail:
/** * 解析 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(); }); };
Kod di atas menghuraikan mesej daripada akaun rasmi WeChat dan mengembalikan mesej balasan yang sepadan selepas diproses.
Dalam index.js, tambahkan kod berikut untuk memulakan perkhidmatan:
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);
Selepas memulakan perkhidmatan, anda boleh mengesahkannya dengan mengkonfigurasi alamat pelayan di latar belakang akaun rasmi WeChat. Selepas pengesahan berjaya, anda boleh menggunakan alamat ini sebagai alamat perkhidmatan bahagian belakang akaun rasmi WeChat. Pada masa yang sama, anda boleh nyahpepijat dalam kod untuk memastikan mesej boleh dihantar dan dibalas seperti biasa.
4. Ringkasan
Artikel ini memperkenalkan cara menggunakan Node.js untuk membina perkhidmatan bahagian belakang akaun rasmi WeChat, meliputi dua aspek: pengesahan akses dan pemprosesan mesej. Melalui artikel ini, saya percaya pembaca boleh memahami dengan cepat dan menguasai prinsip asas dan kaedah pelaksanaan menggunakan Node.js untuk membina perkhidmatan backend WeChat.
Atas ialah kandungan terperinci Penjelasan mendalam tentang cara membina perkhidmatan bahagian belakang akaun awam WeChat menggunakan Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!