主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
这一次,我将向您展示如何使用koa2构建微信的第三方公众平台。使用koa2搭建微信第三方公众平台有哪些注意事项?以下是实际案例。让我们来看看。
写之前,我想说一下koa。与express相比,koa在执行流程和组件方面要好得多。koa本身并没有提供太多的扩展,但是构建扩展很方便,可以让你自由发挥,像写其他语言一样并行执行代码。如果promise解放了繁琐的回调,那么koa可以编写web应用,通过组合不同的生成器,可以避免回调函数重复繁琐的嵌套,大大提高错误处理的效率。Koa在内核方法中没有绑定任何中间件,只是提供了一个轻量级的优雅函数库,使得编写Web应用变得非常容易。nodejs天生的异步处理流程,使其非常适合微信微信官方账号频繁的消息交互,再加上pm2的多进程管理,可以说很大程度上满足了大规模消息转发交互的要求,在微信官方账号中得到了发挥。
在koa2中搭建微信的第三方公众平台,首先要解决的是如何获取微信返回的xml流,以及如何将对应的XML体返回给微信。因为koa本身并不是一个框架,感谢互联网上众多的中间件,我搭建了一个类似express的框架。这个框架是开源的。详情请看我的git地址:https://github.com/yxz1025/koa-lana.所有微信消息都在这个框架里。请自行下载!
好了,首先我们来看看如何获取微信返回的xml流:
= = = = = = tool . js = = = =//截取xml流文件const Promise = require( # 39;蓝鸟 # 39;);//普通post流转换为promise var tool = { convert post:function(req){ let post _ data = " ;;return new Promise(函数(resolve,reject){ req . on( # 39;数据 # 39;,函数(chunk){ post _ data+= chunk;});req . on( # 39;end # 39,function(){ resolve(post _ data);});});},};module.exports = Tool= = = = = weichat . js = = = = =//微信响应正文文件const router = require( # 39;KOA -路由器 # 39;)();const parse message = require( # 39;../common/parse message # 39;);const config = require( # 39;../config # 39;);const WXBizMsgCrypt = require( # 39;微信-crypto # 39;);const middleware = require( # 39;../模型/中间件 # 39;);const validator = require( # 39;验证器 # 39;);const Aes = require( # 39;../common/AES # 39;);const Tool = require( # 39;../common/tool # 39;);const cryptor = new WXBizMsgCrypt(config . component _ config . token,config.component_config.key,config . component _ config . component _ appid);//第三方授权路径/:appid/callback/微信/100234/callback router . post( # 39;/:appid/callback # 39;,异步函数(ctx,next){ let post _ data = ;";let req = ctx.reqpost _ data = await tool . convert post(req);设XML = parse message(post _ data);let signature = cryptor . get signature(CTX . query . timest,ctx.query.nonce,XML . encrypt);if (ctx.query.msg_signature!=签名){ ctx.body = # 39认证失败!';//当指纹码不匹配时,返回错误消息,禁止后续的消息接受和发送} let message = middleware . decrypt XML(XML);设appid = CTX . params . appid;message.appId = appid//发送消息队列开关(message . msgtype){ case # 39;正文 # 39;://Test if(message . touser name = = " GH _ 3c 884 a 361561 ;){ if(message . content = = ;TESTCOMPONENT _ MSG _ TYPE _ TEXT ;){ let text = middleware.text(消息,消息.内容+ ;_回调 );let reply = middleware . encrypt XML(text);return ctx.body = reply} let content = message.contentif(content . index of( ;查询_授权_代码 ) != -1){ CTX . body = ;";let code _ Li = content . split( ;: );await middleware . custom send(message . from username,code _ Li[1]);返回;} } let关键字= validator . trim(message . content)。toLowerCase();let member _ config = await middleware . getmemberconfig(message . to username,keywords);如果(!member _ config){ await middleware . sendmnsquene(message);return ctx.body = 成功 gt;;}else{ //匹配成功消息;数据包ID = parse int(member _ config;hongbaoid);message.keywords =关键字;await middleware . sendmnsquene(message);let data = { title:member _ config . news _ title | | # 39;我得到一个红包 # 39;,description:member _ config . description | | # 39;第一轮红包雨已经开始,快手慢手!',pic URL:member _ config . pic URL | | # 39;http://7xqomp.com2.z0.glb.qiniucdn.com/17269743.png' };let key = { from username:message . from username,toUserName: message.toUserName,keywords: keywords,appId:appId };key = JSON . stringify(key);key = AES . ency pt(key);key = AES . base64 _ encode(key);//获取授权域名let auth _ URL = await middleware . packet domain();data.url = http:// ;+appid+ ;。"+身份验证URL+ ;/redPackets/koulin?key = +键;let news = middleware . news(message,[data]);let reply = middleware.encryptXml(新闻);ctx.body = reply返回;}破;案例 # 39;事件 # 39;:await middleware . sendmnsquene(message);//测试特殊if(message . touser name = = " GH _ 3c 884 a 361561 ;){ let text = middleware . text(message,message . event+ ;from_callback);let reply = middleware . encrypt XML(text);ctx.body = reply返回;}破;默认:await middleware . sendmnsquene(message);ctx.body = 成功 gt;;返回;};});module.exports =路由器;相信你看完这个案例已经掌握了方法。更多精彩请关注主机参考其他相关文章!
推荐阅读:
Koa2微信微信官方账号开发的本地开发调试环境如何操作
如何操作Koa2微信微信官方账号实现消息管理?以上是如何使用koa2搭建微信第三方公众平台的细节。请多关注主机参考其他相关文章!
这几篇文章你可能也喜欢:
本文由主机参考刊发,转载请注明:如何用koa2搭建微信第三方公众平台 https://zhujicankao.com/80374.html
评论前必须登录!
注册