Files
ZYZ/web-server/app/service/TurboCore.ts
2020-08-15 22:42:04 +08:00

58 lines
1.7 KiB
TypeScript

import { TURBO_CORE_URL, APP_ID, PARM_SECRET } from './../consts/consts';
import { Service } from 'egg';
const crypto = require('crypto');
/**
* Test Service
*/
export default class TurboCore extends Service {
/**
* sayHi to you
* @param name - your name
*/
public async getSms(telNo: string) {
const ctx = this.ctx;
let body = {
'telNo':telNo
}
const result = await ctx.curl(`${TURBO_CORE_URL}/user/getSms`, {
// 必须指定 method
method: 'POST',
// 通过 contentType 告诉 HttpClient 以 JSON 格式发送
contentType: 'json',
headers: {
'AppId': APP_ID,
'sign': this.getTurboSign( body, PARM_SECRET)
},
data: body,
// 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
dataType: 'json',
});
return result.data;
}
private getTurboSign(params, secret) {
let paramsString = this.joinParamsStr(params);
let stringToSign = paramsString;
if (secret) {
stringToSign = `${stringToSign}&secret=${secret}`;
return crypto.createHmac('sha256', secret)
.update(stringToSign)
.digest('hex');
} else {
return null;
}
}
private joinParamsStr(params) {
let signString = Object.keys(params).filter(function (key) {
return params[key] !== undefined && params[key] !== '' && ['pfx', 'partner_key', 'sign', 'key'].indexOf(key) < 0;
}).sort().map(function (key) {
return key + '=' + params[key];
}).join("&");
return signString;
}
}