Commit 90560737 by 王昆

gsb

parent 7029e472
var system = require("../../../system")
const CtlBase = require("../../ctlms.base");
class TradeCtl extends CtlBase {
constructor() {
super();
this.tradeSve = system.getObject("service.trade.tradeSve");
this.redisClient = system.getObject("util.redisClient");
}
async orderPage(params, pobj2, req) {
try {
this.doTimeCondition(params, ["createBegin", "createEnd"]);
return await this.tradeSve.orderPage(params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
async orderInfo(params, pobj2, req) {
try {
return await this.tradeSve.orderInfo(params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
async itemPage(params, pobj2, req) {
try {
this.doTimeCondition(params, ["createBegin", "createEnd"]);
return await this.tradeSve.itemPage(params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
async audit1(params, pobj2, req) {
try {
return await this.tradeSve.audit1(params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
async audit2(params, pobj2, req) {
try {
return await this.tradeSve.audit2(params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
async trade(params, pobj2, req) {
try {
return await this.tradeSve.trade(params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
async tradeFeedBack(params, pobj2, req) {
try {
return await this.tradeSve.tradeFeedBack(params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
}
module.exports = TradeCtl;
\ No newline at end of file
......@@ -8,6 +8,11 @@ class MerchantService extends ServiceBase {
this.mainSve = system.getObject("service.saas.mainSve");
}
async idsLikeName(params) {
var rs = await this.callms("merchant", "mchtIdsLikeName", params || {});
return rs;
}
async mapByIds(params) {
var rs = await this.callms("merchant", "mchtMapByIds", params || {});
return rs;
......
const system = require("../../../system");
const ServiceBase = require("../../svems.base");
const settings = require("../../../../config/settings");
class TradeService extends ServiceBase {
constructor() {
super();
this.businessmenSve = system.getObject("service.business.businessmenSve");
this.merchantSve = system.getObject("service.saas.merchantSve");
this.redisClient = system.getObject("util.redisClient");
}
async orderPage(params) {
params.currentPage = Number(params.currentPage || 1);
params.pageSize = Number(params.pageSize || 10);
let res = await this.setMerchantIdsByName(params);
if (res.status !== 0) {
return system.getResultSuccess({count: 0, rows: []});
}
let rs = await this.callms("trade", "orderPage", params) || {};
if (rs.data && rs.data.rows) {
this.transFields(rs.data.rows);
}
return rs;
}
async orderInfo(params) {
let rs = await this.callms("trade", "orderInfo", params) || {};
let order = rs.data;
if (order) {
this.transFields([order]);
let merchant = await this.merchantSve.info({id: order.saas_merchant_id}) || {};
merchant = merchant.data || {};
order.merchant_name = merchant.name;
}
return rs;
}
async setMerchantIdsByName(params) {
let merchantName = this.trim(params.merchant_name);
if (merchantName) {
let merchantIds = await this.merchantSve.idsLikeName({
name: merchantName,
saas_id: this.trim(params.saas_id),
saas_merchant_id: this.trim(params.saas_merchant_id),
}) || {};
if (!merchantIds || !merchantIds.data || merchantIds.data.length == 0) {
return system.getResult(null);
}
params.saas_merchant_ids = merchantIds.data;
}
return system.getResultSuccess();
}
async itemPage(params) {
params = params || {};
params.currentPage = Number(params.currentPage || 1);
params.pageSize = Number(params.pageSize || 10);
let res = await this.setMerchantIdsByName(params);
if (res.status !== 0) {
return system.getResultSuccess({count: 0, rows: []});
}
let rs = await this.callms("trade", "itemPage", params) || {};
if (rs.data && rs.data.rows) {
this.transFields(rs.data.rows);
}
return rs;
}
async audit1(params) {
let rs = await this.callms("trade", "orderAudit1", params) || {};
return rs;
}
async audit2(params) {
let rs = await this.callms("trade", "orderAudit2", params) || {};
return rs;
}
async trade(params) {
let rs = await this.callms("trade", "orderTrade", params) || {};
return rs;
}
async tradeFeedBack(params) {
let rs = await this.callms("trade", "itemTradeOfflineCB", params) || {};
return rs;
}
transFields(rows) {
if (!rows || rows.length == 0) {
return;
}
for (let row of rows) {
row.amt = system.f2y(row.amt);
row.actual_amt = system.f2y(row.actual_amt);
row.deduct_amt = system.f2y(row.deduct_amt);
row.service_tax = system.f2y(row.service_tax);
row.service_rate = system.f2y(row.service_rate);
}
}
}
module.exports = TradeService;
\ No newline at end of file
var fs = require("fs");
var objsettings = require("../config/objsettings");
var settings = require("../config/settings");
class System {
static declare(ns) {
var ar = ns.split('.');
var root = System;
for (var i = 0, len = ar.length; i < len; ++i) {
var n = ar[i];
if (!root[n]) {
root[n] = {};
root = root[n];
} else {
root = root[n];
}
}
}
static register(key, ClassObj) {
if (System.objTable[key] != null) {
throw new Error("相同key的对象已经存在");
} else {
let obj = new ClassObj();
System.objTable[key] = obj;
}
return System.objTable[key];
}
static getResult(data, opmsg = "操作成功", req) {
return {
status: !data ? -1 : 0,
msg: opmsg,
data: data || null,
bizmsg: req && req.session && req.session.bizmsg ? req.session.bizmsg : "empty"
};
}
/**
* 请求返回成功
* @param {*} data 操作成功返回的数据
* @param {*} okmsg 操作成功的描述
*/
static getResultSuccess(data, okmsg = "success") {
return {
status: 0,
msg: okmsg,
data: data || null,
};
}
/**
* 请求返回失败
* @param {*} status 操作失败状态,默认为-1
* @param {*} errmsg 操作失败的描述,默认为fail
* @param {*} data 操作失败返回的数据
*/
static getResultFail(status = -1, errmsg = "fail", data = null) {
return {
status: status,
msg: errmsg,
data: data,
};
}
static getObject(objpath) {
var pathArray = objpath.split(".");
var packageName = pathArray[0];
var groupName = pathArray[1];
var filename = pathArray[2];
var classpath = "";
if (filename) {
classpath = objsettings[packageName] + "/" + groupName;
} else {
classpath = objsettings[packageName];
filename = groupName;
}
var objabspath = classpath + "/" + filename + ".js";
if (System.objTable[objabspath] != null) {
console.log("get cached obj");
return System.objTable[objabspath];
} else {
console.log("no cached...");
var ClassObj = require(objabspath);
return System.register(objabspath, ClassObj);
}
}
static getUiConfig(appid) {
var configPath = settings.basepath + "/app/base/db/metadata/" + appid + "/index.js";
if (settings.env == "dev") {
delete require.cache[configPath];
}
var configValue = require(configPath);
return configValue;
}
static getUiConfig2(appid) {
var configPath = settings.basepath + "/app/base/db/metadata/index.js";
// if(settings.env=="dev"){
// console.log("delete "+configPath+"cache config");
// delete require.cache[configPath];
// }
delete require.cache[configPath];
var configValue = require(configPath);
return configValue[appid];
}
static get_client_ip(req) {
var ip = req.headers['x-forwarded-for'] ||
req.ip ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
(req.connection.socket && req.connection.socket.remoteAddress) || '';
var x = ip.match(/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/);
if (x) {
return x[0];
} else {
return "localhost";
}
};
static y2f(y) {
if (!y) {
return 0;
}
return (Number(y) * 100).toFixed(0);
}
static f2y(f) {
if (!f) {
return 0;
}
return parseFloat((Number(f) / 100).toFixed(2));
}
static f2y4list(list, fields, prev) {
if (!list || list.length == 0 || !fields || fields.length == 0) {
return;
}
prev = prev || "";
for (var item of list) {
for (var f of fields) {
var v = item[f] || 0;
try {
item[f + "_y"] = prev + parseFloat((Number(v) / 100).toFixed(2));
} catch (error) {
console.log(error);
}
}
}
}
static getUid(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
var uuid = [],
i;
radix = radix || chars.length;
if (len) {
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
var r;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
}
static microsetting() {
console.log(settings.env, "-------------- microsetting env ------------------");
var path = "/api/op/action/springboard";
if (settings.env == "dev") {
// var domain = "http://192.168.18.237";
let local = "http://127.0.0.1";
let dev = "http://39.107.234.14";
return {
// 公共服务
common: dev + ":3102" + path,
// common: "http://127.0.0.1:3102" + path,
// 商户服务
merchant: dev + ":3101" + path,
// merchant: "http://127.0.0.1:3101" + path,
// 订单服务
order: dev + ":3103" + path,
// order: "http://127.0.0.1:3103" + path,
// 发票服务
invoice: dev + ":3105" + path,
// invoice: "http://127.0.0.1:3105" + path,
// 用户服务
uc: dev + ":3106" + path,
// uc: "http://127.0.0.1:3106" + path,
}
} else {
var odomain = "http://123.57.217.203"
return {
common: "xggsvecommon-service" + path,
merchant: "xggsvemerchant-service" + path,
order: "xggsveorder-service" + path,
invoice: "xggsveinvoice-service" + path,
uc: "xggsveuc-service" + path,
}
}
}
static declare(ns) {
var ar = ns.split('.');
var root = System;
for (var i = 0, len = ar.length; i < len; ++i) {
var n = ar[i];
if (!root[n]) {
root[n] = {};
root = root[n];
} else {
root = root[n];
}
}
}
static register(key, ClassObj) {
if (System.objTable[key] != null) {
throw new Error("相同key的对象已经存在");
} else {
let obj = new ClassObj();
System.objTable[key] = obj;
}
return System.objTable[key];
}
static getResult(data, opmsg = "操作成功", req) {
return {
status: !data ? -1 : 0,
msg: opmsg,
data: data || null,
bizmsg: req && req.session && req.session.bizmsg ? req.session.bizmsg : "empty"
};
}
/**
* 请求返回成功
* @param {*} data 操作成功返回的数据
* @param {*} okmsg 操作成功的描述
*/
static getResultSuccess(data, okmsg = "success") {
return {
status: 0,
msg: okmsg,
data: data || null,
};
}
/**
* 请求返回失败
* @param {*} status 操作失败状态,默认为-1
* @param {*} errmsg 操作失败的描述,默认为fail
* @param {*} data 操作失败返回的数据
*/
static getResultFail(status = -1, errmsg = "fail", data = null) {
return {
status: status,
msg: errmsg,
data: data,
};
}
static getObject(objpath) {
var pathArray = objpath.split(".");
var packageName = pathArray[0];
var groupName = pathArray[1];
var filename = pathArray[2];
var classpath = "";
if (filename) {
classpath = objsettings[packageName] + "/" + groupName;
} else {
classpath = objsettings[packageName];
filename = groupName;
}
var objabspath = classpath + "/" + filename + ".js";
if (System.objTable[objabspath] != null) {
console.log("get cached obj");
return System.objTable[objabspath];
} else {
console.log("no cached...");
var ClassObj = require(objabspath);
return System.register(objabspath, ClassObj);
}
}
static getUiConfig(appid) {
var configPath = settings.basepath + "/app/base/db/metadata/" + appid + "/index.js";
if (settings.env == "dev") {
delete require.cache[configPath];
}
var configValue = require(configPath);
return configValue;
}
static getUiConfig2(appid) {
var configPath = settings.basepath + "/app/base/db/metadata/index.js";
// if(settings.env=="dev"){
// console.log("delete "+configPath+"cache config");
// delete require.cache[configPath];
// }
delete require.cache[configPath];
var configValue = require(configPath);
return configValue[appid];
}
static get_client_ip(req) {
var ip = req.headers['x-forwarded-for'] ||
req.ip ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
(req.connection.socket && req.connection.socket.remoteAddress) || '';
var x = ip.match(/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/);
if (x) {
return x[0];
} else {
return "localhost";
}
};
static y2f(y) {
if (!y) {
return 0;
}
return (Number(y) * 100).toFixed(0);
}
static f2y(f) {
if (!f) {
return 0;
}
return parseFloat((Number(f) / 100).toFixed(2));
}
static f2y4list(list, fields, prev) {
if (!list || list.length == 0 || !fields || fields.length == 0) {
return;
}
prev = prev || "";
for (var item of list) {
for (var f of fields) {
var v = item[f] || 0;
try {
item[f + "_y"] = prev + parseFloat((Number(v) / 100).toFixed(2));
} catch (error) {
console.log(error);
}
}
}
}
static getUid(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
var uuid = [],
i;
radix = radix || chars.length;
if (len) {
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
var r;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
}
static microsetting() {
console.log(settings.env, "-------------- microsetting env ------------------");
var path = "/api/op/action/springboard";
if (settings.env == "dev") {
let local = "http://127.0.0.1";
let dev = "http://39.107.234.14";
return {
// 公共服务
common: dev + ":3102" + path,
// 商户服务
merchant: dev + ":3101" + path,
// 订单服务
order: dev + ":3103" + path,
// 发票服务
invoice: dev + ":3105" + path,
// 用户服务
uc: dev + ":3106" + path,
// 交易
trade: local + ":3107" + path,
}
} else {
return {
common: "xggsvecommon-service" + path,
merchant: "xggsvemerchant-service" + path,
order: "xggsveorder-service" + path,
invoice: "xggsveinvoice-service" + path,
uc: "xggsveuc-service" + path,
trade: "xggsvetrade-service" + path,
}
}
}
}
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
System.objTable = {};
//访问token失效,请重新获取
......
<a name="menu">目录</a>
1. [批量打款列表](#orderPage)
1. [查看详情](#orderInfo)
1. [一审](#audit1)
1. [二审](#audit2)
1. [二审](#audit2)
1. [结果反馈](#tradeFeedBack)
## **<a name="orderPage"> 批量打款列表</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/orderPage]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
按钮显示规则
一审:check_status == '01'
二审:check_status == '03'
打款:check_status == '05' && trade_mode == '00'
打款结果:check_status == '05' && trade_mode != '00'
查看详情: 全部
{
"currentPage": "1",
"pageSize": "10",
"merchant_name": "1", // 商户名称
"out_trade_no": "", // 商户订单号
"trade_status": "", // 交易状态 00成功 01待处理 02失败 03部分成功
"check_status": "", // 审核状态 00待处理 01一审 02一审失败 03二审 04二审失败 05审核通过
"createBegin": "", // 创建时间-开始 可以只选开始,也可以只选结束,格式:2020-04-03
"createEnd": "" // 创建时间-结束
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"data": {
"count": 21,
"rows": [
{
"id": "1298463038002876", // id
"out_trade_no": "13695922219233720", // 商户订单号
"service_rate": 0, // 服务费比率
"created_at": "2020-04-02 14:16:21", // 创建时间
"item_count": 4, // 打款记录
"amt": 131083.32, // 商户请求打款金额
"actual_amt": 131083.32, // 实发金额
"service_tax": 2621.66, // 服务费
"deduct_amt": 128535.56, // 总扣款金额
"check_status": "00", // 审核状态 00待处理 01一审 02一审失败 03二审 04二审失败 05二审通过
"check_status_name": "待处理", // 审核状态名称
"trade_status": "01", // 打款状态 00成功 01待处理 02失败 03部分成功
"trade_status_name": "待处理", // 打款状态名称
"pay_voucher": "", // 支付凭证图
"acc_type": "00", // 打款通道
"acc_type_name": "银行", // 打款通道名称
"trade_mode": "00", // 打款模式 00未设置 01系统打款 02手工打款
"trade_mode_name": "未设置", // 打款模式名称
"check1_remark": "", // 一审备注
"check2_remark": "", // 二审备注
"pay_bank_account": "111xxx", // 订单付款账户名称
"pay_bank_name": "1231234", // 订单付款开户银行
"pay_bank_no": "123456" // 订单付款银行账户
}
]
},
"requestid": "09cd6abe34da475cb676b550ff9b282d"
}
```
## **<a name="parseItems"> 上传数据</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/parseItems]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
// 上传文件地址
"fileUrl": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_273315857206750512020113575551testbank2.xlsx"
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"data": {
"actual_amt": "131083.32", // 实发总额
"deduct_amt": "133704.99", // 扣除总额
"service_tax": "2621.67", // 服务费
"error": false, // 上传文件是否有错误 false没有,true有错误
"itemList": [
{
"errors": [ // 错误信息数组,多条,都在页面展示吧
"错误信息1",
"错误信息2",
],
"acc_name": "11", // 收款户名
"credit_code": "92321311MA205KN92J", // 统一社会信用代码
"acc_no": "3", // 收款账号
"open_bank": "4", // 开户银行
"amt": "5", // 请求打款金额
"remark": "6", // 备注
// ※※※※※※※※ 以下字段不允许编辑 ※※※※※※※※※※※
"service_tax": "0.10", // 服务费
"actual_amt": "5.00", // 实发金额
"deduct_amt": "5.10" // 扣除金额
},
]
}
}
```
## **<a name="lockOrder"> 锁定批次</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/lockOrder]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"acc_type": "00",
"fileUrl": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_273315857206750512020113575551testbank2.xlsx",
"itemList": [
{
"errors": [ // 错误信息数组,多条,都在页面展示吧
"错误信息1",
"错误信息2",
],
"acc_name": "11", // 收款户名
"credit_code": "92321311MA205KN92J", // 统一社会信用代码
"acc_no": "3", // 收款账号
"open_bank": "4", // 开户银行
"open_bank": "4", // 开户银行
"amt": "5", // 请求打款金额
"remark": "6", // 备注
// ※※※※※※※※ 以下字段不允许编辑 ※※※※※※※※※※※
"service_tax": "0.10", // 服务费
"actual_amt": "5.00", // 实发金额
"deduct_amt": "5.10" // 扣除金额
},
]
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "操作成功",
"data": {
"id": "1298533711001487", // 订单id
"out_trade_no": "13695851544002235", // 商户订单号
"amt": 131083.32, // 总请求打款金额
"actual_amt": 131083.32, // 总实发金额
"deduct_amt": 128535.56, // 总扣除金额 应付金额 X 元
"service_tax": 2621.66, // 总服务费
"item_count": 4, // 明细订单数量 总计 X 比交易
"acc_type": "00",
"pay_bank_account": "111xxx", // 账户名称
"pay_bank_name": "1231234", // 开户银行
"pay_bank_no": "123456" // 银行账户
},
"bizmsg": "empty"
}
```
## **<a name="offlinePay"> 付款申请</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/offlinePay]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"id": "1298475347002331", // 订单id,锁定批次时返回的id(列表中也有返回)
"pay_voucher": "https://gsb........" // 付款凭证
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"data": null,
"requestid": "b46e1ff5176143ffa4135a357f93d757"
}
```
## **<a name="orderInfo"> 查看详情</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/orderInfo]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"id": "1", // id
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"data": {
"count": 21,
"rows": [
{
"id": "1298463038002876", // id
"merchant_name": "13695922219233720", // 商户名称
"out_trade_no": "13695922219233720", // 商户订单号
"service_rate": 0, // 服务费比率
"created_at": "2020-04-02 14:16:21", // 创建时间
"item_count": 4, // 打款记录
"amt": 131083.32, // 商户请求打款金额
"actual_amt": 131083.32, // 实发金额
"service_tax": 2621.66, // 服务费
"deduct_amt": 128535.56, // 总扣款金额
"check_status": "00", // 审核状态 00待处理 01一审 02一审失败 03二审 04二审失败 05二审通过
"check_status_name": "待处理", // 审核状态名称
"trade_status": "01", // 打款状态 00成功 01待处理 02失败 03部分成功
"trade_status_name": "待处理", // 打款状态名称
"pay_voucher": "", // 支付凭证图
"acc_type": "00", // 打款通道
"acc_type_name": "银行", // 打款通道名称
"trade_mode": "00", // 打款模式 00未设置 01系统打款 02手工打款
"trade_mode_name": "未设置", // 打款模式名称
"check1_remark": "", // 一审备注
"check2_remark": "", // 二审备注
"pay_bank_account": "111xxx", // 订单付款账户名称
"pay_bank_name": "1231234", // 订单付款开户银行
"pay_bank_no": "123456" // 订单付款银行账户
}
]
},
"requestid": "09cd6abe34da475cb676b550ff9b282d"
}
```
## **<a name="audit1"> 一审</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/audit1]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"id": "1", // id
"status": 1, // 审核状态 1通过 0驳回
"remark": "xpxpxpxpx" // 审核备注
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"requestid": "09cd6abe34da475cb676b550ff9b282d"
}
```
## **<a name="audit2"> 二审</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/audit2]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"id": "1", // id
"status": 1, // 审核状态 1通过 0驳回
"remark": "xpxpxpxpx" // 审核备注
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"requestid": "09cd6abe34da475cb676b550ff9b282d"
}
```
## **<a name="tradeFeedBack"> 结果反馈</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/tradeFeedBack]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"order_id": "1298386120003945", // 订单id
"item_ids": [ // 选择产品ids
1001496,
1001497
],
"trade_time": "2020-04-03 12:55:11", // 交易时间
"trade_desc": "上面几把玩意" // 交易描述
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"requestid": "09cd6abe34da475cb676b550ff9b282d"
}
```
## **<a name="itemPage"> 交易列表</a>**
[返回到目录](#menu)
##### URL
[/web/trade/tradeCtl/itemPage]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"currentPage": 1,
"pageSize": 10,
"out_trade_no": "", // 商户订单号
"acc_name": "", // 收款户名
"acc_no": "", // 收款账户
"credit_code": "", // 信用代码
"trade_status": "", // 交易状态 00成功 01待处理 02失败
"createBegin": "", // 创建时间-开始 可以只选开始,也可以只选结束,格式:2020-04-03
"createEnd": "" // 创建时间-结束
"order_id": "1298534682000884", // 订单id,查订单详情时,使用这个字段过滤
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "success",
"data": {
"count": 1493,
"rows": [
{
"id": "1298463038002876", // id
"trade_no": "T10014949456718", // 打款编号
"acc_name": "11", // 收款户名
"acc_no": "3", // 收款账号
"trade_status": "01", // 交易状态
"trade_status_name": "待处理", // 交易状态名称
"trade_desc": "", // 交易描述
"trade_receipt": "", // 回执图片,判断为空时不显示按钮
"amt": 131083.32, // 商户请求打款金额
"actual_amt": 131083.32, // 实发金额
"service_tax": 2621.66, // 服务费
"deduct_amt": 128535.56, // 总扣款金额
"credit_code": "92321311MA205KN92J", // 信用代码
"out_trade_no": "13695922219233720", // 商户订单号
"created_at": "2020-04-03 11:38:19", // 创建时间
"order_id": "1298386120003945", // 订单id
"open_bank": "4", // 开户行全称
"trade_time": null, // 交易时间
"remark": "6", // 打款备注
"service_rate": 0, // 服务费比率
}
]
},
"requestid": "d14ae10263ec45ab8cd3be23ab59faf2"
}
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