L01-验证服务器的有效性
L01-验证服务器的有效性
1、在webstorm中打开文件夹wx_zwtx,在项目底下新建day01文件夹
2、接着day01下新建一个js文件,命名为验证服务器的有效性
3、打开终端,进入wx_zwtx根目录,输入npm init
进行初始化,输入名称wechat_test、版本号1.0.0等一些信息,结束后会生成package.json文件
4、安装express
- 终端输入
npm i express
5、进入ngrok官网:www.ngrok.cc ,进行内网穿透,下载客户端,连接
6、将地址填写至申请的测试号的接口配置信息中
7、代码编写如下:
8、测试微信服务器提交过来的参数
- 先运行服务器,再在网页上提交接口配置信息,观察控制台接收到的信息,结果如下:
9、分析
{
signature: ‘4b72756afd11a7533c01ade9ce2bcc306dbc0e4f’
echostr: ‘1592125008023124477’,
timestamp: ‘1631236605’,
nonce: ‘559763514’
}
- signature:微信的加密签名
- echostr:微信的随机字符串
- timestamp:微信的发送请求时间戳
- nonce:微信的随机数字
10、开发者服务器-验证消息是否来自于微信服务器
目的:计算得出signature微信加密签名,和微信传递过来的signature进行对比,如果一样,说明消息来自于微信服务器,如果不一致,说明不是微信服务器发来的消息
- 将参与微信加密签名的三个参数(timestamp、nonce、token)按照字典序排序并组合在一起,形成一个数组
- 将数组里所有参数拼接成一个字符串,进行sha1加密
- 加密完成后就会生成一个signature,与微信服务器发来的进行对比
- 如果一样,说明消息来自于微信服务器,返回echostr给微信服务器
- 如果不一致,说明不是微信服务器发来的消息,返回error
11、定义配置对象
12、使用对象的解构赋值方法快捷的拿到参数
13、将参与微信加密签名的三个参数(timestamp、nonce、token)按照字典序排序并组合在一起,形成一个数组
14、将数组里所有参数拼接成一个字符串,进行sha1加密
- 首先,终端输入
npm i sha1
,进行下载,并在代码中引入sha1模块,再拼接
15、加密完成后就会生成一个signature,与微信服务器发来的进行对比
- 如果一样,说明消息来自于微信服务器,返回echostr给微信服务器
- 如果不一致,说明不是微信服务器发来的消息,返回error
16、验证
- 运行服务器,网页上点击提交,控制台观察结果(之前打印的参数我注释掉了),结果如下:
- 分析:
1、先将三个参数按照字典序进行排序,形成一个数组
2、接着拼接成一个字符串,进行sha1加密
3、最后与微信服务器发来的signature进行比对
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小新's Blog!
评论
Va