Quellcode durchsuchen

红包预存款, 支付模块更新

songjiyuan vor 9 Jahren
Ursprung
Commit
e35719c1a3
2 geänderte Dateien mit 62 neuen und 6 gelöschten Zeilen
  1. 61 5
      data/logic/payment.logic.php
  2. 1 1
      mobile/control/app_pay.php

+ 61 - 5
data/logic/payment.logic.php

@@ -15,7 +15,7 @@ class paymentLogic
      * @param int $member_id
      * @return array
      */
-    public function getRealOrderInfo($pay_sn, $member_id = null)
+    public function getRealOrderInfo_Moblie($pay_sn, $member_id = null)
     {
         //验证订单信息
         $model_order = Model('order');
@@ -47,27 +47,34 @@ class paymentLogic
             $obj_member = Model('member');
 
             $member_id = intval($member_id);
-            $member_info = $this->getMemberInfo(array('member_id'=>$member_id));
+            $usebonus = $_GET['usebonus'];
 
             foreach ($order_list as $order_info) {
                 if (intval($usebonus) === 1) {  // 使用全部预存款(红包逻辑)
+                    $data_order = array();
+                    $change_type = '';
                     if (floatval($pd_amount) > floatval($order_info['order_amount'])) {
                         // 余额大于订单金额的情况
                         $order_info['pd_amount'] = floatval($order_info['order_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
                         $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'];
+                    $data_pd['member_name'] = "红包系统";
                     $data_pd['amount'] = $order_info['pd_amount'];
                     $data_pd['order_sn'] = $order_info['order_sn'];
                     //预存款立即支付,订单支付完成
-                    $model_pd->changePd('order_pay',$data_pd);
+                    $model_pd->changePd($change_type,$data_pd);
                     // 修改订单
-                    $data_order = array("pd_amount" => $order_info['pd_amount']);
+                    $data_order["pd_amount"] = $order_info['pd_amount'];
                     $model_order->editOrder($data_order,array('order_id'=>$order_info['order_id']));
                 }
                 $pay_amount += ncPriceFormat(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']));
@@ -81,6 +88,55 @@ class paymentLogic
     }
 
     /**
+     * 取得实物订单所需支付金额等信息
+     * @param int $pay_sn
+     * @param int $member_id
+     * @return array
+     */
+    public function getRealOrderInfo($pay_sn, $member_id = null)
+    {
+        //验证订单信息
+        $model_order = Model('order');
+        $condition = array();
+        $condition['pay_sn'] = $pay_sn;
+        if (!empty($member_id)) {
+            $condition['buyer_id'] = $member_id;
+        }
+        $order_pay_info = $model_order->getOrderPayInfo($condition);
+        if (empty($order_pay_info)) {
+            return callback(false, '该支付单不存在');
+        }
+
+        $order_pay_info['subject'] = '实物订单_' . $order_pay_info['pay_sn'];
+        $order_pay_info['order_type'] = 'real_order';
+
+        $condition = array();
+        $condition['pay_sn'] = $pay_sn;
+        $order_list = $model_order->getNormalOrderList($condition);
+
+        // 获取余额数据
+        $obj_member = Model('member');
+        $pd_amount = $obj_member->getPdAmount($member_id);
+        //计算本次需要在线支付的订单总金额
+        $pay_amount = 0;
+        if (!empty($order_list)) {
+            $model_order = Model('order');
+            $model_pd = Model('predeposit');
+            $obj_member = Model('member');
+
+            $member_id = intval($member_id);
+            foreach ($order_list as $order_info) {
+                $pay_amount += ncPriceFormat(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']));
+            }
+        }
+
+        $order_pay_info['api_pay_amount'] = $pay_amount;
+        $order_pay_info['order_list'] = $order_list;
+
+        return callback(true, '', $order_pay_info);
+    }
+
+    /**
      * 取得虚拟订单所需支付金额等信息
      * @param int $order_sn
      * @param int $member_id

+ 1 - 1
mobile/control/app_pay.php

@@ -41,7 +41,7 @@ class app_payControl extends mobileMemberControl
 
         $logic_payment = Logic('payment');
         //重新计算所需支付金额
-        $result = $logic_payment->getRealOrderInfo($pay_sn, $this->member_info['member_id']);
+        $result = $logic_payment->getRealOrderInfo_Moblie($pay_sn, $this->member_info['member_id']);
 
         if (intval($result['data']['api_pay_state']) != 0) {
             return joutput_error(errcode::ErrPayment, $result['msg']);