当前位置: 首页 > 后端技术 > Node.js

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

时间:2023-04-04 01:23:56 Node.js

学习node.js开发微信的初学者,在申请接入微信公众平台开发测试账号时,由于官方example仅针对PHP、java等其他方式的代码,node初学者不太理解。提交接口测试URL时,经常不成功,提示“配置失败”。这里是申请微信测试号和接口配置信息的节点。js代码实现、申请域名、解析、激活主机、申请SSL证书等过程在网上教程开发文档中都有详细介绍,这里不再赘述。1、点击应用测试号获取appID和appsecret信息,填写服务器配置2、编写node.js验证码如下。引用的koasha1等包文件需要提前npminstall安装:npminstall--savekoakoa-sslifysha1fs/*微信公众号Node.jsKoa+SSL测试接口接入验证token:你的TOKEN签名:微信加密签名校验内容,sha1([token,timestamp,nonce].sort())nonce:随机数要求(“koa”);consthttp=require(“http”);consthttps=require(“https”);constfs=require(“fs”);constsha1=require('sha1')const{默认值:enforceHttps}=require("koa-sslify");constconfig={wechat:{appID:"wxbxxxxx.....",appSecret:"a95xxxxx.......",token:"segmentfault........."}};//生成服务器实例constapp=newKoa();//ForceHTTPSusingdefaultresolver//ForceHTTPSusingdefaultresolvertouseHTTPSapp.use(enforceHttps({port:443})));//index页面加载微信验证认证中间件//ctx是Koa的应用上下文//next是串口中间件的hook函数app.use(async(ctx,next)=>{const{signature,timestamp,nonce,echostr}=ctx.queryconsttoken=config.wechat.token//进行字典排序和加密letstr=[token,timestamp,nonce].sort().join("");letsha=sha1(str)//验证微信加密签名,返回echostr内容if(sha===signature){ctx.body=echostr}else{ctx.body="wrong"}//ctx.body="helloworldfrom"+ctx.request.url;});//SSLoptionsvaroptions={key:fs.readFileSync("./ssl/privkey.pem"),//SSL私钥cert:fs.readFileSync("./ssl/fullchain.pem"),//SSL证书requestCert:false,//是否请求客户端证书rejectUnauthorized:false//是否拒绝没有可信CA颁发的证书的客户端连接请求};//start服务器http.createServer(app.callback()).listen(80);https.createServer(options,app.callback()).listen(443);console.log("WechatCheckServerStart=>HTTP:80=>HTTPS:443......");3.提交配置信息并验证消息确实是来自你的微信服务器相关说明,你可以参考微信开发文档的接入指南