


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:
- Node.js: Sila pergi ke tapak web rasmi Node.js untuk memuat turun dan memasang;
- Akaun awam WeChat: Sila pergi ke platform awam WeChat untuk mendaftar dan memohon hak pembangun
- Editor fail: Visual Studio Code disyorkan.
3. Bina perkhidmatan bahagian belakang akaun awam WeChat
- Buat projek
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.
- Pasang kebergantungan
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.
- Konfigurasikan penghalaan
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.
- Memproses mesej WeChat
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.
- Mulakan perkhidmatan
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);
- Perkhidmatan pengesahan
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Fungsi JavaScript mudah digunakan untuk memeriksa sama ada tarikh sah. fungsi isvaliddate (s) { var bits = s.split ('/'); var d = tarikh baru (bit [2] '/' bits [1] '/' bits [0]); kembali !! (d && (d.getmonth () 1) == bit [1] && d.getdate () == nombor (bit [0])); } // ujian var

Artikel ini membincangkan cara menggunakan jQuery untuk mendapatkan dan menetapkan margin dalaman dan nilai margin elemen DOM, terutama lokasi tertentu margin luar dan margin dalaman elemen. Walaupun ada kemungkinan untuk menetapkan margin dalaman dan luar elemen menggunakan CSS, nilai yang tepat boleh menjadi rumit. // Sediakan $ ("div.header"). css ("margin", "10px"); $ ("div.header"). css ("padding", "10px"); Anda mungkin menganggap kod ini

Artikel ini meneroka sepuluh tab jQuery yang luar biasa dan akordion. Perbezaan utama antara tab dan akordion terletak pada bagaimana panel kandungan mereka dipaparkan dan tersembunyi. Mari kita menyelidiki sepuluh contoh ini. Artikel Berkaitan: 10 JQuery Tab Plugin

Temui sepuluh plugin jQuery yang luar biasa untuk meningkatkan dinamisme dan daya tarikan visual laman web anda! Koleksi ini menawarkan pelbagai fungsi, dari animasi imej ke galeri interaktif. Mari kita meneroka alat yang berkuasa ini: Posting Berkaitan: 1

HTTP-CONSOLE adalah modul nod yang memberi anda antara muka baris arahan untuk melaksanakan arahan HTTP. Ia bagus untuk menyahpepijat dan melihat apa yang sedang berlaku dengan permintaan HTTP anda, tanpa mengira sama ada mereka dibuat terhadap pelayan web, Serv Web

Tutorial ini menunjukkan kepada anda bagaimana untuk mengintegrasikan API carian Google tersuai ke dalam blog atau laman web anda, menawarkan pengalaman carian yang lebih halus daripada fungsi carian tema WordPress standard. Ia menghairankan mudah! Anda akan dapat menyekat carian ke y

Coretan kod jQuery berikut boleh digunakan untuk menambah bar skrol apabila kandungan div melebihi kawasan elemen kontena. (Tiada demonstrasi, sila salin terus ke Firebug) // d = dokumen // w = tetingkap // $ = jQuery var contentArea = $ (ini), Wintop = contentArea.scrollTop (), docheight = $ (d) .height (), winheight = $ (w) .height (), Divheight = $ ('#c
