Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zhichan
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
蒋勇
zhichan
Commits
11606669
Commit
11606669
authored
Apr 01, 2020
by
王昆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gsb
parent
183dec7c
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
314 additions
and
54 deletions
+314
-54
xgg-saas-merchant/app/base/controller/impl/trade/tradeCtl.js
+2
-1
xgg-saas-merchant/app/base/service/impl/trade/tradeSve.js
+73
-46
xgg-saas-merchant/app/base/system.js
+7
-7
xgg-saas-merchant/app/base/utils/restClient.js
+16
-0
xgg-saas-merchant/app/front/entry/public/apidoc/README.md
+3
-0
xgg-saas-merchant/app/front/entry/public/apidoc/saas/trade.md
+213
-0
No files found.
xgg-saas-merchant/app/base/controller/impl/trade/tradeCtl.js
View file @
11606669
...
@@ -6,8 +6,9 @@ class TradeCtl extends CtlBase {
...
@@ -6,8 +6,9 @@ class TradeCtl extends CtlBase {
this
.
tradeSve
=
system
.
getObject
(
"service.trade.tradeSve"
);
this
.
tradeSve
=
system
.
getObject
(
"service.trade.tradeSve"
);
}
}
async
parseItem
(
params
,
pobj2
,
req
)
{
async
parseItem
s
(
params
,
pobj2
,
req
)
{
try
{
try
{
params
.
fileName
=
req
.
loginUser
.
id
;
return
await
this
.
tradeSve
.
parseItems
(
params
);
return
await
this
.
tradeSve
.
parseItems
(
params
);
}
catch
(
error
)
{
}
catch
(
error
)
{
return
system
.
getResult
(
null
,
`系统错误 错误信息
${
error
}
`
);
return
system
.
getResult
(
null
,
`系统错误 错误信息
${
error
}
`
);
...
...
xgg-saas-merchant/app/base/service/impl/trade/tradeSve.js
View file @
11606669
...
@@ -3,49 +3,77 @@ const ServiceBase = require("../../svems.base");
...
@@ -3,49 +3,77 @@ const ServiceBase = require("../../svems.base");
const
settings
=
require
(
"../../../../config/settings"
);
const
settings
=
require
(
"../../../../config/settings"
);
const
fs
=
require
(
"fs"
);
const
fs
=
require
(
"fs"
);
const
xlsx
=
require
(
'node-xlsx'
);
const
xlsx
=
require
(
'node-xlsx'
);
const
axios
=
require
(
"axios"
);
const
path
=
require
(
"path"
);
class
TradeService
extends
ServiceBase
{
class
TradeService
extends
ServiceBase
{
constructor
()
{
constructor
()
{
super
();
super
();
this
.
businessmenSve
=
system
.
getObject
(
"service.business.businessmenSve"
);
this
.
businessmenSve
=
system
.
getObject
(
"service.business.businessmenSve"
);
this
.
merchantSve
=
system
.
getObject
(
"service.saas.merchantSve"
);
}
}
async
downloadFile
(
url
,
filePath
)
{
async
parseItems
(
params
)
{
let
writer
=
fs
.
createWriteStream
(
filePath
);
// 读取excel
let
response
=
await
axios
({
let
dataList
=
await
this
.
readItems
(
params
.
fileUrl
,
params
.
fileName
);
url
,
method
:
"GET"
,
// 验证字段
responseType
:
"stream"
,
let
error
=
await
this
.
checkDataList
(
dataList
);
});
response
.
data
.
pipe
(
writer
);
// 计算预计付款基恩
return
new
Promise
((
resolve
,
reject
)
=>
{
let
result
=
await
this
.
countAmt
(
dataList
,
params
.
saas_merchant_id
);
writer
.
on
(
"finish"
,
resolve
);
writer
.
on
(
"error"
,
reject
);
// 封装返回对象
});
result
.
error
=
error
;
result
.
dataList
=
dataList
;
return
system
.
getResultSuccess
(
result
);
}
async
countAmt
(
dataList
,
saas_merchant_id
)
{
let
result
=
{
actual_amt
:
0
,
deduct_amt
:
0
,
service_tax
:
0
};
if
(
!
dataList
)
{
return
result
;
}
}
async
parseItems
(
params
)
{
// 获取商户签约信息
let
info
=
await
this
.
merchantSve
.
signInfo
({
id
:
saas_merchant_id
})
||
{};
info
=
info
.
data
||
{};
// 服务费,这里已经处理了分转元,不用在处理
let
service_rate
=
info
.
trans_service_rate
;
// 实发总数
let
totalAmt
=
0
;
for
(
let
data
of
dataList
)
{
totalAmt
=
totalAmt
+
Number
(
data
.
amt
||
0
);
}
// 服务费
result
.
service_tax
=
parseFloat
((
totalAmt
*
service_rate
)
/
100
).
toFixed
(
2
);
// 总实发
result
.
actual_amt
=
parseFloat
(
totalAmt
).
toFixed
(
2
);
// 总扣款
result
.
deduct_amt
=
parseFloat
(
Number
(
result
.
actual_amt
)
+
Number
(
result
.
service_tax
)).
toFixed
(
2
);
return
result
;
}
async
readItems
(
fileUrl
,
fileName
)
{
let
dataList
=
[];
let
dataList
=
[];
let
filePath
=
settings
.
localpath
()
+
"saas_xgg_trade_order_"
+
this
.
trim
(
params
.
fileName
)
+
".xlsx"
;
let
filePath
=
settings
.
localpath
()
+
"saas_xgg_trade_order_"
+
this
.
trim
(
fileName
)
+
".xlsx"
;
try
{
try
{
await
this
.
downloadFile
(
params
.
url
,
filePath
);
//
await this.downloadFile(params.url, filePath);
// await this.restClient.execDownload("'" + ossurl + "'"
, filePath);
await
this
.
restClient
.
execDownload2
(
fileUrl
,
filePath
);
let
sheets
=
xlsx
.
parse
(
filePath
);
let
sheets
=
xlsx
.
parse
(
filePath
);
fs
.
unlinkSync
(
filePath
);
fs
.
unlinkSync
(
filePath
);
if
(
!
sheets
||
sheets
.
length
==
0
)
{
if
(
!
sheets
||
sheets
.
length
==
0
)
{
return
system
.
getResult
(
null
,
"打款文件无数据"
)
return
system
.
getResult
(
null
,
"打款文件无数据"
)
}
}
let
sheet
=
sheets
[
0
];
let
sheet
=
sheets
[
0
];
if
(
!
sheet
||
!
sheet
.
data
||
sheet
.
data
.
length
==
0
)
{
if
(
!
sheet
||
!
sheet
.
data
||
sheet
.
data
.
length
==
0
)
{
return
system
.
getResult
(
null
,
"打款文件无数据"
)
return
system
.
getResult
(
null
,
"打款文件无数据"
)
}
}
let
rows
=
sheet
.
data
;
let
rows
=
sheet
.
data
;
let
dataList
=
[];
let
dataList
=
[];
for
(
let
idx
=
6
;
idx
<
rows
.
length
;
idx
++
)
{
for
(
let
idx
=
6
;
idx
<
rows
.
length
;
idx
++
)
{
var
data
=
{
var
data
=
{
errors
:
[]
errors
:
[]
};
};
...
@@ -53,10 +81,10 @@ class TradeService extends ServiceBase {
...
@@ -53,10 +81,10 @@ class TradeService extends ServiceBase {
let
cells
=
rows
[
idx
];
let
cells
=
rows
[
idx
];
let
cellLength
=
cells
.
length
;
let
cellLength
=
cells
.
length
;
if
(
cellLength
==
0
)
{
if
(
cellLength
==
0
)
{
continue
;
continue
;
}
}
if
(
cellLength
<
7
)
{
if
(
cellLength
<
7
)
{
data
.
errors
.
push
(
"缺少数据, 列数不全"
);
data
.
errors
.
push
(
"缺少数据, 列数不全"
);
continue
;
continue
;
}
}
...
@@ -69,7 +97,7 @@ class TradeService extends ServiceBase {
...
@@ -69,7 +97,7 @@ class TradeService extends ServiceBase {
dataList
.
push
(
data
);
dataList
.
push
(
data
);
}
}
return
await
this
.
checkDataList
(
dataList
)
;
return
dataList
;
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
log
(
error
);
console
.
log
(
error
);
return
system
.
getResult
(
null
,
"excel解析出错"
)
return
system
.
getResult
(
null
,
"excel解析出错"
)
...
@@ -77,10 +105,8 @@ class TradeService extends ServiceBase {
...
@@ -77,10 +105,8 @@ class TradeService extends ServiceBase {
}
}
async
checkDataList
(
dataList
)
{
async
checkDataList
(
dataList
)
{
let
result
=
{
let
error
=
false
;
hasError
:
false
,
if
(
!
dataList
||
dataList
.
length
==
0
)
{
};
if
(
!
dataList
||
dataList
.
length
==
0
)
{
return
system
.
getResult
(
null
,
"打款文件无数据"
)
return
system
.
getResult
(
null
,
"打款文件无数据"
)
}
}
...
@@ -91,49 +117,49 @@ class TradeService extends ServiceBase {
...
@@ -91,49 +117,49 @@ class TradeService extends ServiceBase {
}
}
let
creditCodeMap
=
await
this
.
businessmenSve
.
mapByCreditCodes
({
creditCodes
:
creditCodes
,
attrs
:
"credit_code"
});
let
creditCodeMap
=
await
this
.
businessmenSve
.
mapByCreditCodes
({
creditCodes
:
creditCodes
,
attrs
:
"credit_code"
});
for
(
let
data
of
dataList
)
{
for
(
let
data
of
dataList
)
{
this
.
checkField
(
data
,
"acc_name"
,
{
is_require
:
true
,
maxLen
:
64
});
this
.
checkField
(
data
,
"acc_name"
,
{
name
:
"收款户名"
,
is_require
:
true
,
maxLen
:
64
});
let
bm
=
creditCodeMap
[
data
.
credit_code
];
let
bm
=
creditCodeMap
[
data
.
credit_code
];
if
(
!
bm
)
{
if
(
!
bm
)
{
data
.
errors
.
push
(
`统一社会信用代码[
${
data
.
credit_code
}
]不存在`
);
data
.
errors
.
push
(
`统一社会信用代码[
${
data
.
credit_code
}
]不存在`
);
}
}
this
.
checkField
(
data
,
"credit_code"
,
{
is_require
:
true
,
eqLen
:
18
});
this
.
checkField
(
data
,
"credit_code"
,
{
name
:
"个体户统一信用代码"
,
is_require
:
true
,
eqLen
:
18
});
this
.
checkField
(
data
,
"acc_no"
,
{
is_require
:
true
,
maxLen
:
30
,
is_number
:
true
});
this
.
checkField
(
data
,
"acc_no"
,
{
name
:
"收款账号"
,
is_require
:
true
,
maxLen
:
30
,
is_number
:
true
});
this
.
checkField
(
data
,
"open_bank"
,
{
maxLen
:
100
});
this
.
checkField
(
data
,
"open_bank"
,
{
name
:
"开户银行全称"
,
maxLen
:
100
});
this
.
checkField
(
data
,
"amt"
,
{
is_require
:
true
,
maxLen
:
100
,
is_number
:
true
});
this
.
checkField
(
data
,
"amt"
,
{
name
:
"商户请求打款金额"
,
is_require
:
true
,
maxLen
:
100
,
is_number
:
true
});
this
.
checkField
(
data
,
"remark"
,
{
maxLen
:
100
});
this
.
checkField
(
data
,
"remark"
,
{
name
:
"备注"
,
maxLen
:
100
});
if
(
!
result
.
hasE
rror
&&
data
.
errors
.
length
>
0
)
{
if
(
!
e
rror
&&
data
.
errors
.
length
>
0
)
{
result
.
hasE
rror
=
true
;
e
rror
=
true
;
}
}
}
}
result
.
dataList
=
dataList
;
return
error
;
return
result
;
}
}
checkField
(
data
,
field
,
rule
)
{
checkField
(
data
,
field
,
rule
)
{
if
(
!
data
||
!
field
)
{
if
(
!
data
||
!
field
)
{
return
;
return
;
}
}
let
v
=
data
[
field
];
let
v
=
data
[
field
];
if
(
rule
.
is_require
&&
!
v
)
{
if
(
rule
.
is_require
&&
!
v
)
{
data
.
errors
.
push
(
`
${
rule
.
name
}
未填写`
);
data
.
errors
.
push
(
`
${
rule
.
name
}
未填写`
);
}
}
if
(
rule
.
maxLen
&&
v
.
length
>
rule
.
maxLen
)
{
if
(
rule
.
maxLen
&&
v
.
length
>
rule
.
maxLen
)
{
data
.
errors
.
push
(
`
${
rule
.
name
}
长度不允许超过
${
rule
.
maxLen
}
`
);
data
.
errors
.
push
(
`
${
rule
.
name
}
长度不允许超过
${
rule
.
maxLen
}
`
);
}
}
if
(
rule
.
minLen
&&
v
.
length
<
rule
.
minLen
)
{
if
(
rule
.
minLen
&&
v
.
length
<
rule
.
minLen
)
{
data
.
errors
.
push
(
`
${
rule
.
name
}
长度不允许少于
${
rule
.
minLen
}
`
);
data
.
errors
.
push
(
`
${
rule
.
name
}
长度不允许少于
${
rule
.
minLen
}
`
);
}
}
if
(
rule
.
eqLen
&&
v
.
length
!=
rule
.
eqLen
)
{
if
(
rule
.
eqLen
&&
v
.
length
!=
rule
.
eqLen
)
{
data
.
errors
.
push
(
`
${
rule
.
name
}
长度为
${
rule
.
eqLen
}
`
);
data
.
errors
.
push
(
`
${
rule
.
name
}
长度为
${
rule
.
eqLen
}
`
);
}
}
if
(
rule
.
is_number
&&
isNaN
(
v
))
{
if
(
rule
.
is_number
&&
isNaN
(
v
))
{
data
.
errors
.
push
(
`
${
rule
.
name
}
需要填写数字类型`
);
data
.
errors
.
push
(
`
${
rule
.
name
}
需要填写数字类型`
);
}
}
if
(
rule
.
is_number
&&
isNaN
(
v
))
{
if
(
rule
.
is_number
&&
isNaN
(
v
))
{
data
.
errors
.
push
(
`
${
rule
.
name
}
需要填写数字类型`
);
data
.
errors
.
push
(
`
${
rule
.
name
}
需要填写数字类型`
);
}
}
}
}
}
}
module
.
exports
=
TradeService
;
module
.
exports
=
TradeService
;
\ No newline at end of file
xgg-saas-merchant/app/base/system.js
View file @
11606669
...
@@ -170,27 +170,27 @@ class System {
...
@@ -170,27 +170,27 @@ class System {
var
path
=
"/api/op/action/springboard"
;
var
path
=
"/api/op/action/springboard"
;
if
(
settings
.
env
==
"dev"
)
{
if
(
settings
.
env
==
"dev"
)
{
// var domain = "http://192.168.18.237";
// var domain = "http://192.168.18.237";
var
domain
=
"http://127.0.0.1"
;
let
local
=
"http://127.0.0.1"
;
var
domain2
=
"http://39.107.234.14"
;
let
dev
=
"http://39.107.234.14"
;
return
{
return
{
// 公共服务
// 公共服务
common
:
d
omain2
+
":3102"
+
path
,
common
:
d
ev
+
":3102"
+
path
,
// common: "http://127.0.0.1:3102" + path,
// common: "http://127.0.0.1:3102" + path,
// 商户服务
// 商户服务
merchant
:
d
omain2
+
":3101"
+
path
,
merchant
:
d
ev
+
":3101"
+
path
,
// merchant: "http://127.0.0.1:3101" + path,
// merchant: "http://127.0.0.1:3101" + path,
// 订单服务
// 订单服务
order
:
d
omain2
+
":3103"
+
path
,
order
:
d
ev
+
":3103"
+
path
,
// order: "http://127.0.0.1:3103" + path,
// order: "http://127.0.0.1:3103" + path,
// 发票服务
// 发票服务
invoice
:
d
omain2
+
":3105"
+
path
,
invoice
:
d
ev
+
":3105"
+
path
,
// invoice: "http://127.0.0.1:3105" + path,
// invoice: "http://127.0.0.1:3105" + path,
// 用户服务
// 用户服务
uc
:
d
omain2
+
":3106"
+
path
,
uc
:
d
ev
+
":3106"
+
path
,
// uc: "http://127.0.0.1:3106" + path,
// uc: "http://127.0.0.1:3106" + path,
}
}
}
else
{
}
else
{
...
...
xgg-saas-merchant/app/base/utils/restClient.js
View file @
11606669
...
@@ -3,6 +3,8 @@ const util = require('util');
...
@@ -3,6 +3,8 @@ const util = require('util');
const
exec
=
util
.
promisify
(
require
(
'child_process'
).
exec
);
const
exec
=
util
.
promisify
(
require
(
'child_process'
).
exec
);
const
querystring
=
require
(
'querystring'
);
const
querystring
=
require
(
'querystring'
);
var
settings
=
require
(
"../../config/settings"
);
var
settings
=
require
(
"../../config/settings"
);
const
fs
=
require
(
"fs"
);
const
axios
=
require
(
"axios"
);
class
RestClient
{
class
RestClient
{
constructor
()
{
constructor
()
{
this
.
cmdGetPattern
=
"curl {-G} -k -d '{data}' {url}"
;
this
.
cmdGetPattern
=
"curl {-G} -k -d '{data}' {url}"
;
...
@@ -68,6 +70,20 @@ class RestClient {
...
@@ -68,6 +70,20 @@ class RestClient {
var
result
=
await
this
.
exec
(
cmd
);
var
result
=
await
this
.
exec
(
cmd
);
return
result
;
return
result
;
}
}
async
execDownload2
(
url
,
outfname
)
{
let
writer
=
fs
.
createWriteStream
(
outfname
);
let
response
=
await
axios
({
url
,
method
:
"GET"
,
responseType
:
"stream"
,
});
response
.
data
.
pipe
(
writer
);
return
new
Promise
((
resolve
,
reject
)
=>
{
writer
.
on
(
"finish"
,
resolve
);
writer
.
on
(
"error"
,
reject
);
});
}
async
execGet
(
subData
,
url
)
{
async
execGet
(
subData
,
url
)
{
let
cmd
=
this
.
FetchGetCmd
(
subData
,
url
);
let
cmd
=
this
.
FetchGetCmd
(
subData
,
url
);
var
result
=
await
this
.
exec
(
cmd
);
var
result
=
await
this
.
exec
(
cmd
);
...
...
xgg-saas-merchant/app/front/entry/public/apidoc/README.md
View file @
11606669
...
@@ -19,6 +19,9 @@
...
@@ -19,6 +19,9 @@
## 订单管理
## 订单管理
1
[
订单接口
](
/doc/saas/order.md
)
1
[
订单接口
](
/doc/saas/order.md
)
## 交易管理
1
[
交易接口
](
/doc/saas/trade.md
)
## 小程序接口
## 小程序接口
1
[
登录
](
/doc/applet/login.md
)
1
[
登录
](
/doc/applet/login.md
)
...
...
xgg-saas-merchant/app/front/entry/public/apidoc/saas/trade.md
0 → 100644
View file @
11606669
<a
name=
"menu"
>
目录
</a>
1.
[
批量打款列表
](
#page
)
1.
[
上传数据
](
#parseItems
)
1.
[
锁定批次
](
#add
)
1.
[
付款申请
](
#payVoucher
)
## **<a name="page"> 订单列表</a>**
[
返回到目录
](
#menu
)
##### URL
[
/web/saas/orderCtl/page
]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
```
javascript
订单状态
下拉筛选
1010
待付款
,
2010
待审核
,
2030
审核驳回
,
3010
业务办理中
,
3020
待交付
,
3030
已交付
{
"currentPage"
:
"1"
,
"pageSize"
:
"10"
,
"saas_merchant_id"
:
""
,
// 商户id 查询条件使用商户字典下拉选择
"createBegin"
:
""
,
// 创建时间 开始
"createEnd"
:
""
// 创建时间 结束
"legal_idno"
:
""
// 身份证号码
"status"
:
""
// 订单状态
}
```
#### 返回结果
```
javascript
{
"status"
:
0
,
"msg"
:
"success"
,
"data"
:
{
"count"
:
0
,
"rows"
:
[
{
"id"
:
"1726724188001516"
,
// 订单编号
"price"
:
1500
,
// 订单价格
"pay_voucher_img"
:
"0"
,
// 付款凭证
"audit_remark"
:
""
,
// 审核凭证
"deliver_man"
:
""
,
// 交付联系人
"deliver_mobile"
:
""
,
// 交付联系电话
"deliver_addr"
:
""
,
// 邮寄地址
"created_at"
:
"2020-03-21 07:45:18"
,
// 创建时间
"status"
:
"3030"
,
// 订单状态
"status_name"
:
"已交付"
// 订单状态名称
// 订单信息
"bminfo"
:
{
"idcard_front"
:
"11111"
,
// 身份证正面
"idcard_back"
:
"11111"
,
// 身份证反面
"legal_name"
:
"11111"
,
// 法人名称
"legal_mobile"
:
"11111"
,
// 手机号
"legal_idno"
:
"11111"
,
// 身份证号码
"company_names"
:
"11111"
,
// 个体户名称
"bank_front"
:
"11111"
,
// 银行卡正面图
"bank_back"
:
"11111"
,
// 银行卡反面图
"bank_name"
:
"11111"
,
// 开户行
"bank_no"
:
"11111"
,
// 银行卡号
"bank_mobile"
:
"11111"
,
// 预留手机号
"domicile_id"
:
""
,
// 注册地id
"domicile_name"
:
""
,
// 注册地
"business_scope_id"
:
""
,
// 经营范围id
"business_type"
:
""
,
// 经营范围类型
"business_scope"
:
""
,
// 经营范围详情
}
}
],
"total"
:
1
},
"requestid"
:
"00521a0a0f094c8d982bf4375fbe91b1"
}
```
1.
[
上传数据
](
#parseItems
)
## **<a name="parseItems"> 上传数据</a>**
[
返回到目录
](
#menu
)
##### URL
[
/web/trade/tradeCtl/parseItems
]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
```
javascript
{
"id"
:
"1726882554002859"
// 订单id
}
```
#### 返回结果
```
javascript
{
"status"
:
0
,
"msg"
:
"success"
,
"data"
:
{
// 基本剑术
"baseInfo"
:
{
"id"
:
"1726882554002859"
,
// 订单编号
"created_at"
:
"2020-03-23 03:44:44"
,
// 创建时间
"price"
:
1500
// 价格
},
// 注册申请信息
"regInfo"
:
{
"legal_name"
:
"11111"
,
// 法人
"legal_idno"
:
"11111"
,
// 身份证号码
"legal_mobile"
:
"11111"
,
// 联系电话
"company_names"
:
"11111"
,
// 个体户名称
"idcard_front"
:
"11111"
,
// 身份证图正面
"idcard_back"
:
"11111"
// 身份证图反面
},
// 商户交付信息
"merchantDeliverInfo"
:
{
"merchant_deliver_man"
:
""
,
// 联系人
"merchant_deliver_mobile"
:
""
,
// 联系电话
"merchant_deliver_addr"
:
""
// 邮寄地址
},
// 支付信息
"payInfo"
:
{
"amount"
:
0
,
// 付款金额
"created_at"
:
"2020-03-23"
,
// 支付时间
"trade_no"
:
"1123123"
,
// 资金流水号
"pay_voucher_img"
:
"123213"
// 付款凭证
},
// 订单交付信息
"deliverInfo"
:
{
"deliver_express_no"
:
""
,
// 快递单号
"deliver_express_img"
:
""
// 交接单
},
},
"requestid"
:
"b46e1ff5176143ffa4135a357f93d757"
}
```
## **<a name="checkPay"> 支付验证</a>**
[
返回到目录
](
#menu
)
##### URL
[
/web/saas/orderCtl/checkPay
]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
```
javascript
{
"ids"
:
[
'172...'
,
'172..'
,
''
],
// 订单多选
}
```
#### 返回结果
```
javascript
{
"status"
:
0
,
"msg"
:
"操作成功"
,
"data"
:
{
"totalNum"
:
3
,
// 共 XX 笔订单
"totalPrice"
:
4500
,
// 应付金额 元
"account_name"
:
"扬大"
,
// 账户名称
"account_bank_name"
:
"中国银行"
,
// 开户银行
"account_bank_no"
:
"222"
// 银行账户
},
"bizmsg"
:
"empty"
}
```
## **<a name="offlinePay"> 订单支付</a>**
[
返回到目录
](
#menu
)
##### URL
[
/web/saas/orderCtl/offlinePay
]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
```
javascript
{
"ids"
:
[
'172...'
,
'172..'
,
''
],
// 订单多选
"pay_voucher_img"
:
""
,
// 付款凭证图
"merchant_deliver_man"
:
""
,
// 联系人
"merchant_deliver_mobile"
:
""
,
// 联系电话
"merchant_deliver_addr"
:
""
// 邮寄地址
}
```
#### 返回结果
```
javascript
{
"status"
:
0
,
"msg"
:
"success"
,
"data"
:
null
,
"requestid"
:
"b46e1ff5176143ffa4135a357f93d757"
}
```
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment