mirror of
https://github.com/songquanpeng/message-pusher.git
synced 2025-09-26 20:21:22 +08:00
49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
const express = require('express');
|
||
const crypto = require('crypto');
|
||
const Message = require('../models/message').Message;
|
||
const { processMessage } = require('../common/message');
|
||
const { tokenStore } = require('../common/token');
|
||
|
||
const router = express.Router();
|
||
|
||
router.all('/:userPrefix/verify', (req, res, next) => {
|
||
// 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
|
||
const userPrefix = req.params.userPrefix;
|
||
const { signature, timestamp, nonce, echostr } = req.query;
|
||
const token = tokenStore.get(userPrefix).wechatVerifyToken;
|
||
let tmp_array = [token, timestamp, nonce].sort();
|
||
let tmp_string = tmp_array.join('');
|
||
tmp_string = crypto.createHash('sha1').update(tmp_string).digest('hex');
|
||
if (tmp_string === signature) {
|
||
res.send(echostr);
|
||
} else {
|
||
res.send('verification failed');
|
||
}
|
||
});
|
||
|
||
router.all('/:userPrefix/:description', async (req, res, next) => {
|
||
const userPrefix = req.params.userPrefix;
|
||
let message = {
|
||
title: '消息推送',
|
||
description: req.params.description,
|
||
token: req.query.token,
|
||
};
|
||
res.json(await processMessage(userPrefix, message));
|
||
});
|
||
|
||
router.all('/:userPrefix', async (req, res, next) => {
|
||
const userPrefix = req.params.userPrefix;
|
||
let message = {
|
||
type: req.query.type || req.body.type,
|
||
title: req.query.title || req.body.title || '无标题',
|
||
description: req.query.description || req.body.description || '无描述',
|
||
content: req.query.content || req.body.content,
|
||
email: req.query.email || req.body.email,
|
||
token: req.query.token || req.body.token,
|
||
};
|
||
let result = await processMessage(userPrefix, message);
|
||
res.json(result);
|
||
});
|
||
|
||
module.exports = router;
|