nodejs微信公众号开发

阅读: 评论:0

nodejs微信公众号开发

nodejs微信公众号开发

本文主要介绍使用nodejs开发微信公众号

公众号注册

开发公众号第一步我们当然是先注册一个公众号啦!

到微信公众平台注册一个微信公众号,个人只能注册订阅号。企业或者组织等可以注册服务号等,个人订阅号调用接口权限少。按官网说明完成注册即可。微信公众平台

公众号配置

完成了注册之后我们需要进行公众号配置,公众号的运行流程大致为用户发送消息到微信服务器->转发消息到开发者服务器->开发者服务器处理消息->返回消息到微信服务器->用户
所以呢,我们需要配置下才能让公众号收到的消息转发到我们的服务器。微信开发可参考微信公众平台技术文档

如图所示,登录微信公众平台,在开发模块的基本配置中,主要配置的就是服务器配置。

服务器地址:配置微信服务器要转发啊消息的地址(也就是我们要处理微信消息的服务器地址,该地址只能为域名)
令牌:开发者手动填写的一个令牌,认证时会用到。
消息可以选加密和不加密,加密时我们需要实现消息解密吧。
公众号配置完成之后我们就要来实现我们的服务器代码了。

服务器实现

本文主要介绍使用nodejs提供服务、当然服务还可以由java,php等来提供,全凭个人喜好。

//server.js
var express = require('express');
var app = express();
var crypto = require('crypto');
var bodyParser = require('body-parser');
var wxRouter = require('./router/wxrouter')
app.use(bodyParser.urlencoded({ extended: true }))/*('/weixin', function(req, res){res.send('hello world');
});*/
app.use('/weixin',wxRouter) //weixin 下的所有请求交给wxRouter处理app.listen(3000);

以上主要是利用express启动web服务。express使用请参考官网。在这里可能有人会奇怪,我配置的服务器地址不是在3000端口上为啥会转发到这里呢。答案是利用nginx做一个请求转发

//wxrouter.js
var router = require('express').Router();
var crypto = require('crypto');
var wxService = require('../api/wxapi');
function sha1(str) {  var md5sum = ateHash("sha1");  md5sum.update(str);  str = md5sum.digest("hex");  return str;  
}  
('/validateToken', function(req, res, next) {var signature = req.query.signature;var timestamp = req.query.timestamp;var nonce = ;var echostr = hostr;var oriArray = [];oriArray[0] = nonce;  oriArray[1] = timestamp;  oriArray[2] = "SDS232JK32KLDSscx";  oriArray.sort();  console.log(req.query)if(signature == sha1(oriArray.join(''))){console.log(echostr)res.send(echostr); }else{res.send("false");  console.log("validateToken failed!");  }next();
});router.post('/validateToken',function(req, res,next){wxService.parseMsg(req,res);next();
})ports = router;

路由我们需要实现2个请求的处理。一个是validateToken的get请求,用于微信服务器向我们服务器的消息转发认证,只有通过该认证,微信服务器才会把消息转发到我们的服务器。
然后最重要是的validateToken的post请求处理了,该路由是处理微信服务器消息的。
微信服务器与我们服务器消息交互是基于xml的发送-回复消息

//wxapi.js
var xml2js = require('xml2js');
var Wx = {data: '',msgType: 'text',fromUserName: '',toUserName: '',content:'暂不支持处理该类型消息',parseMsg(req, res) {var buf = '';('data', function(chunk) {buf += chunk;})('end', () => {xml2js.parseString(buf, function(err, result) {if (err) {err.status = 400;} else {req.body = result;}});this.data = l;this.fromUserName = this.data.FromUserName[0];UserName = this.data.ToUserName[0];switch (this.data.MsgType[0]) {case 'text':t = this.data.Content[0];this.handleTextMsg();break;default:// statements_defbreak;}var responseTxt = XmlMsg();console.log(pe('xml');res.send(responseTxt)})},handleTextMsg() {},getXmlMsg() {return `<xml><ToUserName><![CDATA[${this.fromUserName}]]></ToUserName><FromUserName><![CDATA[${UserName}]]></FromUserName><CreateTime>${new Date().getTime()}</CreateTime><MsgType><![CDATA[${this.msgType}]]></MsgType><Content><![CDATA[${t}]]></Content></xml>`;}
}
ports = Wx;

我们使用xml2js来处理xml消息,写好程序打印下l就知道这个将xml转化成便于我们使用的json对象了。然后用简单的getXmlMsg()方法通过公众号像用户发送消息。至此,我们就完成了简单的微信公众号开发入门。

本文发布于:2024-02-01 15:28:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170677250837589.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:公众   nodejs
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23