Commit a69054e7 by zhaoxiqing

gsb

parent 8b72319a
...@@ -1262,7 +1262,7 @@ class EcontractApi { ...@@ -1262,7 +1262,7 @@ class EcontractApi {
} }
} }
//二要素验证(身份证、姓名)
async autoSignPersonalTwo(pobj) { async autoSignPersonalTwo(pobj) {
// 处理参数 // 处理参数
var param = { var param = {
...@@ -1356,6 +1356,102 @@ class EcontractApi { ...@@ -1356,6 +1356,102 @@ class EcontractApi {
} }
} }
//二要素验证(姓名、银行卡)
async autoSignBankTwo(pobj) {
// 处理参数
var param = {
ecid: this.trim(pobj.ecid),
appId: this.trim(pobj.appId),
userId: this.trim(pobj.userId),
idName: this.trim(pobj.idName),
idNo: this.trim(pobj.idNo),
nonceStr: this.trim(pobj.nonceStr),
sign: this.trim(pobj.sign)
};
if (!param.ecid) {
return this.returnjson(-1, "请传入薪必果提供的ecid")
}
if (!param.appId) {
return this.returnjson(-1, "请传入薪必果提供的appId")
}
if (!param.userId) {
return this.returnjson(-1, "请提供该用户的userId")
}
if (!param.idName) {
return this.returnjson(-1, "请提供该用户姓名")
}
if (!param.idNo) {
return this.returnjson(-1, "请提供该用户身份证号")
}
if (!await this.idcardClient.checkIDCard(param.idNo)) {
return this.returnjson(-1, "身份证格式不正确");
}
let busiIds = await this.etemplatebusiSve.busiIdsByTemplateId(param.ecid);
let num = await this.esettleSve.isValidAge(busiIds);
if(num) {
let card = await this.idcardClient.cardInfo(param.idNo);
let age = card.age || 0;
if(!age) {
return this.returnjson(-1, "身份证号格式错误, 只支持18位身份证号码");
}
if(card.sex == 'male') {
if (age < 18 || age > 60) {
return this.returnjson(-1, "签约失败,男限制18-60岁之间")
}
} else {
if (age < 18 || age > 55) {
return this.returnjson(-1, "签约失败,女限制18-55岁之间")
}
}
}
if (!param.nonceStr) {
return this.returnjson(-1, "请提供随机码")
}
// 查appId关联key
var busi = await this.ecompanybusiSve.findOne({
appId: param.appId
});
if (!busi || !busi.key) {
return this.returnjson(1001003, "配置信息错误,请联系薪必果人员进行配置");
}
// 签名
var signArr = [];
var keys = Object.keys(param).sort();
for (var i = 0; i < keys.length; i++) {
var k = keys[i];
var v = param[k];
if (!k || !v || k == 'sign') {
continue;
}
signArr.push(k + "=" + v);
}
var signStr = signArr.join("&") + "&key=" + busi.key;
var sign = md5(signStr).toUpperCase();
console.log(signStr, sign);
if (param.sign != sign) {
return this.returnjson(1001001, "签名错误");
}
try {
param.idNo = param.idNo.toUpperCase();
var key = param.idNo +"_"+ param.ecid
const id = uuidv1();
await this.redisLock.lock(key, id, 20);
var result = await this.econtractSve.autoSignBankTwo(param);
await this.redisLock.unLock(key, id);
return result;
} catch (error) {
console.log(error);
}
}
async formateTime(inputTime) { async formateTime(inputTime) {
if (!inputTime) { if (!inputTime) {
return ''; return '';
......
...@@ -18,6 +18,64 @@ class UitlLBWService { ...@@ -18,6 +18,64 @@ class UitlLBWService {
this.merchantId = "131032002020009";//商户ID this.merchantId = "131032002020009";//商户ID
} }
async bankTwo(params, opName){//二要素(姓名、银行卡号)
console.log(opName, "兰铂旺二要素验证");
var result = {
code: 1,
message: "success",
data: {}
};
var merchantTraceNo = await this.getRandomCode(32);
var merchantRequestTime = moment().format("YYYY-MM-DD HH:mm:ss");
var bizType = "010101";
var encrypt = {
"pan": params.cardno,//卡号,
"chName": params.name,//姓名
};
var encryptStr = JSON.stringify(encrypt);
var str = crypto.privateEncrypt(this.lbwConfig.pik, Buffer.from(encryptStr)).toString('base64');
var paramMap = {};
paramMap.merchantId = this.merchantId;
paramMap.bizType = bizType;
paramMap.merchantTraceNo = merchantTraceNo;
paramMap.merchantRequestTime = merchantRequestTime;
paramMap.encrypt = str;
var signStr = await this.sortParam(paramMap);
var sign = md5(signStr);
var list = {
"merchantId": this.merchantId,
"bizType": bizType,
"merchantTraceNo": merchantTraceNo,
"merchantRequestTime": merchantRequestTime,
"encrypt": str,
"sign": sign
}
console.log("请求参数=", list);
let rs = await axios({
url: this.lbwConfig.validate_bank,
method: 'post',
data: list,
transformRequest: [function (data) {
data = Qs.stringify(data);
return data;
}],
headers: {"Content-Type": "application/x-www-form-urlencoded"},
});
console.log("请求===", rs.config);
console.log("请求===", rs.data);
if (rs.status === 200 && rs.data) {
if (rs.data.respCode != '00000000') { //验证通过
result.code = -120;
}
return result;
}
result.code = -120;
return result;
}
async bankthree(params, opName) { //三要素验证 async bankthree(params, opName) { //三要素验证
console.log(opName, "兰铂旺三要素验证"); console.log(opName, "兰铂旺三要素验证");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment