美文网首页
基于koa2开发微信公众号(接入公众号)

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

作者: lk儒家 | 来源:发表于2018-11-29 11:00 被阅读0次

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

    当注册成功后就要实现接入的准备工作了,有条件的小伙伴可以购买一个域名和服务器(支持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开发微信公众号(接入公众号)

          本文链接:https://www.haomeiwen.com/subject/vtexcqtx.html