深入浅出Node.js搭建微信公众号后台服务的方法

1. Node.js介绍

Node.js是一个基于Chrome V8引擎的JavaScript运行环境。Node.js具有事件驱动、非阻塞I/O模型等特点,使得Node.js具备了非常高的性能,在 Web 开发领域得到了广泛应用。

2. 微信公众号后台服务搭建前需准备的工具

2.1 Node.js

运行Node.js代码需要在本地安装Node.js环境。在官网上下载安装包即可:https://nodejs.org/en/download/

2.2 微信公众平台账号

完成微信开发需要微信公众平台账号,官网地址:https://mp.weixin.qq.com/

2.3 开发者工具

微信开发需要使用微信公众平台提供的开发者工具,可以在此页面下载:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

3. 开始建立微信公众号后台服务

3.1 注册服务器并设置回调地址

微信公众平台中,需要在设置-公众号设置-服务器配置中进行配置。在这里需要填写服务器地址、Token、EncodingAESKey等信息。其中,服务器地址是以http或https协议开头的回调地址,这个地址需要公网IP或者域名才能回调成功。

Token和EncodingAESKey是加密解密时用到的,Token是由开发者自定义的字符串,EncodingAESKey需要在申请页面上使用“随机生成”的方式获取,建议这里也使用“随机生成”后的EncodingAESKey。

将服务器地址配置好后保存,并记住Token和EncodingAESKey。

3.2 创建项目并安装依赖

使用Node.js环境,创建一个工程目录。

mkdir wechat-backend-service

cd wechat-backend-service

npm init

然后在命令行中输入以下命令,安装所需模块express、body-parser、request、xml2js:

npm install express body-parser request xml2js --save

3.3 编写服务器端代码

在项目目录下创建server.js文件,并输入以下代码:

const express = require("express");

const bodyParser = require("body-parser");

const request = require("request");

const xml2js = require("xml2js");

const crypto = require("crypto");

const app = express();

// 微信公众平台服务器验证

app.get("/wechat", (req, res) => {

const signature = req.query.signature;

const timestamp = req.query.timestamp;

const nonce = req.query.nonce;

const token = "yourToken"; // 这里填写你在微信公众平台设置的Token。

const shasum = crypto.createHash("sha1");

shasum.update([timestamp, nonce, token].sort().join(""));

const hash = shasum.digest("hex");

if (hash === signature) {

res.send(req.query.echostr);

} else {

res.send("fail");

}

});

// 微信公众平台消息接收

app.post("/wechat", bodyParser.raw({ type: "text/xml" }), (req, res) => {

const xmlData = req.body.toString();

xml2js.parseString(xmlData, (err, result) => {

if (err) {

console.error(err);

} else {

console.log(result);

// TODO : 根据收到的消息进行业务处理。

}

});

res.send("success");

});

app.listen(80, () => {

console.log("Server is running on port 80");

});

3.4 测试服务

在命令行中输入以下命令,启动服务器:

node server.js

如果命令行中输出"Server is running on port 80"说明服务启动成功。

在浏览器中输入服务器地址,例如http://localhost/wechat,如果看到“fail”字样,说明微信服务器验证失败;如果看到回调的信息,说明微信服务器验证成功。

4. 微信公众号接口调用

4.1 获取access_token

微信提供了很多API接口供我们使用,在使用之前需要获取access_token。获取access_token的接口为:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

其中APPID和APPSECRET是在微信公众平台中申请到的,获取方法为:进入管理中心,点击左侧菜单-开发-基本配置,就可以看到APPID和APPSECRET了。

在代码中调用该接口,解析响应结果获取access_token:

let accessToken = "";

function updateAccessToken() {

const appid = "yourAppId";

const secret = "yourAppSecret";

const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`;

request.get(url, (error, response, body) => {

if (!error && response.statusCode === 200) {

const result = JSON.parse(body);

accessToken = result.access_token;

console.log("成功获取access_token:", accessToken);

} else {

console.error("获取access_token失败:", error);

}

});

}

updateAccessToken();

setInterval(updateAccessToken, 1000 * 60 * 60 * 1.5);

4.2 发送消息

微信公众平台提供了客服消息接口,我们可以使用这个接口发送消息给用户。发送消息的接口为:

https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN

其中ACCESS_TOKEN是在接口调用中获取到的。发送消息需要一个JSON格式,示例为:

const msg = {

touser: "yourOpenId",

msgtype: "text",

text: {

content: "这是一条来自Node.js服务的消息"

}

};

在代码中调用该接口,发送消息给用户:

const url = `https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=${accessToken}`;

request.post(url, {

json: true,

body: msg

}, (error, response, body) => {

if (!error && response.statusCode === 200) {

console.log("消息发送成功");

} else {

console.error("消息发送失败", error);

}

});

5. 结语

通过本文介绍,读者可以初步认识如何使用Node.js搭建微信公众号后台服务,并调用微信公众号API接口进行消息发送。Node.js拥有事件驱动、非阻塞I/O模型等特性,具有高性能优势,使用Node.js可以开发出高效稳定的微信公众号后台服务。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。