'use strict'; /** * Express router of aliyun/ */ const express = require('express'); const {default: common} = require('./common.js'); const {default: aliyunSmsClient} = require('./aliyunSmsClient'); const {default: defaultConfig, getCustomConfigs: getCustomConfigs} = require('./conf/config'); const router = express.Router(); let customConfig = null; //发送注册验证码短信接口 /** * @phoneNumber: 手机号码 * @codeNumber: 4位数字的验证码 * @action: ['register', 'login'] * @sign: 签名 */ router.post('/sendverifycode', async (req, res) => { let phoneNumber = req.body.phoneNumber; let codeNumber = req.body.codeNumber; let action = req.body.action ? req.body.action : 'register'; let sign = req.body.sign; let data = {code: 0, message: ''}; if (!phoneNumber || !codeNumber || !sign) { data.message = '参数不能为空'; }else if (common.isPhoneNumber(phoneNumber) == false) { data.message = '手机号码格式错误'; }else if (common.isVerifyCode(codeNumber) == false) { data.message = '验证码格式错误,必须是4位数的数字'; }else { //使用默认配置 let myConfig = defaultConfig; //加载自定义配置 if (!customConfig) { customConfig = await getCustomConfigs('./conf/custom_config.json'); } //使用自定义配置 myConfig = customConfig; let paramsCheck = {}; for (const key in req.body) { if (key != 'sign') { paramsCheck[key] = req.body[key]; } } let mySign = common.sign(paramsCheck, myConfig.secret); if (mySign.toLowerCase() != sign.toLowerCase()) { data.message = `签名 ${sign} 不匹配,请确保密钥正确及签名方法跟文档一致`; } } if (!data.message) { let signName = 'Ta荐', templateCode = action == 'register' ? 'SMS_465895580' : 'SMS_465915662', templateParam = `{"code":"${codeNumber}"}`; let sended = await aliyunSmsClient.send(myConfig, signName, templateCode, templateParam, phoneNumber); if (sended) { data.code = 1; data.message = '验证码发送成功'; }else { data.message = '验证码发送失败,请稍后重试'; } } return res.status(200).json(data); }); exports.default = router;