赞
踩
思路:
1.微信服务器知道开发者服务器是哪个
-测试号管理界面上填写url开发者服务器地址
-内网穿透使微信服务器能访问到映射到外网的开发者服务器地址
-填写token,进行加密
2.开发者服务器验证消息是否来自于微信服务器
- //npm i express下载包npm i下载依赖
- //内网穿透一下
- const express = require('express');
- const sha1 = require('sha1')
- const app = express();
- //定义配置对象
- const config = {
- token: '1234',
- appID: 'wx387707c142342e5f',
- appsecret: 'ed1109d567b0bf87eba63747f6aa71b2'
- }
- app.use((req, res, next) => {
- console.log(req.query)
- const { signature, echostr, timestamp, nonce } = req.query //对象的结构赋值
- const { token } = config
- /*
- {微信服务器发来的东西
- signature: '9bf986bba167e1d38434813148d9622cf1e143c0',微信的加密签名,在自己服务器根据这个算出是否来自微信服务器
- echostr: '3329679419479420731',微信随机字符串
- timestamp: '1635763993',微信发送请求的时间戳
- nonce: '378478086'随机数字
- }
-
- */
- //timestamp, nonce, token字典排序拼接成字符串sha1加密, 如果和signature一样, 返回给微信服务器
- const arr = [timestamp, nonce, token];
- const arrSort = arr.sort()
- console.log(arrSort)
- //npm i sha1
- const str = arr.join('')
- const sha1str = sha1(str)
- console.log(sha1str)
- if (sha1str == signature) {
- res.send(echostr)
- } else {
- res.end('error')
- }
- })
- app.listen(6177, () => {
- console.log('server is running...')
- })
- //在微信测试号管理页面填写url开发者服务器地址(每次穿透地址都不一样)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。