Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
starsw001
ShopXO
提交
6aabda73
ShopXO
项目概览
starsw001
/
ShopXO
与 Fork 源项目一致
Fork自
纵之格 / ShopXO
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6aabda73
编写于
2月 08, 2022
作者:
G
gongfuxiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化订单0元无需选择支付方式
上级
60c6edfe
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
87 addition
and
84 deletion
+87
-84
app/index/view/default/buy/index.html
app/index/view/default/buy/index.html
+2
-2
app/service/BuyService.php
app/service/BuyService.php
+13
-11
app/service/OrderService.php
app/service/OrderService.php
+70
-70
public/static/index/default/js/buy.js
public/static/index/default/js/buy.js
+2
-1
未找到文件。
app/index/view/default/buy/index.html
浏览文件 @
6aabda73
...
...
@@ -526,7 +526,7 @@
<!-- 订单确认页面分组商品底部钩子-结束 -->
<!-- 支付方式 -->
{{if $common_order_is_booking neq 1}}
{{if $
base['actual_price'] gt 0 and $
common_order_is_booking neq 1}}
<div
class=
"buy-items business-item payment"
data-field=
"payment_id"
>
<h3>
选择支付
</h3>
{{if !empty($payment_list)}}
...
...
@@ -645,7 +645,7 @@
</div>
{{/if}}
</div>
<form
class=
"am-form form-validation nav-buy"
action=
"{{:MyUrl('index/buy/add')}}"
method=
"post"
class=
"nav-buy"
request-type=
"ajax-fun"
request-value=
"BuySubmitBack"
data-site-type=
"{{$common_site_type}}"
data-is-booking=
"{{$common_order_is_booking}}"
>
<form
class=
"am-form form-validation nav-buy"
action=
"{{:MyUrl('index/buy/add')}}"
method=
"post"
class=
"nav-buy"
request-type=
"ajax-fun"
request-value=
"BuySubmitBack"
data-site-type=
"{{$common_site_type}}"
data-
base-actual-price=
"{{$base.actual_price}}"
data-
is-booking=
"{{$common_order_is_booking}}"
>
<input
type=
"hidden"
name=
"goods_id"
value=
"{{if isset($params['goods_id'])}}{{$params.goods_id}}{{else /}}0{{/if}}"
/>
<input
type=
"hidden"
name=
"buy_type"
value=
"{{if isset($params['buy_type'])}}{{$params.buy_type}}{{else /}}goods{{/if}}"
/>
<input
type=
"hidden"
name=
"stock"
value=
"{{if isset($params['stock'])}}{{$params.stock}}{{else /}}1{{/if}}"
/>
...
...
app/service/BuyService.php
浏览文件 @
6aabda73
...
...
@@ -1026,22 +1026,15 @@ class BuyService
'error_msg'
=>
'请选择地址'
,
];
}
// 非预约模式则校验支付方式
if
(
MyC
(
'common_order_is_booking'
,
0
)
!=
1
)
{
$p
[]
=
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'payment_id'
,
'error_msg'
=>
'支付方式有误'
,
];
}
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
return
DataReturn
(
$ret
,
-
1
);
}
// 是否预约模式
$common_order_is_booking
=
MyC
(
'common_order_is_booking'
,
0
);
// 查询用户状态是否正常
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$params
[
'user'
][
'id'
]);
if
(
$ret
[
'code'
]
!=
0
)
...
...
@@ -1057,11 +1050,20 @@ class BuyService
return
$buy
;
}
// 金额大于0、非预约模式 必须选择支付方式
if
(
$buy
[
'data'
][
'base'
][
'total_price'
]
>
0
&&
$common_order_is_booking
!=
1
)
{
if
(
empty
(
$params
[
'payment_id'
]))
{
return
DataReturn
(
'支付方式有误'
,
-
1
);
}
}
// 用户留言
$user_note
=
empty
(
$params
[
'user_note'
])
?
''
:
str_replace
([
'"'
,
"'"
],
''
,
strip_tags
(
$params
[
'user_note'
]));
// 订单默认状态
$order_status
=
(
intval
(
MyC
(
'common_order_is_booking'
,
0
))
==
1
)
?
0
:
1
;
$order_status
=
(
$common_order_is_booking
==
1
)
?
0
:
1
;
// 支付方式
$payment_id
=
0
;
...
...
app/service/OrderService.php
浏览文件 @
6aabda73
...
...
@@ -73,22 +73,6 @@ class OrderService
return
DataReturn
(
'订单支付id有误'
,
-
1
);
}
// 支付方式
$payment
=
[];
$payment_id
=
empty
(
$params
[
'payment_id'
])
?
Db
::
name
(
'Order'
)
->
where
([
'id'
=>
$ids
[
0
]])
->
value
(
'payment_id'
)
:
intval
(
$params
[
'payment_id'
]);
if
(
!
empty
(
$payment_id
))
{
$res
=
PaymentService
::
PaymentList
([
'where'
=>
[
'id'
=>
$payment_id
]]);
if
(
!
empty
(
$res
[
0
]))
{
$payment
=
$res
[
0
];
}
}
if
(
empty
(
$payment
))
{
return
DataReturn
(
'支付方式有误'
,
-
1
);
}
// 支付基础信息
$order_payment_id
=
0
;
$client_type
=
''
;
...
...
@@ -133,16 +117,6 @@ class OrderService
return
$ret
;
}
// 更新订单支付方式信息
if
(
$payment
[
'id'
]
!=
$order_payment_id
)
{
Db
::
name
(
'Order'
)
->
where
([
'id'
=>
$ids
])
->
update
([
'payment_id'
=>
$payment
[
'id'
],
'is_under_line'
=>
in_array
(
$payment
[
'payment'
],
MyConfig
(
'shopxo.under_line_list'
))
?
1
:
0
,
'upd_time'
=>
time
(),
]);
}
// 金额为0、走直接支付成功
$total_price
=
0
;
$success_count
=
0
;
...
...
@@ -152,7 +126,6 @@ class OrderService
{
$pay_result
=
self
::
OrderDirectSuccess
([
'order'
=>
$order
,
'payment'
=>
$payment
,
'user'
=>
$params
[
'user'
],
'params'
=>
$params
,
]);
...
...
@@ -175,6 +148,33 @@ class OrderService
return
DataReturn
(
'操作成功'
,
0
,
[
'is_success'
=>
1
]);
}
// 订单金额大于0则必须存在支付方式
// 支付方式、未指定支付方式则获取第一个订单的支付方式
$payment
=
[];
$payment_id
=
empty
(
$params
[
'payment_id'
])
?
Db
::
name
(
'Order'
)
->
where
([
'id'
=>
$ids
[
0
]])
->
value
(
'payment_id'
)
:
intval
(
$params
[
'payment_id'
]);
if
(
!
empty
(
$payment_id
))
{
$res
=
PaymentService
::
PaymentList
([
'where'
=>
[
'id'
=>
$payment_id
]]);
if
(
!
empty
(
$res
[
0
]))
{
$payment
=
$res
[
0
];
}
}
if
(
empty
(
$payment
))
{
return
DataReturn
(
'支付方式有误'
,
-
1
);
}
// 更新订单支付方式信息
if
(
$payment
[
'id'
]
!=
$order_payment_id
)
{
Db
::
name
(
'Order'
)
->
where
([
'id'
=>
$ids
])
->
update
([
'payment_id'
=>
$payment
[
'id'
],
'is_under_line'
=>
in_array
(
$payment
[
'payment'
],
MyConfig
(
'shopxo.under_line_list'
))
?
1
:
0
,
'upd_time'
=>
time
(),
]);
}
// 支付入口文件检查
$pay_checked
=
PaymentService
::
EntranceFileChecked
(
$payment
[
'payment'
],
'order'
);
if
(
$pay_checked
[
'code'
]
!=
0
)
...
...
@@ -472,29 +472,15 @@ class OrderService
*/
private
static
function
OrderDirectSuccess
(
$params
=
[])
{
if
(
!
empty
(
$params
[
'order'
])
&&
!
empty
(
$params
[
'
payment'
])
&&
!
empty
(
$params
[
'
user'
]))
if
(
!
empty
(
$params
[
'order'
])
&&
!
empty
(
$params
[
'user'
]))
{
if
(
$params
[
'order'
][
'total_price'
]
<=
0.00
)
{
// 新增支付日志
$pay_log
=
self
::
OrderPayLogInsert
([
'user_id'
=>
$params
[
'user'
][
'id'
],
'business_ids'
=>
$params
[
'order'
][
'id'
],
'business_nos'
=>
$params
[
'order'
][
'order_no'
],
'total_price'
=>
$params
[
'order'
][
'total_price'
],
'payment'
=>
$params
[
'payment'
][
'payment'
],
'payment_name'
=>
$params
[
'payment'
][
'name'
],
]);
if
(
$pay_log
[
'code'
]
!=
0
)
{
return
$pay_log
;
}
// 支付处理
$pay_params
=
[
'order'
=>
[
$params
[
'order'
]],
'payment'
=>
$params
[
'payment'
],
'pay_log_data'
=>
$pay_log
[
'data'
],
'payment'
=>
[
],
'pay_log_data'
=>
[
],
'pay'
=>
[
'trade_no'
=>
''
,
'subject'
=>
isset
(
$params
[
'params'
][
'subject'
])
?
$params
[
'params'
][
'subject'
]
:
'订单支付'
,
...
...
@@ -858,16 +844,21 @@ class OrderService
return
DataReturn
(
'订单数据不存在或类型有误'
,
-
1
);
}
// 支付方式
if
(
empty
(
$params
[
'payment'
]))
// 订单金额大于0必须存在支付方式和订单支付日志
$order_total_price
=
array_sum
(
array_column
(
$params
[
'order'
],
'total_price'
));
if
(
$order_total_price
>
0
)
{
return
DataReturn
(
'支付方式有误'
,
-
1
);
}
// 支付方式
if
(
empty
(
$params
[
'payment'
]))
{
return
DataReturn
(
'支付方式有误'
,
-
1
);
}
// 日志订单
if
(
empty
(
$params
[
'pay_log_data'
]))
{
return
DataReturn
(
'日志订单有误'
,
-
1
);
// 日志订单
if
(
empty
(
$params
[
'pay_log_data'
]))
{
return
DataReturn
(
'日志订单有误'
,
-
1
);
}
}
// 开启事务
...
...
@@ -905,7 +896,6 @@ class OrderService
$upd_data
=
[
'pay_status'
=>
1
,
'pay_price'
=>
$order
[
'total_price'
],
'payment_id'
=>
$params
[
'payment'
][
'id'
],
'pay_time'
=>
time
(),
'upd_time'
=>
time
(),
];
...
...
@@ -916,8 +906,15 @@ class OrderService
$upd_data
[
'status'
]
=
2
;
}
// 是否线下支付
$upd_data
[
'is_under_line'
]
=
in_array
(
$params
[
'payment'
][
'payment'
],
MyConfig
(
'shopxo.under_line_list'
))
?
1
:
0
;
// 订单金额大于0
if
(
$order
[
'total_price'
]
>
0
&&
!
empty
(
$params
[
'payment'
]))
{
// 更新支付方式
$upd_data
[
'payment_id'
]
=
$params
[
'payment'
][
'id'
];
// 是否线下支付
$upd_data
[
'is_under_line'
]
=
in_array
(
$params
[
'payment'
][
'payment'
],
MyConfig
(
'shopxo.under_line_list'
))
?
1
:
0
;
}
// 更新订单
if
(
!
Db
::
name
(
'Order'
)
->
where
([
'id'
=>
$order
[
'id'
]])
->
update
(
$upd_data
))
...
...
@@ -991,21 +988,24 @@ class OrderService
}
// 更新支付日志
$pay_log_data
=
[
'log_id'
=>
$params
[
'pay_log_data'
][
'id'
],
'trade_no'
=>
isset
(
$params
[
'pay'
][
'trade_no'
])
?
$params
[
'pay'
][
'trade_no'
]
:
''
,
'buyer_user'
=>
isset
(
$params
[
'pay'
][
'buyer_user'
])
?
$params
[
'pay'
][
'buyer_user'
]
:
''
,
'pay_price'
=>
isset
(
$params
[
'pay'
][
'pay_price'
])
?
$params
[
'pay'
][
'pay_price'
]
:
0
,
'subject'
=>
isset
(
$params
[
'pay'
][
'subject'
])
?
$params
[
'pay'
][
'subject'
]
:
'订单支付'
,
'payment'
=>
$params
[
'payment'
][
'payment'
],
'payment_name'
=>
$params
[
'payment'
][
'name'
],
];
$ret
=
PayLogService
::
PayLogSuccess
(
$pay_log_data
);
if
(
$ret
[
'code'
]
!=
0
)
{
// 事务回滚
Db
::
rollback
();
return
$ret
;
if
(
$order_total_price
>
0
&&
!
empty
(
$params
[
'pay_log_data'
])
&&
!
empty
(
$params
[
'payment'
]))
{
$pay_log_data
=
[
'log_id'
=>
$params
[
'pay_log_data'
][
'id'
],
'trade_no'
=>
isset
(
$params
[
'pay'
][
'trade_no'
])
?
$params
[
'pay'
][
'trade_no'
]
:
''
,
'buyer_user'
=>
isset
(
$params
[
'pay'
][
'buyer_user'
])
?
$params
[
'pay'
][
'buyer_user'
]
:
''
,
'pay_price'
=>
isset
(
$params
[
'pay'
][
'pay_price'
])
?
$params
[
'pay'
][
'pay_price'
]
:
0
,
'subject'
=>
isset
(
$params
[
'pay'
][
'subject'
])
?
$params
[
'pay'
][
'subject'
]
:
'订单支付'
,
'payment'
=>
$params
[
'payment'
][
'payment'
],
'payment_name'
=>
$params
[
'payment'
][
'name'
],
];
$ret
=
PayLogService
::
PayLogSuccess
(
$pay_log_data
);
if
(
$ret
[
'code'
]
!=
0
)
{
// 事务回滚
Db
::
rollback
();
return
$ret
;
}
}
// 提交事务
...
...
public/static/index/default/js/buy.js
浏览文件 @
6aabda73
...
...
@@ -106,7 +106,8 @@ $(function()
// 非预约模式校验支付方式
var
is_booking
=
$
(
'
.nav-buy
'
).
data
(
'
is-booking
'
)
||
0
;
if
(
is_booking
!=
1
)
var
actual_price
=
parseFloat
(
$
(
'
.nav-buy
'
).
data
(
'
base-actual-price
'
))
||
0
;
if
(
is_booking
!=
1
&&
actual_price
>
0
)
{
var
payment_id
=
parseInt
(
$
(
'
form.nav-buy input[name="payment_id"]
'
).
val
())
||
0
;
if
(
payment_id
===
0
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录