基于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);

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容