美文网首页
express开发微信公众号

express开发微信公众号

作者: Alander | 来源:发表于2018-01-28 11:25 被阅读0次

前言

服务外包需要基于微信公众号的网页开发,开发流程分为两大块内容:

  1. 移动端网页开发
  2. 微信公众号的开发和维护

文章记录后者的开发流程。开发分为以下几个阶段:

  1. 申请微信测试号
  2. 部署自己的服务器
  3. 服务器端代码构建

正文

一、准备自己的服务器并通过微信认证
自己用的阿里云,有学生优惠很便宜。因为在调用所有的微信接口前微信需要验证你是否有一台自己的服务器(或者说是站点),所以我们先要部署服务器。而微信认证服务器时只能通过http或者https即80端口或者443端口所以在部署的时候需要express的如有对 '/' 路由进行操作,即在该路由侠完成验证。
验证规则自行看平台介绍:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
说一堆这种验证规则其实只是确保你收到的信息确实来自微信,验证是可以进行偷懒地直接返回正确的结果,代码如下:

router.get('/', (req, res, next) => {
  // 认证是无需校验只需返回正确数据即可,若想进行自己校验则在这里进行校验
  // TODO 根据校验规则书写代码,如果正确最后返回req.query.echostr
  res.send(req.query.echostr)
})

二、进行开发
这一部分主要还是根据开发文档来自行书写代码,流程大概为:

  1. 用户产生了输入(不仅是文字输入,也可以是各种点击事件)
  2. 上述输入的信息都会被微信以post的方式将输入的信息以各种形式(json/xml等)发送给你的服务器
  3. 服务器端接受到post请求后验证是否是微信的信息,如果是就解析传来的数据,不是就执行其他代码
  4. 服务器端返回数据(json/xml等)给微信(用户)

解析微信传来的数据
express自带的body-parser可以解析json等数据,但是不能解析xml数据,需要借助第三方组件,可以使用 xml2js 或者是 express-xml-bodyparser,后者专门为express设计,所以才用后者比较方便,具体代码如下:

router.post('/*', xmlparser({trim: false, explicitArray:false}), function(req, res, next) {
  console.log(req.query, req.body)  // 所有的数据都在这了
  res.send(data);
});

例如用户如果发送消息 你好 给公众号了,那么服务器端会收到消息:

{ 
  signature: '0ac3d6aba29e3fb30954104347ee3998198d3a45',
  timestamp: '1517107731',
  nonce: '1381253321',
  openid: 'oEwij0z6VEeRMKKCN21nEaOQgThM' 
}
 { xml:
   { tousername: 'gh_22d306212fea',
     fromusername: 'oEwij0z6VEeRMKKCN21nEaOQgThM',
     createtime: '1517107731',
     msgtype: 'text',
     content: '你好',
     msgid: '6515928089579464821' }
 }

解析完数据后需要给用户返回信息:查看开发文档:

<xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[fromUser] ]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType>< ![CDATA[text] ]></MsgType> <Content>< ![CDATA[你好] ]></Content> </xml>

其实就是替换其中的数据内容然后让express以xml的形式发送给用户,代码如下:

router.post('/*', xmlparser({trim: false, explicitArray:false}), function(req, res, next) {
  let data = `<xml><ToUserName>${req.body.xml.fromusername}</ToUserName> <FromUserName>${req.body.xml.tousername}</FromUserName> <CreateTime>${req.body.xml.createtime}</CreateTime> <MsgType>${req.body.xml.msgtype}</MsgType> <Content>你好啊!</Content></xml>`
  res.writeHead(200, {'Content-Type': 'application/xml'});
  res.end(data);
});

到这里,基本的开发流程就结束了,文章不是为了详细的教学,而是为了让读者知道如何去使用开发文档和一些自己再摸索的时候得出的经验,之后的开发自己详细看文档就可以进行自己的开发了。

相关文章

  • Express + TypeScript开发微信应用

    转载 # Express + TypeScript开发微信应用 在进行微信开发之前,首先需要注册一个微信公众号或者...

  • express开发微信公众号

    前言 服务外包需要基于微信公众号的网页开发,开发流程分为两大块内容: 移动端网页开发 微信公众号的开发和维护 文章...

  • 微信开发

    微信开发 公众号开发 微信WEB开发 JSSDK 小程序开发 公众号开发 公众号 订阅号 服务号 企业号 公众号开...

  • 微信公众号开发 (4) 网页授权

    一、前言 微信公众号开发 (1) 微信接入认证成为开发者 微信公众号开发 (2) 消息处理 微信公众号开发 (3)...

  • 微信公众号开发:微信服务号和订阅号的区别!

    微信开发又称微信公众平台开发、或微信公众号开发,分为微信服务号、微信订阅号、以及微信企业号,其中服务号和订阅号是企...

  • node express 微信开发

    wechat-node 微信开发 基于node express框架 介绍 node express 微信开发 获取...

  • 微信jssdk接入指南

    利用nodejs+express快速搭建公众号开发环境 jssdk:就是一个js 文件,这个JS文件可以 在微信公...

  • PHP微信公众号支付开发总结

    微信公众号开发是很常见的开发,其中微信支付占有很大的比重。微信公众号分为服务号和订阅号,服务号支持微信支付。 前期...

  • 基于JavaEE——微信网页(二)微信开发

    微信开发测试公众号(沙盒号) 微信API帮助文档 微信接口在线调试 首先申请微信开发的测试公众号,登陆后会看到微信...

  • 1 - 简介

    微信公众号开发 又称微信公众号二次开发。可以将公众账号由一个媒体型营销工具转化成提供服务的产品。 微信公众号开发的...

网友评论

      本文标题:express开发微信公众号

      本文链接:https://www.haomeiwen.com/subject/udpaaxtx.html