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

背景

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

本地开发调试环境搭建

开发环境

1
2
3
- MacOs
- Node v8.9.1
- Koa2

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

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

ngrok 微信本地开发

这儿我们了解到了接入微信开发需要一个自己的响应服务器,我们可以购买服务器或者新浪云百度云之类的服务。但是在我们开发阶段这样做是很麻烦的,我们需要搭建一个好用的本地调试环境,将内网映射出去,让外网能够访问的。这儿推荐使用Ngrok服务。win、mac 都能方便使用,而且稳定,外网域名是固定的。打开它的网站[www.ngrok.cc/](https://www.ngrok.cc/注册登录然后开通隧道。同时你需要下载相应的客户端在win中这是个批处理文件,运行它然后填入相应的隧道id回车即可,在Mac下载客户端目录中执行如下命令。

1
./sunny clientid 隧道id


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

初始化项目并安装依赖

1
2
$ mkdir koa-wechat && cd koa-wechat && npm init -y
$ npm i -S koa co-wechat

推荐 cnpm 下载

业务逻辑

新建 app.js

1
2
3
4
5
6
7
8
9
10
11
12
13
//app.js
const 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里配置的对应

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

1
node index.js

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

1
2
npm install -g supervisor
supervisor app.js

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

1
./sunny clientid 隧道id

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

接入微信公众平台开发

接入流程

接入微信公众平台开发,开发者需要按照如下步骤完成:1、填写服务器配置 2、验证服务器地址的有效性 3、依据接口文档实现业务逻辑我们登录微信公众平台接口测试帐号,登录后填写接口配置信息(你的 url 地址以及 token),这时肯定不能配置成功的。我们需要验证服务器地址的有效性,开发者提交信息后,微信服务器将发送 GET 请求到填写的服务器地址 URL 上,GET 请求携带参数如下表所示:

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

开发者通过检验 signature 对请求进行校验。若确认此次 GET 请求来自微信服务器,原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
将 token、timestamp、nonce 三个参数进行字典序排序
将三个参数字符串拼接成一个字符串进行 sha1 加密
开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信

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

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

github 地址

github.com/Jiyr0119/Ko…

参考链接

koa2 搭建
koa2 公众号开发

小程序

本文标题:Koa2+co-wechat快速搭建微信公众号服务器配置

文章作者:Jonathon

发布时间:2018年07月24日 - 20:07

最后更新:2018年07月25日 - 09:07

原始链接:https://www.jonathon.cn/koa2.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

苟富贵,勿相忘!