Commit 9ce7f4dc by 赵庆

gsb

parent 7323fcb1
......@@ -44,6 +44,18 @@ class ActionAPI extends APIBase {
case "addSign":
opResult = await this.ecloudsignSve.apiaddSign(action_body);
break;
//自动生成公司印章
case "createSeal":
opResult = await this.ecloudsignSve.apicreateSeal(action_body);
break;
// 自动生成姓名矩形章
case "createSign":
opResult = await this.ecloudsignSve.apicreateSign(action_body);
break;
//页面手写签字
case "signPage":
opResult = await this.ecloudsignSve.apisignPage(action_body);
break;
//添加模板
case "addHtmlTemplate":
opResult = await this.ecloudsignSve.apiaddHtmlTemplate(action_body);
......
......@@ -232,33 +232,6 @@ class Dao {
return this.db.query(sql, tmpParas);
}
async customInsert(sql, paras, t) {
var tmpParas = null;
if (t && t != 'undefined') {
if (paras == null || paras == 'undefined') {
tmpParas = {
type: this.db.QueryTypes.INSERT
};
tmpParas.transaction = t;
} else {
tmpParas = {
replacements: paras,
type: this.db.QueryTypes.INSERT
};
tmpParas.transaction = t;
}
} else {
tmpParas = paras == null || paras == 'undefined' ? {
type: this.db.QueryTypes.INSERT
} : {
replacements: paras,
type: this.db.QueryTypes.INSERT
};
}
return this.db.query(sql, tmpParas);
}
async findCount(whereObj = null) {
return this.model.count(whereObj, {
logging: false
......
/**
* 定义数据模型的公共方法
* @param {any} name 模型名称【数据库表名】
* @param {any} attributes 数据字段集合
* @returns 数据模型对象
*/
function defineModel (name, attributes) {
var attrs = {}
for (let key in attributes) {
let value = attributes[key]
if (typeof value === 'object' && value['type']) {
value.allowNull = value.allowNull || false
attrs[key] = value
} else {
attrs[key] = {
type: value,
allowNull: false
}
}
}
// 附加公共字段
attrs.createAt = {
type: Sequelize.BIGINT,
allowNull: false
}
attrs.updateAt = {
type: Sequelize.BIGINT,
allowNull: false
}
// 状态:0表示有效,1表示无效,2表示已删除,默认为0.
attrs.status = {
type: Sequelize.INTEGER,
allowNull: false
}
// 版本
// attrs.status = {
// type: Sequelize.INTEGER,
// allowNull: false
// }
// 调用seq的方法定义模型并返回
return sequelize.define(name, attrs, {
tableName: name,
timestamps: false,
hooks: {
beforeValidate: function (obj) {
let now = Date.now()
if (obj.isNewRecord) {
obj.createAt = now
obj.updateAt = now
// obj.version = 0
} else {
obj.updateAt = now
// ++obj.version
}
}
}
})
}
\ No newline at end of file
const system = require("../../../system");
const Dao = require("../../dao.base");
class ApplycertDao extends Dao {
constructor() {
super(Dao.getModelName(ApplycertDao));
}
}
module.exports = ApplycertDao;
const system = require("../../../system");
const Dao = require("../../dao.base");
const when = require('when');
const bindCallback = require('when/node').bindCallback;
class ecloudsignDao extends Dao {
constructor() {
super(Dao.getModelName(ecloudsignDao));
}
//公共查询
async selectFields(tableName, fieldArray, where) {
var fieldString = null;
if (fieldArray.length === 0)
fieldString = '*';
else {
for (let i = 0; i < fieldArray.length; i++) {
if (fieldString === null)
fieldString = fieldArray[i];
else
fieldString = fieldString + "," + fieldArray[i]
}
}
let whereKeys = Object.keys(where);
let whereValues = Object.values(where);
let whereString = null;
for (let i = 0; i < whereKeys.length; i++) {
let where = null;
where = whereKeys[i] + " = " + whereValues[i];
if (whereString === null)
whereString = where;
else
whereString = whereString + " AND " + where;
}
let selectQuery = null;
if (whereString === null)
selectQuery = "SELECT " + fieldString + " FROM " + tableName;
else
selectQuery = "SELECT " + fieldString + " FROM " + tableName + " WHERE " + whereString;
console.log(selectQuery);
return this.customQuery(selectQuery);
}
//公共添加
async addRecord(tableName, fieldList) {
let keys = Object.keys(fieldList);
let values = Object.values(fieldList);
let fields = null;
let field_values = null;
for (let i = 0; i < keys.length; i++) {
if (fields === null) {
fields = keys[i];
} else {
fields = fields + "," + keys[i];
}
if (typeof values[i] === 'string') {
if (field_values === null)
field_values = '"' + values[i] + '"';
else
field_values = field_values + "," + '"' + values[i] + '"';
} else {
if (field_values === null)
field_values = values[i];
else
field_values = field_values + "," + values[i];
}
}
let insertQuery = "INSERT INTO " + tableName + " (" + fields + ") values (" + field_values + ")";
console.log(insertQuery);
return this.customInsert(insertQuery);
}
}
module.exports = ecloudsignDao;
\ No newline at end of file
const system = require("../../../system");
const Dao = require("../../dao.base");
class PverifyDao extends Dao {
constructor() {
super(Dao.getModelName(PverifyDao));
}
}
module.exports = PverifyDao;
const system = require("../../../system");
const Dao = require("../../dao.base");
class SignetDao extends Dao {
constructor() {
super(Dao.getModelName(SignetDao));
}
}
module.exports = SignetDao;
const system = require("../../../system");
const Dao = require("../../dao.base");
class TemplateDao extends Dao {
constructor() {
super(Dao.getModelName(TemplateDao));
}
}
module.exports = TemplateDao;
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("applycert", {
type: DataTypes.STRING,
cardType: DataTypes.STRING,
idCardNum: DataTypes.STRING,
name: DataTypes.STRING,
mobilePhone: DataTypes.STRING,
code: DataTypes.STRING,
message: DataTypes.BIGINT,
issuer: DataTypes.STRING,
serialNumber: DataTypes.STRING,
certNotBefore: DataTypes.STRING,
certNotAfter: DataTypes.STRING,
userName: DataTypes.STRING,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_applycert',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("ecouldsign", {
}, {
paranoid: true,//假的删除
underscored: true,
version: true,
freezeTableName: true,
//freezeTableName: true,
// define the table's name
tableName: '',
validate: {
},
indexes: [
// Create a unique index on email
// {
// unique: true,
// fields: ['email']
// },
//
// // Creates a gin index on data with the jsonb_path_ops operator
// {
// fields: ['data'],
// using: 'gin',
// operator: 'jsonb_path_ops'
// },
//
// // By default index name will be [table]_[fields]
// // Creates a multi column partial index
// {
// name: 'public_by_author',
// fields: ['author', 'status'],
// where: {
// status: 'public'
// }
// },
//
// // A BTREE index with a ordered field
// {
// name: 'title_index',
// method: 'BTREE',
// fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
// }
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("pverify", {
appType: DataTypes.BIGINT,
dataType: DataTypes.BIGINT,
dataId: DataTypes.STRING,
realName: DataTypes.STRING,
mobile: DataTypes.STRING,
bankNumber: DataTypes.STRING,
idCardNumber: DataTypes.STRING,
verifyType: DataTypes.BIGINT,
succeed: DataTypes.STRING,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_verify',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("signet", {
unitName: DataTypes.STRING,
mobilePhone: DataTypes.STRING,
signImg: DataTypes.STRING,
signType: DataTypes.STRING,
sealName: DataTypes.STRING,
sealNumber: DataTypes.STRING,
signId: DataTypes.BIGINT,
succeed : DataTypes.STRING,
signName : DataTypes.STRING,
status : DataTypes.BIGINT,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_signet',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("template", {
templateName: DataTypes.STRING,
templateNumber: DataTypes.STRING,
html: DataTypes.STRING,
signPosition: DataTypes.STRING,
status : DataTypes.BIGINT,
succeed : DataTypes.STRING,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_template',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const system = require("../../../system");
const ServiceBase = require("../../sve.base");
const settings = require("../../../../config/settings");
const fs = require('fs');
class EcloudsignService extends ServiceBase {
constructor() {
super("sign", ServiceBase.getDaoName(EcloudsignService));
this.ecloudsignDao = system.getObject("db.sign.ecloudsignDao");
this.pverifyDao = system.getObject("db.sign.pverifyDao");
this.signetDao = system.getObject("db.sign.signetDao");
this.applycertDao = system.getObject("db.sign.applycertDao");
this.templateDao = system.getObject("db.sign.templateDao");
this.ecloudClient = system.getObject("util.sign.ecloudsignClient");
this.reqClient = system.getObject("util.reqClient");
this.ossClient = system.getObject("util.ossClient");
this.APIURL = "https://testapi.ecloudsign.com";//"https://api.ecloudsign.com";
}
async apibankVerify(params) {
try {
return await this.bankVerify(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apiapplyCert(params) {
try {
return await this.applyCert(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apiaddSign(params) {
try {
return await this.addSign(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apicreateSeal(params) {
try {
return await this.createSeal(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apicreateSign(params) {
try {
return await this.createSign(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apisignPage(params) {
try {
return await this.signPage(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apiaddHtmlTemplate(params) {
try {
return await this.addHtmlTemplate(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apicreateContractByTemplate(params) {
try {
return await this.createContractByTemplate(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apisendSms(params) {
try {
return await this.sendSms(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apiauthorizeSign(params) {
try {
return await this.authorizeSign(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
async apidownloadCont(params) {
try {
return await this.downloadCont(params);
} catch (error) {
console.log(error);
return system.getResult(null, "接口异常");
}
}
// -----------------------以此间隔,上面为API,下面为service---------------------------------
async bankVerify(qobj) {
var selIn = {};
if (!qobj.realName) {
return system.getResult(null, "请求参数为空");
} else {
selIn.realName = qobj.realName;
}
if (!qobj.bankNumber) {
return system.getResult(null, "请求参数bankNumber为空");
} else {
selIn.bankNumber = qobj.bankNumber;
}
if (!qobj.idCardNumber) {
return system.getResult(null, "请求参数idCardNumber为空");
} else {
selIn.idCardNumber = qobj.idCardNumber;
}
if (qobj.verifyType != 3 && qobj.verifyType != 4) {
return system.getResult(null, "请求参数verifyType错误");
} else {
selIn.verifyType = qobj.verifyType;
}
if (qobj.verifyType == 4) {
if (!qobj.mobile) {
return system.getResult(null, "请求参数mobile为空");
} else {
selIn.mobile = qobj.mobile;
}
}
let verifyData = await this.pverifyDao.model.findAll({where: selIn, raw: true});
if (verifyData.length > 0) {
return JSON.parse(verifyData[0].succeed);
}
const params = await this.ecloudClient.rformat({bankInfo: JSON.stringify(selIn)});
const url = this.APIURL + "/ecs/auth/bankVerify.jspa";
let body = await this.reqClient.reqFormData(params, url);
console.log(body);
selIn.succeed = body;
this.pverifyDao.create(selIn).then(jane => {
console.log(jane.id);
});
return JSON.parse(body);
}
async applyCert(qobj) {
var result = {};
var inse = {};
if (!qobj.type) {
return system.getResult(null, "请求参数type为空");
} else {
inse.type = qobj.type;
}
if (!qobj.cardType) {
return system.getResult(null, "请求参数cardType为空");
} else {
inse.cardType = qobj.cardType;
}
if (!qobj.idCardNum) {
return system.getResult(null, "请求参数idCardNum为空")
} else {
inse.idCardNum = qobj.idCardNum;
}
if (qobj.name) {
inse.name = qobj.name;
}
if (qobj.mobilePhone) {
inse.mobilePhone = qobj.mobilePhone;
}
let applyData = await this.applycertDao.model.findAll({where: inse, raw: true});
if (applyData.length > 0) {
result.code = applyData[0].code;
result.message = applyData[0].message;
if (applyData[0].code == 0) {
result.data = {
userName: applyData[0].userName,
serialNumber: applyData[0].serialNumber,
certNotBefore: applyData[0].certNotBefore,
certNotAfter: applyData[0].certNotAfter,
issuer: applyData[0].issuer
};
}
return result;
}
var params = await this.ecloudClient.rformat({info: JSON.stringify(qobj)});
var url = this.APIURL + "/ecs/account/applyCert.jspa";
let body = await this.reqClient.reqFormData(params, url);
body = JSON.parse(body);
console.log(body)
result.code = body.meta.code;
result.msg = body.meta.message;
inse.code = body.meta.code;
inse.message = body.meta.message;
if (body.meta.code === 0) {
result.data = body.data;
inse.userName = body.data.userName;
inse.serialNumber = body.data.serialNumber;
inse.certNotBefore = body.data.certNotBefore;
inse.certNotAfter = body.data.certNotAfter;
inse.issuer = body.data.issuer;
}
this.applycertDao.create(inse).then(jane => {
console.log(jane.id);
});
return result;
}
async addSign(qobj) {
var seleIn = {};
if (!qobj.mobilePhone) {
return system.getResult(null, "请求参数mobilePhone为空");
} else {
seleIn.mobilePhone = qobj.mobilePhone
}
if (!qobj.signType) {
return system.getResult(null, "请求参数signType为空")
} else {
seleIn.signType = qobj.signType;
}
if (!qobj.signImg) {
return system.getResult(null, "请求参数signImg为空")
}
let bitmap = fs.readFileSync(qobj.signImg);
qobj.signImg = Buffer.from(bitmap, 'binary').toString('base64');//base64编码
let signetData = await this.signetDao.model.findAll({where: seleIn, raw: true});
if (signetData.length > 0) {
return JSON.parse(signetData[0].succeed);
}
var params = await this.ecloudClient.rformat(qobj);
var url = this.APIURL + "/ecs/signInfo/addSign.jspa";
let body = await this.reqClient.reqFormData(params, url);
console.log(body);
if ((JSON.parse(body)).meta.code === 0) {
seleIn.signId = (JSON.parse(body)).data.signId;
}
seleIn.succeed = body;
seleIn.signImg = qobj.signImg;
this.signetDao.create(seleIn).then(jane => {
console.log(jane.id);
});
return JSON.parse(body);
}
async createSeal(qobj) {
var params = await this.ecloudClient.rformat(qobj);
var url = this.APIURL + "/ecs/signInfo/createSeal.jspa"; //短名称
var url_L = this.APIURL + "/ecs/signInfo/createSealLong.jspa";//长名称
if (qobj.unitName.length > 16) {
url = url_L;
}
let seleIn = {
mobilePhone: qobj.mobilePhone,
unitName: qobj.unitName
};
let signetData = await this.signetDao.model.findAll({where: seleIn, raw: true});
if (signetData.length > 0) {
return JSON.parse(signetData[0].succeed);
}
let body = await this.reqClient.reqFormData(params, url);
console.log(body)
if (JSON.parse(body).meta.code === 0) {
seleIn.signId = JSON.parse(body).data.signId;
}
seleIn.succeed = body;
seleIn.signType = 4;
this.signetDao.create(seleIn).then(jane => {
console.log(jane.id);
});
return JSON.parse(body);
}
async createSign(qobj) {
var params = await this.ecloudClient.rformat(qobj);
var url = this.APIURL + "/ecs/signInfo/createSign.jspa"; //短名称
let seleIn = {
mobilePhone: qobj.mobilePhone,
signName: qobj.signName
};
let signetData = await this.signetDao.model.findAll({where: seleIn, raw: true});
if (signetData.length > 0) {
return JSON.parse(signetData[0].succeed);
}
let body = await this.reqClient.reqFormData(params, url);
if (JSON.parse(body).meta.code === 0) {
seleIn.signId = JSON.parse(body).data.signId;
}
seleIn.succeed = body;
seleIn.signType = 5;
this.signetDao.create(seleIn).then(jane => {
console.log(jane.id);
});
return JSON.parse(body);
}
async signPage(qobj) {
}
async addHtmlTemplate(qobj) {
var selIn = {};
if (!qobj.templateName) {
return system.getResult(null, "请求参数templateName为空");
} else {
selIn.templateName = qobj.templateName;
}
if (!qobj.html) {
return system.getResult(null, "请求参数html为空");
} else {
selIn.html = qobj.html;
qobj.html = fs.readFileSync(qobj.html, 'utf-8');
}
if (qobj.templateNumber) {
selIn.templateNumber = qobj.templateNumber;
}
if (qobj.signPosition) {
selIn.signPosition = JSON.stringify(qobj.signPosition);
}
let temDta = await this.templateDao.model.findAll({where: selIn, raw: true});
if (temDta.length > 0) {
return system.getResult(JSON.parse(temDta[0].succeed));
}
qobj.signPosition = JSON.stringify(qobj.signPosition)
var params = await this.ecloudClient.rformat(qobj);
var url = this.APIURL + "/ecs/template/addHtmlTemplate.jspa";
let body = await this.reqClient.reqFormData(params, url);
console.log(body);
if ((JSON.parse(body)).meta.code === 0) {
selIn.templateNumber = (JSON.parse(body)).data.templateNumber;
}
selIn.succeed = body;
this.templateDao.create(selIn).then(jane => {
console.log(jane.id);
});
return JSON.parse(body);
}
async createContractByTemplate(qobj) {
var params = await this.ecloudClient.rformat(qobj);
var url = this.APIURL + "/ecs/template/createContractByTemplate.jspa";
let body = await this.reqClient.reqFormData(params, url);
console.log(body)
return JSON.parse(body);
}
async sendSms(qobj) {
var params = await this.ecloudClient.rformat(qobj);
var url = this.APIURL + "/ecs/contract/sendSms.jspa";
let body = await this.reqClient.reqFormData(params, url);
return JSON.parse(body);
}
async authorizeSign(qobj) {
qobj.signerInfo = JSON.stringify(qobj.signerInfo);
qobj.signInfo = JSON.stringify(qobj.signInfo);
var params = await this.ecloudClient.rformat(qobj);
console.log(params)
var url = this.APIURL + "/ecs/contract/authorizeSign.jspa";
let body = await this.reqClient.reqFormData(params, url);
console.log(body);
return JSON.parse(body);
}
async downloadCont(qobj) {
var result = {};
var params = await this.ecloudClient.rformat(qobj);
var url = this.APIURL + "/ecs/contract/downloadCont.jspa";
let body = await this.reqClient.reqFormData(params, url);
body = JSON.parse(body);
fs.writeFile('/mnt/output-1.pdf', new Buffer(body.data.bytes, "base64"), function (response) {
console.log('File Saved!');
});
console.log("程序执行完毕");
result.code = body.meta.code;
result.mes = body.meta.message;
let ss = await this.ossClient.upfile("测试","/mnt/output-1.pdf");
result.data = ss.url
return result;
}
// -----------------------以此间隔,上面service, 下面为请求数据库---------------------------------
}
module.exports = EcloudsignService;
const request = require('request');
class ReqClient {
constructor() {
}
async reqFormData(params, url) {
let options = {
url: url,
form: params
};
return new Promise(function (resolve, reject) {
request.post(options, function (error, response, body) {
if (error) {
reject(error);
} else {
resolve(body);
}
});
});
}
}
module.exports = ReqClient;
const moment = require("moment");
class ecloudsignClient {
constructor() {
this.appKey = "yyzm68fu5g3epaa3pc";
this.secret = "5ccba1e4baea71eaa2d1132a2205fef2";
}
//获取请求参数
async rformat(qobj) {
qobj.timestamp = await this.getNewDate();
qobj.appKey = this.appKey;
qobj.v = '1.0';
qobj.nonce = await this.getRandomCode(6);
let signature = await this.signature(qobj, this.secret);
qobj.signature = signature;
return qobj;
}
//获取当前时间
async getNewDate() {
let date = moment().add(13, "hours").format("YYYY-MM-DD HH:mm:ss");
return date;
}
//随机生成数字
async getRandomCode(iun) {
var randStr = "";
for (var i = 0; i < iun; i++) {//此处的12为生成12位数字,可随即更改
var randItem = Math.floor(Math.random() * 10);
randStr += randItem;
}
return randStr;
}
async signature(args, secret) {
let newArgs = tosort(args);
var string = '';
for (var k in newArgs) {
if(typeof newArgs[k] == "object"){
let kvalue = tosort(newArgs[k]);
newArgs[k] = JSON.stringify(kvalue[0]);
// newArgs[k] = JSON.stringify(kvalue);
}
// string += '&' + k + '=' + newArgs[k];
string += newArgs[k];
}
console.log(string)
var str = secret + string + secret;
console.log(str)
var crypto = require('crypto');
return crypto.createHash('md5').update(str,'utf8').digest('hex').toUpperCase();
}
}
function tosort(args){
if(args.length == 2){
return args;
}
var keys = Object.keys(args);
keys = keys.sort();
var newArgs = {};
keys.forEach(function (key) {
newArgs[key] = args[key];
});
return newArgs;
}
module.exports = ecloudsignClient;
......@@ -24,7 +24,7 @@ var settings = {
salt: "%iatpD1gcxz7iF#B",
defaultpwd: "987456",
basepath: path.normalize(path.join(__dirname, '../..')),
port: process.env.NODE_PORT || 3101,
port: process.env.NODE_PORT || 3333,
reqEsAddr: function () {
if (this.env == "dev") {
var localsettings = require("./localsettings");
......
## 商户服务接口
  1 [商户接口](doc/merchant/merchant.md)
  2 [签约管理](doc/merchant/signed.md)
  3 [资金账户](doc/merchant/account.md)
  4 [充值管理](doc/merchant/recharge.md)
  5 [抬头管理](doc/merchant/title.md)
  6 [地址管理](doc/merchant/address.md)
  1 [易云章接口](doc/sign/sign.md)
<a name="menu">目录</a>
1. [银行卡认证](#orderList)
## **<a name="bankVerify"> 银行卡认证 </a>**
[返回到目录](#menu)
##### URL
[/api/op/action/springboard]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"action_process": "test",
"action_type": "bankVerify",
"action_body": {
"realName": "张奇", //姓名
"mobile": "13716585658", //手机号 三要素 为4是必传
"bankNumber": "61220838112002934029", //银行卡号
"idCardNumber": "1107276789679999", //身份证号
"verifyType": 3, //三要素 =3 四要素 =4
//--------以上必传参数
"appType":1, //应用类型
"dataType":1 //数据类型
"dataId":"No112131", //dataId
}
}
```
#### 成功结果
```javascript
{
"code":0,
"msg":"信息一致",
"requestid":"1201f930ea8e450798b8a6cbbc0c8ab3"
}
```
#### 失败结果
```javascript
{
"code": 16,
"msg": "手机号不合法",
"requestid": "1201f930ea8e450798b8a6cbbc0c8ab3"
}
```
## **<a name="createStep"> 创建进度 </a>**
[返回到目录](#menu)
##### URL
[/web/order/orderCtl/createStep]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
}
```
#### 返回结果
```javascript
{
}
```
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -38,13 +38,16 @@
"node-cron": "^2.0.1",
"node-uuid": "^1.4.8",
"qr-image": "^3.2.0",
"request": "^2.88.0",
"sequelize": "^4.37.8",
"sequelize-cli": "^4.1.1",
"serve-favicon": "^2.4.5",
"sha1": "^1.1.1",
"socket.io": "^2.1.1",
"string_decoder": "^1.3.0",
"svg-captcha": "^1.4.0",
"uuid": "^3.2.1"
"uuid": "^3.2.1",
"when": "^3.7.8"
},
"devDependencies": {
"element-theme": "^2.0.1",
......
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