Files
ZYZ/shared/pubUtils/httpUtil.ts
2021-03-04 20:36:59 +08:00

104 lines
2.5 KiB
TypeScript

import * as request from "request-promise";
import * as crypto from 'crypto'
import { BANTU_VID_ADDR, BANTU_VID_APP_KEY } from '../consts';
/**
* 在线报告
* @param userCode 账号
* @param packageName 包名
*/
export async function reportOnline ( userCode: string, packageName: string) {
if(!packageName || packageName==''){
packageName = 'com.bantu.nfsg'
}
let result = await vidHttpRequest(BANTU_VID_ADDR.REPORT_ONLINE, {
account: userCode,
package: packageName
});
if(result && result.code !== 1) {
console.error(result.msg);
}
return result;
}
/**
* 实名认证
* @param name 真实姓名
* @param idNum 身份证号
* @param userCode 账号
* @param packageName 包名
*/
export async function authenticate (name: string, idNum: string, userCode: string, packageName: string) {
if(!packageName || packageName==''){
packageName = 'com.bantu.nfsg'
}
let result = await vidHttpRequest(BANTU_VID_ADDR.IDCARD, {
account: userCode,
cardno: idNum,
name,
appkey: BANTU_VID_APP_KEY,
package: packageName
});
if(result && result.code !== 1) {
console.error(result.msg);
}
return result && result.code == 1;
}
export async function vidHttpRequest(addr: string, body: any) {
body['sign'] = getObjSign(body);
console.log('body: ', JSON.stringify(body))
let options = {
url: BANTU_VID_ADDR.HOST + addr,
method: 'POST',
body:body,
json: true
}
try {
let res = await request(options);
let check = checkSign(res);
if(!check) return false;
console.log('*****request result*****');
console.log(JSON.stringify(res));
return res;
} catch(e) {
console.error(e);
return false
}
}
export function md5Vid (str: string) {
str = 'vId' + str;
return crypto.createHash('md5').update(str, 'utf8').digest("hex");
};
export function getObjSign (obj: any) {
const str = [];
Object.keys(obj).sort().forEach((key) => {
if (key == 'sign') {
} else {
str.push(key + '=' + obj[key]);
}
});
if (str.length == 0) {
console.error('check obj', obj);
}
var strs = str.join('');
return md5Vid(strs);
}
export async function checkSign (obj: any) {
if (getObjSign(obj) === obj.sign) {
return true;
}
console.warn('correct sign:', getObjSign(obj), obj.sign);
return false;
}