新手初学node.js进行微信开发,在申请接入微信公众平台开发测试号时,由于官方给出的样例只针对PHP与java等其它方式代码,而node初学者看不太明白,在提交接口测试URL时,往往不成功,提示“配置失败”,这里给出申请微信测试号,接口配置信息的node.js代码实现,申请域名、解析、开通主机,申请SSL证书等过程,网上教程开发文档有详细说明,不在赘述。
1、点击申请测试号,获得appID与appsecret信息,填写服务器配置
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、提交配置信息,验证消息的确来自你的微信服务器
相关说明,可以参考微信开发文档的接入指南。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。