用Node.js开发微信公众号

=͟͟͞͞( •̀д•́)

用Node.js开发一个微信公众号

闲来无事,于是弄了个微信的公众号来玩玩~
下文来介绍如何弄一个微信公众号吧。

微信公众号工作原理

先来简单的介绍下,大概的工作流程

大概如下图所示:
wechat-work-flow

当用户给公众号发送消息时,微信服务器通过我们绑定的服务器URL,将消息以及验证信息进行打包,发送到该URL,类似于POST请求。服务器接收到消息后,解析消息,然后通过HttpServletResponse给微信服务器发送回应(其中包括appid,appsecret等验证信息),微信服务器再把从服务器接收到的信息转发给用户。

选择服务器

现在有不少支持Node.js的服务器,新浪云,阿里云,百度云等。我选了百度云,根据预算就好 ~(>_<。)\

进入开发 (•̀ロ•́)و✧ ~~

用Node.js开发一个公众号其实是非常简单的,因为有wechat这个包可以供我们使用。
这个包已经帮我们完成了大部分的工作,主要是接收解析微信服务器发过来的信息,然后定义了返回的格式。
而且文档也写的相当清楚,真是帮我们偷了一个大懒 23333

安装

如果还没安装npm与node,请先安装安装教程
在项目目录下

npm install wechat --save

//安装其他要用到的
npm install express body-parser --save

下面来写一个hello world的demo

wechat.js(项目目录)
var wechat = require('wechat');
var verifyInfo = {  //验证信息
  token: '',  // your wechat token
  appid: ''  // your wechat appid
};

//处理文本消息
var handler = wechat(verifyInfo, wechat.text(wechatText));  

module.exports = handler;

function wechatText(message, req, res, next) {
  var input = (message.Content || '').trim();  

  if (/你好/.test(input)) {
    res.reply('Hello world (•̀ロ•́)و✧ ~~');
  } else {
    res.reply('(¬_¬)ノ 听不懂啦');
  }
}
app.js(项目目录下)
var express         = require("express");
var bodyParser      = require("body-parser");


var app = express();

//config
app.set('port', 2333);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

// route
app.use('/weixin', require('./wechat'));


// start up server
app.listen(app.get('port'), function () {
    console.log('Server listening on:', app.get('port'));
});

下一步

先注册一个微信公众号,注册时有订阅号,服务号,企业号三种类型的公众号可选。我选的是订阅号。

一般情况下,个人选订阅号就可以了。订阅号的限制在于,现在个人账号无法进行微信验证,一些接口是没法使用的,比如自定义菜单的接口 (T▽T)

本来打算把查询做成菜单形式的,这样查询就方便很多,可惜没这个权限,只好做成一问一答的形式。再次默哀。。。。
不过我们也可申请一个微信公众号开发者测试账号,里面有所有接口的权限

注册好后,把appid,appsecret填到wechat.js上,再把代码部署到服务器上

接下来
1.进入公众号开发平台,在这个菜单栏
wechat-dev-a

2.在URL那一栏写上你的服务器地址
wechat-dev-b

3.这样就大工搞成了

Demo

用微信扫一扫就可看到
qrcode

源码

我是分开成两个项目来做的:

  • atpdata (这个不用理)
  • wechat (前端是用Vue来写的)

代码写的很渣。。。欢迎指正 ~(>_<。)\

参考链接:

转载于:https://www.cnblogs.com/hwencc/p/5492751.html

### 回答1: 当微信公众号客户端向 Node.js 开发的服务器发送 POST 请求时,服务器可以使用 Node.js 内置的 HTTP 模块来处理这些请求。下面是一个处理微信公众号客户端 POST 请求的基本示例: ```javascript const http = require('http'); const querystring = require('querystring'); const server = http.createServer((req, res) => { if (req.method === 'POST' && req.url === '/wechat') { let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { const postData = querystring.parse(body); console.log(postData); res.end('OK'); }); } else { res.end('Hello World!'); } }); server.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 这段代码创建了一个 HTTP 服务器,监听在 3000 端口上。当收到来自微信公众号客户端的 POST 请求时,会解析请求体中的数据,并打印到控制台上,最后返回一个字符串 "OK"。当收到其他请求时,返回 "Hello World!"。 需要注意的是,微信公众号开发涉及到很多安全和验证的问题,开发者需要仔细阅读微信公众平台的开发文档,了解如何进行接口调用和消息交互。 ### 回答2: 在使用Node.js开发微信公众号时,服务端可以使用第三方库如Express来处理HTTP请求。当客户端发送一个POST请求时,服务端可以通过Express中间件来解析请求内容,并触发相应的处理函数。 具体而言,服务端在接收到客户端的POST请求后,首先会解析请求的内容,包括请求头、请求体等等。在微信公众号开发中,通常会解析微信服务器发送过来的XML格式的请求体,其中包含了用户发送的消息或事件等信息。 服务端可以使用Express中的`body-parser`中间件来解析请求体,并将解析后的JSON对象传递给后续的处理函数。通过定义相应的路由和处理函数,服务端可以根据不同的请求内容来响应对应的操作。 例如,当客户端发送一条用户的文本消息时,服务端可以通过定义一个处理函数来响应这个请求,获取消息内容并进行相应的处理,比如回复一条特定的文本消息。 另外,服务端还能和微信服务器进行交互,比如校验服务器地址的有效性、获取access_token等操作。服务端可以通过向微信服务器发送GET或POST请求来实现这些功能。微信服务器会根据请求内容进行相应的处理,并发送相应的响应给服务端。 通过这样的方式,服务端可以响应客户端的POST请求,并进行相应的处理和交互,从而实现微信公众号开发和运行。 ### 回答3: 在Node.js开发微信公众号时,服务端是通过使用框架或库来响应客户端的POST请求的。 首先,服务端会创建一个HTTP服务器,并监听指定的端口。当客户端发送POST请求时,服务端会接收到请求。 在接收到POST请求后,服务端会进行解析,获取请求中的参数和数据。这可以通过使用Node.js内置的http模块或者一些第三方库来实现。 接下来,服务端会根据请求的具体内容进行相应的处理。在微信公众号开发中,常见的是处理用户的消息或事件。服务端会根据接收到的POST请求中的数据,比如用户发送的消息类型、内容等,来进行相应的处理,比如根据关键词回复消息或者执行相应的操作。 处理完请求后,服务端会生成相应的响应数据,并将其返回给客户端。这可以通过设置HTTP响应头部和正文来实现。在微信公众号开发中,通常会将响应数据封装成XML格式,再返回给客户端。 最后,服务端会将封装好的响应数据发送给客户端。客户端收到响应后,会根据接收到的数据进行相应的处理,比如显示在用户的微信界面上。 总之,Node.js开发微信公众号时,服务端是通过创建HTTP服务器来响应客户端的POST请求的。服务端会接收、解析、处理请求,并返回相应的数据给客户端。通过这种方式,实现了服务端与客户端之间的交互和通信。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值