Rumah hujung hadapan web tutorial js Penjelasan mendalam tentang cara membina perkhidmatan bahagian belakang akaun awam WeChat menggunakan Node.js

Penjelasan mendalam tentang cara membina perkhidmatan bahagian belakang akaun awam WeChat menggunakan Node.js

Apr 05, 2023 am 09:08 AM

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

  1. Buat projek

Pertama, cipta folder untuk menyimpan projek. Kemudian, masukkan folder dalam baris arahan dan laksanakan arahan berikut:

npm init
Salin selepas log masuk

Selepas pelaksanaan, ikut gesaan untuk memasukkan nama projek, versi, penerangan dan maklumat lain untuk melengkapkan permulaan projek.

  1. Pasang kebergantungan

Laksanakan arahan berikut untuk memasang kebergantungan yang diperlukan:

npm install express request xml2js
Salin selepas log masuk

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.

  1. 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(); // 校验失败,返回空响应
});
Salin selepas log masuk

Kod di atas melaksanakan pengesahan akses akaun awam WeChat Untuk kaedah pelaksanaan tertentu, sila rujuk dokumentasi laman web rasmi.

  1. 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();
  });
};
Salin selepas log masuk

Kod di atas menghuraikan mesej daripada akaun rasmi WeChat dan mengembalikan mesej balasan yang sepadan selepas diproses.

  1. 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);
Salin selepas log masuk
  1. 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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

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

periksa jQuery jika tarikh sah periksa jQuery jika tarikh sah Mar 01, 2025 am 08:51 AM

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

jQuery mendapatkan padding/margin elemen jQuery mendapatkan padding/margin elemen Mar 01, 2025 am 08:53 AM

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

10 Tab Accordion JQuery 10 Tab Accordion JQuery Mar 01, 2025 am 01:34 AM

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

10 patut diperiksa plugin jQuery 10 patut diperiksa plugin jQuery Mar 01, 2025 am 01:29 AM

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 Debugging dengan Node dan HTTP-Console HTTP Debugging dengan Node dan HTTP-Console Mar 01, 2025 am 01:37 AM

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 Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

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

jQuery tambah bar scroll ke div jQuery tambah bar scroll ke div Mar 01, 2025 am 01:30 AM

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

See all articles