Koa2+co-wechat快速搭建微信公众号服务器配置

欢迎来点点个人博客node

背景
git

我多嘴,说我知道微信公众号的配置流程,而后公司原来负责公众号的人离职了,让我先研究而后去教后端大哥,我也是醉了。可是多学一种东西,又何乐而不为呢。原本我也在学习koa2,想给本身的小程序写接口。因而就开始了踩坑之路,也感谢网上不少大佬的分享。github

本地开发调试环境搭建

开发环境

- MacOs
- Node v8.9.1
- Koa2复制代码

 微信公众平台开发的基本原理

咱们先来看看微信公众平台开发的基本原理:在进行微信开发的时候,须要在咱们在本身的服务器上部署服务对微信消息进行处理。微信服务器就至关于一个转发服务器。终端(手机、Pad等)发起请求至微信服务器,微信服务器而后将请求转发给自定义服务(这里就是咱们的具体实现)。服务处理完毕,而后转发给微信服务器,微信服务器再将具体响应回复到终端,通讯协议为:HTTP;数据格式为:XML。咱们的服务须要作的就是对请求作出响应,解析XML,进行相应的处理后再返回特定的XML。npm

ngrok微信本地开发

这儿咱们了解到了接入微信开发须要一个本身的响应服务器,咱们能够购买服务器或者新浪云百度云之类的服务。可是在咱们开发阶段这样作是很麻烦的,咱们须要搭建一个好用的本地调试环境,将内网映射出去,让外网可以访问的。
这儿推荐使用Ngrok服务。win、mac都能方便使用,并且稳定,外网域名是固定的。小程序

打开它的网站www.ngrok.cc/注册登陆而后开通隧道。同时你须要下载相应的客户端
在win中这是个批处理文件,运行它而后填入相应的隧道id回车便可,在Mac下载客户端目录中执行以下命令。segmentfault

./sunny clientid 隧道id复制代码


这里在Ngrok官网上配置端口要设置成8080(设置成别的会形成token验证失败)后端

初始化项目并安装依赖

$ mkdir koa-wechat && cd koa-wechat && npm init -y
$ npm i -S koa co-wechat 复制代码

推荐cnpm下载浏览器

业务逻辑

新建app.jsbash

//app.jsconst Koa = require('koa');const wechat = require('co-wechat');
const app = new Koa();
app.use(async(ctx, next) => {      if (ctx.path === '/wechat') { //自定义的路由,微信后台配置的url                    await next();      } else {            ctx.body = `Hello, koa2! Path is: ${ctx.path}`;      }});
app.use(wechat({      token: '', //微信后台配置的token      appid: '', //微信公众号的appid      encodingAESKey: '' //微信公众号的encodingAESKey}));
app.listen(8080); //端口要跟ngrok里配置的对应
复制代码

确认代码里的变量后,启动服务。
服务器

node index.js复制代码

咱们运行app.js,将服务跑起来,浏览器打开localhost:8080咱们将可以看见返回了Hello, koa2! Path is。这儿推荐使用supervisor,它会监视你对代码的改动,并自动重动 Node

npm install -g supervisor
supervisor app.js复制代码

接下来就是用前面讲的ngrok进行内网转发了

./sunny clientid 隧道id复制代码

此时已经离成功一步之遥。

接入微信公众平台开发

接入流程

接入微信公众平台开发,开发者须要按照以下步骤完成:

一、填写服务器配置

二、验证服务器地址的有效性

三、依据接口文档实现业务逻辑

咱们登陆微信公众平台接口测试账号mp.weixin.qq.com/debug/cgi-b…,登陆后填写接口配置信息

(你的url地址以及token)

,这时确定不能配置成功的。咱们须要验证服务器地址的有效性,开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数以下表所示:

signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者经过检验signature对请求进行校验。若确认这次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,成为开发者成功,不然接入失败。加密/校验流程以下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者得到加密后的字符串可与signature对比,标识该请求来源于微信

幸运的是这些事 co-wechat都帮咱们作了~~~ 送给做者一朵小发发


进入测试号的页面从新提交接口配置信息,你将会看见一个一闪而过的配置成功过提示框。恭喜,这标志着你正式跳进了微信开发的坑了。

github地址

github.com/Jiyr0119/Ko…

参考连接

segmentfault.com/a/119000001…

blog.csdn.net/zhaolandelo…

个人博客

欢迎大佬们多多指点

https://www.jonathon.cn/

相关文章
相关标签/搜索