首先感谢大佬分享的视频,链接:https://www.isharebest.com/nodejswechat.htm
前期准备:提供外网IP地址的服务器(阿里云,腾讯云,ngrok等等)、安装好环境Node、webstorm等、如果是个人开发可以使用测试公众号(https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)。
我使用的是腾讯云,购买后,在服务器上也安装好Node环境,最好使用最新版本的Node,因为我开始用的不是最新版本,后面安装Koa的时候,提示因为版本不对发生错误。
Node版本更新,可以直接在官网上https://www.baidu.com/link?url=ylySX4--5jfmAeY4KU_ZJ5rnVvsVkMce2yY3owBNGM8FSCnuJsFcIl4Ak4yhHrqd&wd=&eqid=8234e99f00043584000000025a87d2db下载最新版本点击安装即可。
接口配置信息代码部分
1、新建wechat项目,然后新建app.js文件,使用git Bash 或命令行里安装Koa和sha1加密模块
npm install Koa sha1
2、app.js文件中的代码
'use strict' //使用严格模式
var Koa = require('koa');
var sha1 = require('sha1');
var config = { //微信公众号的基本配置信息
wechat: {
appID: 'wx9dad68746eaca383',
appsecret: '6e79e2763ce3159f1d556795812a1a12',
token: 'farm' //自己写的一个
}
};
var app = new Koa();
app.use(function *(next) {
console.log(this.query); //测试微信服务端返回的数据,启动项目后,可以在命令行中看到返回的数据
//将获取到的token、signature、nonce拼接成数组,排序、连接成字符串后使用sha1加密,判断加密后的字符串和微信服务器返回的数据中的signature是否相同,如果相同,yan
var token = config.wechat.token;
var signature = this.query.signature;
var nonce = this.query.nonce;
var timestamp = this.query.timestamp;
var echostr = this.query.echostr;
var str = new Array(token, timestamp, nonce);
str = str.sort().join('');
var sha = sha1(str);
console.log(signature)
console.log(token)
if (sha === signature) {
this.body = echostr + '';
}
else {
this.body = 'wrong';
}
})
app.listen(80);
console.log('listening: 80');
3、通过 node --harmony app.js 启动项目。将项目IP地址和自己设定的token填入测试账号的配置信息部分。注意,要使用80端口或443端口。
这样就配置好了。
总结:在这次信息配置中,自己作为新手入门,还是折腾了一番,很多东西都没有接触过,例如购买服务器之类的,因为之前没有弄懂ip地址这些,作为通信专业学生,没有把计算机网络学好,很惭愧,自己尝试过用ngrok映射外网,不过这样映射的外网地址是动态的,每次启动项目后,都要重新配置URL。还有就是token验证,微信开发者文档中逻辑写的很清晰(下图),自己代码功底不足,没能自己实现,仿照视频写的,积攒一点小经验,希望以后继续努力。