微信公众平台测试号接口验证的 node.js + koa2 + https+ssl 代码实现

新手初学node.js进行微信开发,在申请接入微信公众平台开发测试号时,由于官方给出的样例只针对PHP与java等其它方式代码,而node初学者看不太明白,在提交接口测试URL时,往往不成功,提示“配置失败”,这里给出申请微信测试号,接口配置信息的node.js代码实现,申请域名、解析、开通主机,申请SSL证书等过程,网上教程开发文档有详细说明,不在赘述。

1、点击申请测试号,获得appID与appsecret信息,填写服务器配置
微信公众平台测试号接口验证的 node.js + koa2 + https+ssl 代码实现_第1张图片
2、编写node.js验证代码如下,引用的koa sha1等包文件,提前npm install安装好:

npm install --save koa koa-sslify sha1 fs
/* 微信公众号 Node.js Koa + SSL 测试接口接入验证
token: 你的 TOKEN
signature: 微信加密签名校验内容,sha1([token,timestamp,nonce].sort())
nonce: 随机数
timestamp: 时间戳
ecostr: 随机字符串
sha: 你的校验签名,计算结果需要与 signature 一致 */

const Koa = require("koa");
const http = require("http");
const https = require("https");
const fs = require("fs");
const sha1 = require('sha1')
const { default: enforceHttps } = require("koa-sslify");

const config = {
  wechat: {
    appID: "wxbxxxxx........",
    appSecret: "a95xxxxx...........",
    token: "segmentfault........."
  }
};

// 生成服务器实例
const app = new Koa();

// Force HTTPS using default resolver
// 使用默认解析强制使用 HTTPS
app.use(
  enforceHttps({
    port: 443
  })
);

// index page 加载微信验证认证中间件
// ctx 是 Koa 的应用上下文
// next 就是串联中间件的钩子函数
app.use(async (ctx, next) => {
  const {
    signature,
    timestamp,
    nonce,
    echostr
  } = ctx.query
  const token = config.wechat.token

  // 进行字典排序加密
  let str = [token, timestamp, nonce].sort().join("");
  let sha = sha1(str)

  // 校验微信加密签名,返回echostr内容
  if (sha === signature) {
    ctx.body = echostr
  } else {
    ctx.body = "wrong"
  }

  // ctx.body = "hello world from " + ctx.request.url;
});

// SSL options
var options = {
  key: fs.readFileSync("./ssl/privkey.pem"),    // SSL私钥
  cert: fs.readFileSync("./ssl/fullchain.pem"),    // SSL证书
  requestCert: false, //是否请求客户端证书
  rejectUnauthorized: false //是否拒绝无信任CA颁发的证书的客户端连接请求
};

// start the server
http.createServer(app.callback()).listen(80);
https.createServer(options, app.callback()).listen(443);

console.log("WechatCheck Server Start => HTTP:80 => HTTPS:443......");

3、提交配置信息,验证消息的确来自你的微信服务器

相关说明,可以参考微信开发文档的接入指南。

你可能感兴趣的:(微信开发,ssl证书,https,koa2,node.js)