Files
message-pusher/routers/user.js
2021-08-17 23:10:11 +08:00

49 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;