const express = require('express'); const crypto = require('crypto'); const app = express(); const TOKEN = "AD2D2ECDC73C8065"; // 必须和公众号后台填写一致 app.get('/wechat/callback', (req, res) => { const { signature, timestamp, nonce, echostr } = req.query; if (!signature || !timestamp || !nonce || !echostr) { return res.send('failed'); // 参数不完整 } const arr = [TOKEN, timestamp, nonce].sort(); const str = arr.join(''); const sha1 = crypto.createHash('sha1').update(str).digest('hex'); console.log('微信签名验证', { signature, sha1, timestamp, nonce }); if (sha1 === signature) { res.send(echostr); // 成功返回 echostr } else { res.send('failed'); // 验证失败 } }); app.listen(3000, () => console.log('Server running on port 3000'));