本文主要介绍使用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小时内删除。
留言与评论(共有 0 条评论) |