27 lines
811 B
JavaScript
27 lines
811 B
JavaScript
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'));
|