| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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;
|