优化订单0元无需选择支付方式
parent
60c6edfe5d
commit
6aabda73c7
|
|
@ -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}}" />
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
if($order_total_price > 0 && !empty($params['pay_log_data']) && !empty($params['payment']))
|
||||
{
|
||||
// 事务回滚
|
||||
Db::rollback();
|
||||
return $ret;
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
||||
// 提交事务
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue