Commit 1c4b8c1c by 王昆

gsb

parent 1e0da477
...@@ -3,14 +3,18 @@ const http = require("http") ...@@ -3,14 +3,18 @@ const http = require("http")
const querystring = require('querystring'); const querystring = require('querystring');
var settings = require("../../../config/settings"); var settings = require("../../../config/settings");
const AppletBase = require("../applet.base"); const AppletBase = require("../applet.base");
const fs = require("fs");
const moment = require("moment"); const moment = require("moment");
const axios = require("axios");
const validation = system.getObject("util.validation"); const validation = system.getObject("util.validation");
const md5 = require("MD5");
class MerchantApplet extends AppletBase { class MerchantApplet extends AppletBase {
constructor() { constructor() {
super(); super();
this.SMS_BANKMOBILE_KEY = "gtb_appl_mobile_"; 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.uploadCtl = system.getObject("web.common.uploadCtl");
this.idcardClient = system.getObject("util.idcardClient"); this.idcardClient = system.getObject("util.idcardClient");
...@@ -85,16 +89,22 @@ class MerchantApplet extends AppletBase { ...@@ -85,16 +89,22 @@ class MerchantApplet extends AppletBase {
// 保存订单信息 // 保存订单信息
async saveOrder(gobj, pobj, req, loginUser) { async saveOrder(gobj, pobj, req, loginUser) {
try { try {
let verificationCodeRes = await this.verificationCode(pobj.bank_mobile, pobj.msgCode)
if (!verificationCodeRes) {
return this.returnFail("短信验证码错误");
}
//TODO: 银行卡四要数验证
let rs = await this.buildOrder(pobj); let rs = await this.buildOrder(pobj);
if (rs.code === 0) { if (rs.code === 0) {
return rs; 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 merchant = await this.getMerchant(pobj.merchant_id);
let loginUser = await this.getLoginUser(pobj.merchant_id, pobj.openid); let loginUser = await this.getLoginUser(pobj.merchant_id, pobj.openid);
let order = { let order = {
...@@ -104,7 +114,7 @@ class MerchantApplet extends AppletBase { ...@@ -104,7 +114,7 @@ class MerchantApplet extends AppletBase {
merchant_app_user_id: loginUser.id, merchant_app_user_id: loginUser.id,
price: system.y2f(merchant.sign.bm_reg_price) || 0, price: system.y2f(merchant.sign.bm_reg_price) || 0,
bminfo: rs.data bminfo: rs.data
} };
let res = await this.orderSve.microAdd(order); let res = await this.orderSve.microAdd(order);
if (res.status === 0) { if (res.status === 0) {
...@@ -164,7 +174,18 @@ class MerchantApplet extends AppletBase { ...@@ -164,7 +174,18 @@ class MerchantApplet extends AppletBase {
if (!obj.bank_mobile) { if (!obj.bank_mobile) {
return this.returnFail("请填写银行预留手机号"); 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 = { let bminfo = {
idcard_front: obj.idcard_front, idcard_front: obj.idcard_front,
idcard_back: obj.idcard_back, idcard_back: obj.idcard_back,
...@@ -398,18 +419,44 @@ class MerchantApplet extends AppletBase { ...@@ -398,18 +419,44 @@ class MerchantApplet extends AppletBase {
return randomNum; 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,
};
/** // 签名
* 驗證验证码 var signArr = [];
* @param pobj1 var keys = Object.keys(data).sort();
* @param pobj2 for (var i = 0; i < keys.length; i++) {
* @param req var k = keys[i];
* @returns {Promise<void>} var v = data[k];
*/ if (!k || !v || k == 'sign') {
async verificationCode(mobile, code) { continue;
let value = await this.redisClient.get(`merchantAppletMsg:${mobile}`); }
console.log("小程序验证码" + value); signArr.push(k + "=" + v);
return value == code ? true : false; }
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