|
@@ -9,10 +9,10 @@ defined('InShopNC') or exit('Access Invalid!');
|
|
|
class paymentLogic
|
|
|
{
|
|
|
/**
|
|
|
- * 尝试使用预存款
|
|
|
+ * 尝试使用预存款, 可以扣除运费
|
|
|
* @param int $pay_sn
|
|
|
* @param int $member_id
|
|
|
- * @return array
|
|
|
+ * @return int
|
|
|
*/
|
|
|
public function payPredeposit($pay_sn,$member_info = null)
|
|
|
{
|
|
@@ -25,7 +25,7 @@ class paymentLogic
|
|
|
}
|
|
|
$order_pay_info = $model_order->getOrderPayInfo($condition);
|
|
|
if (empty($order_pay_info)) {
|
|
|
- return false;
|
|
|
+ return -1;
|
|
|
}
|
|
|
|
|
|
$condition = array();
|
|
@@ -35,7 +35,8 @@ class paymentLogic
|
|
|
// 获取余额数据
|
|
|
$obj_member = Model('member');
|
|
|
$pd_amount = $obj_member->getPdAmount($member_info['member_id']);
|
|
|
- if (empty($order_list)) return false;
|
|
|
+ if (empty($order_list)) return -1;
|
|
|
+ if (floatval($pd_amount) <= 0) return -1;
|
|
|
|
|
|
$model_order = Model('order');
|
|
|
$model_pd = Model('predeposit');
|
|
@@ -49,19 +50,18 @@ class paymentLogic
|
|
|
// 使用全部预存款(红包逻辑)
|
|
|
$data_order = array();
|
|
|
$change_type = '';
|
|
|
- if (floatval($pd_amount) > floatval($order_info['order_amount'])) {
|
|
|
- // 余额大于订单金额的情况
|
|
|
- $order_info['pd_amount'] = floatval($order_info['order_amount']);
|
|
|
+ // 计算运费+订单总额
|
|
|
+ $total_amount = floatval($order_info['order_amount']) + floatval($order_info['shipping_fee']);
|
|
|
+ if (floatval($pd_amount) > floatval($total_amount)) {
|
|
|
+ $order_info['pd_amount'] = floatval($total_amount); // 余额大于订单金额的情况
|
|
|
$pd_amount = floatval($pd_amount) - floatval($order_info['pd_amount']);
|
|
|
- //$data_order["order_state"] = ORDER_STATE_PAY;
|
|
|
- //$data_order["order_amount"] = 0;
|
|
|
$change_type = 'order_pay';
|
|
|
- } else if (floatval($pd_amount) > 0) { // 余额小于等于订单金额的情况, $pd_amount不能等于0
|
|
|
+ } else { // 余额小于等于订单金额的情况, $pd_amount不能等于0
|
|
|
$order_info['pd_amount'] = floatval($pd_amount);
|
|
|
- $data_order["order_amount"] = floatval($order_info['order_amount']) - floatval($order_info['pd_amount']);
|
|
|
$pd_amount = 0;
|
|
|
$change_type = 'order_freeze';
|
|
|
}
|
|
|
+
|
|
|
$data_pd = array();
|
|
|
$data_pd['member_id'] = $member_id;
|
|
|
$data_pd['member_name'] = $member_info['member_name'];
|
|
@@ -82,24 +82,21 @@ class paymentLogic
|
|
|
}
|
|
|
|
|
|
DB::commit();
|
|
|
-
|
|
|
- if (ORDER_STATE_PAY == $data_order["order_state"]) {
|
|
|
- // 推送到oms
|
|
|
- }
|
|
|
+ return 0;
|
|
|
}
|
|
|
} catch (Exception $e) {
|
|
|
DB::rollback();
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 取得实物订单所需支付金额等信息
|
|
|
+ * 取得实物订单所需支付金额等信息, 移动支付时, 在使用红包时需要计算运费
|
|
|
* @param int $pay_sn
|
|
|
* @param int $member_id
|
|
|
+ * @param boolean $mobile_flag
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function getRealOrderInfo($pay_sn, $member_id = null)
|
|
|
+ public function getRealOrderInfo($pay_sn, $member_id = null, $mobile_flag = false)
|
|
|
{
|
|
|
//验证订单信息
|
|
|
$model_order = Model('order');
|
|
@@ -124,7 +121,13 @@ class paymentLogic
|
|
|
$pay_amount = 0;
|
|
|
if (!empty($order_list)) {
|
|
|
foreach ($order_list as $order_info) {
|
|
|
- $pay_amount += ncPriceFormat(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']));
|
|
|
+ if (false == $mobile_flag) {
|
|
|
+ $pay_amount += ncPriceFormat(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']));
|
|
|
+ } else {
|
|
|
+ // 移动平台需要计算运费
|
|
|
+ $total_amount = floatval($order_info['order_amount']) + floatval($order_info['shipping_fee']);
|
|
|
+ $pay_amount += ncPriceFormat(floatval($total_amount) - floatval($order_info['pd_amount']));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -135,12 +138,13 @@ class paymentLogic
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 取得虚拟订单所需支付金额等信息
|
|
|
+ * 取得虚拟订单所需支付金额等信息, 移动支付时, 在使用红包时需要计算运费
|
|
|
* @param int $order_sn
|
|
|
* @param int $member_id
|
|
|
+ * @param boolean $mobile_flag
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function getVrOrderInfo($order_sn, $member_id = null)
|
|
|
+ public function getVrOrderInfo($order_sn, $member_id = null, $mobile_flag = false)
|
|
|
{
|
|
|
//验证订单信息
|
|
|
$model_order = Model('vr_order');
|
|
@@ -158,8 +162,15 @@ class paymentLogic
|
|
|
$order_info['order_type'] = 'vr_order';
|
|
|
$order_info['pay_sn'] = $order_sn;
|
|
|
|
|
|
+ $pay_amount = 0.0;
|
|
|
//计算本次需要在线支付的订单总金额
|
|
|
- $pay_amount = ncPriceFormat(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']));
|
|
|
+ if (false == $mobile_flag) {
|
|
|
+ $pay_amount = ncPriceFormat(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']));
|
|
|
+ } else {
|
|
|
+ // 移动平台需要计算运费
|
|
|
+ $total_amount = floatval($order_info['order_amount']) + floatval($order_info['shipping_fee']);
|
|
|
+ $pay_amount += ncPriceFormat(floatval($total_amount) - floatval($order_info['pd_amount']));
|
|
|
+ }
|
|
|
|
|
|
$order_info['api_pay_amount'] = $pay_amount;
|
|
|
|