Commit 1c4b8c1c by 王昆

gsb

parent 1e0da477
......@@ -3,14 +3,18 @@ const http = require("http")
const querystring = require('querystring');
var settings = require("../../../config/settings");
const AppletBase = require("../applet.base");
const fs = require("fs");
const moment = require("moment");
const axios = require("axios");
const validation = system.getObject("util.validation");
const md5 = require("MD5");
class MerchantApplet extends AppletBase {
constructor() {
super();
this.SMS_BANKMOBILE_KEY = "gtb_appl_mobile_";
this.BANK_FOUR = "https://bpohhr.gongsibao.com/api/econtractApi/bankfour";
this.GTB_APPID = "gtb-mcht-applet";
this.GTB_KEY = "0e2e4e7249b79q50f234071651971242";
this.uploadCtl = system.getObject("web.common.uploadCtl");
this.idcardClient = system.getObject("util.idcardClient");
......@@ -85,16 +89,22 @@ class MerchantApplet extends AppletBase {
// 保存订单信息
async saveOrder(gobj, pobj, req, loginUser) {
try {
let verificationCodeRes = await this.verificationCode(pobj.bank_mobile, pobj.msgCode)
if (!verificationCodeRes) {
return this.returnFail("短信验证码错误");
}
//TODO: 银行卡四要数验证
let rs = await this.buildOrder(pobj);
if (rs.code === 0) {
return rs;
}
let bminfo = rs.data;
// 银行卡四要数验证
let bf = await this.bankfour({
userName: bminfo.legal_name,
userIdNo: bminfo.legal_idno,
userBankNo: bminfo.bank_no,
userMobile: bminfo.bank_mobile,
});
if (bf.code !== 0) {
return this.returnFail(rs.msg || "银行卡四要素验证失败,请检查法人姓名,身份证,银行卡号,银行卡预留手机号正确");
}
let merchant = await this.getMerchant(pobj.merchant_id);
let loginUser = await this.getLoginUser(pobj.merchant_id, pobj.openid);
let order = {
......@@ -104,7 +114,7 @@ class MerchantApplet extends AppletBase {
merchant_app_user_id: loginUser.id,
price: system.y2f(merchant.sign.bm_reg_price) || 0,
bminfo: rs.data
}
};
let res = await this.orderSve.microAdd(order);
if (res.status === 0) {
......@@ -164,7 +174,18 @@ class MerchantApplet extends AppletBase {
if (!obj.bank_mobile) {
return this.returnFail("请填写银行预留手机号");
}
let noteCode = (obj.note_code || "").trim();
if (!noteCode) {
return this.returnFail("请填写短信验证码");
}
let vcode = await this.redisClient.get(this.SMS_BANKMOBILE_KEY + obj.bank_mobile);
if (!vcode) {
return this.returnFail("短信验证码已过期,请重新发送");
}
if (vcode != noteCode) {
return this.returnFail("短信验证码错误,请重新填写");
}
let bminfo = {
idcard_front: obj.idcard_front,
idcard_back: obj.idcard_back,
......@@ -398,18 +419,44 @@ class MerchantApplet extends AppletBase {
return randomNum;
}
async bankfour(params) {
let nonceStr = await this.getUidStr(16, 36);
let data = {
appId: this.GTB_APPID,
userName: params.userName,
userIdNo: params.userIdNo,
userBankNo: params.userBankNo,
userMobile: params.userMobile,
nonceStr: nonceStr,
};
/**
* 驗證验证码
* @param pobj1
* @param pobj2
* @param req
* @returns {Promise<void>}
*/
async verificationCode(mobile, code) {
let value = await this.redisClient.get(`merchantAppletMsg:${mobile}`);
console.log("小程序验证码" + value);
return value == code ? true : false;
// 签名
var signArr = [];
var keys = Object.keys(data).sort();
for (var i = 0; i < keys.length; i++) {
var k = keys[i];
var v = data[k];
if (!k || !v || k == 'sign') {
continue;
}
signArr.push(k + "=" + v);
}
var signStr = signArr.join("&") + "&key=" + this.GTB_KEY;
var sign = md5(signStr).toUpperCase();
console.log(sign);
data.sign = sign;
let rs = await axios({
method: 'post',
url: this.BANK_FOUR,
data: data,
});
try {
console.log(rs.data, `个体户注册银行卡四要素验证request[${JSON.stringify(data)}], response[${JSON.stringify(rs.data)}]`);
} catch (e) {
console.log(e.stack);
}
return rs.data || {};
}
}
......
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