基于koa2开发微信公众号(接入公众号)

在开发微信公众号之前呢,首先要在微信公众号平台上注册一个服务号,具体的注册流程在这里我也就不过多的叙述了。

当注册成功后就要实现接入的准备工作了,有条件的小伙伴可以购买一个域名和服务器(支持node环境的),没条件的小伙伴就可以和我一样使用ngrok或者花生壳等软件实现内网穿透,不过这样的话可能会有一些些的不稳定,既然是免费嘛,就要承受一些必不可少的问题嘛,废话不多说,赶紧的用koa2搭建个服务吧!

在微信公众号开发者平台上,选择基本配置,会出现如下图所示的界面。

基本配置

使用ngrok将koa2开启的服务端口形成的外网地址赋值给途中的服务器地址处,并配置好开发者密码、IP白名单和令牌,至于令牌的内容随意,怎么开心怎么来,消息的加密方式本系列文章都是以明文的方式来处理的。

好啦,万事俱备,只欠东风了,配置好了这些如何让koa服务接入微信公众号呢?具体的可以参考公众号官方文档,看的有点懵,没关系,大致的可以理解为当你配置好点击提交的时候,公众号会向你刚刚配置的服务器发送一个get请求,而这个get请求附带了四个参数。

参数说明

在服务器端需要将token、timestamp、nonce三个参数进行字典序排序后采用sha1加密,然后把最后的结果和signature做对比,如果一致,那么说明本次请求是来自微信的,最后原样返回echostr参数内容就接入成功了!

const Koa=require('koa2');
const sha1=require('sha1');
const app=new Koa();

var config={
    appId:'wxxxxxxxxxxxxxx167',
    appSecret:'e30xxxxxxxxx5f9xxxxxx6dxxxxxxb8f',
    token:'mytestdemo'
}

app.use(async ctx=>{
    const signature=ctx.query.signature,
          timestamp=ctx.query.timestamp,
          nonce=ctx.query.nonce,
          token=config.token;
    //字典排序
    const str=[token,timestamp,nonce].sort().join('');
    const result=sha1(str);
    if(result===signature){
        ctx.body=ctx.query.echostr;
    }else{
        ctx.body={
            code:-1,
            msg:"fail"
        }
    }
});

app.listen(443);

最后启动服务,在公众号平台上点击提交,出现提交成功则代表已经成功接入了,如果出现问题的话可以查看官方文档的全局返回码说明。

你可能感兴趣的:(基于koa2开发微信公众号(接入公众号))