区别于网上很多教程,这里我们用Koa.js进行开发
基本原理
- 微信服务器就相当于一个转发服务器,终端(手机、Pad等)发起请求至微信服务器,微信服务器,然后将请求转发给自定义服务(这里就是我们的具体实现)。服务处理完毕,然后转发给微信服务器,微信服务器再将具体响应回复到终端;
- 通信协议为:HTTP;
- 数据格式为:XML。
其实,我们需要做的事情,就是对HTTP请求,做出响应。具体的请求内容,我们按照特定的XML格式去解析,处理完毕后,也要按照特定的XML格式返回。
平台注册
要想完成对微信公众平台的开发,我们需要注册一个微信公众平台帐号。注册步骤如下: 打开微信公共平台的官网,https://mp.weixin.qq.com/,点击“立即注册”。
然后根据提示,填写基本信息,邮箱激活,选择类型,信息登记,公众号信息,完成注册。
在注册完成以后,我们要对公众号进行一些基本的设置。登录公众号,找到【公众号设置】,然后设置头像以及其它信息。
nodejs环境搭建
我们需要在公网上找一台服务器,以便可以启动我们的nodejs的环境,启动环境后通过设置访问地址,我们就可以接收微信服务器发送的消息了,并且我们也可以向微信服务器发送消息了。
在公网的服务器中安装完成nodejs以后,我们还需要安装一些nodejs所用到的模块:
- koa
- koa-bodyparser
- koa-router
- koa-session
- koa-static
- request //http请求
- sha1 //加密模块
-
rowbody :
- 下面会通过这个raw-body模块,把this上的request对象也就是http模块中的request对象,去拼装它的数据,最终可以拿到一个buffer的xml数据
微信开发者模式配置:
配置URL和token:
首先URL要填写公网上我们安装nodejs接收与发送数据的路径。我们可以填写【访问测试】的地址,然后加上对应的路由就可以了。
http://18948u0e32.imwork.net/
Token要与我们自定义服务器端的token一致。填写完成以后,就可以点击提交了,在提交以前,我们启动app.js(点击【提交运行】)。这样根据我们的路由匹配就可以验证签名是否有效了。
服务器配置(已启用)
access_token:
- 让我们的系统每隔2小时启动去刷新一次票据,这样无论何时我们内部调用接口,这个票据始终是最新的。
- 为了方便频繁调用,我们需要把票据储存在一个地方,并且是唯一的一个地方。(数据库或文件)
返回的数据
{"access_token":"4eEGodhnohrWKUGynL1Dgcyt-88HtE-7x1KtobAh_7jQvk8qD1ObUvd8dwqzNdfQHJi4LrhO8s55b27cJCID-Q0KXiP6PmYNoHR_pp2nZASQeEkBYiOLlnrAS1OyjYDkWSNfAEAOKF","expires_in":1512120482046}
微信服务器接入认证和自动回复:
步骤:
- 处理POST类型的控制逻辑,接受一个XML的数据包(是的,不是json的,蛋疼)
- 解析这个数据包(获得数据包的消息类型或者事件类型)
- 拼装出我们定义好的消息
- 包装成XML的格式
- 在5秒种内返回回去
参考
用node.js进行微信公众平台的开发
基于Nodejs构建属于自己的微信公众号
慕课网 7天搞定Node.js微信公众号
koa2 + co-wechat快速搭建微信公众号对接服务
egg + co-wechat快速搭建微信公众号对接服务