stanley-king 7 rokov pred
rodič
commit
97f44d61c2

+ 0 - 3
global.php

@@ -114,9 +114,6 @@ define('ORDER_STATE_CANCEL', 0);
 //已产生但未支付
 define('ORDER_STATE_NEW', 10);
 
-//已支付但是已支付但是未收到第三方确认回调未收到第三方确认回调
-//define('ORDER_STATE_PAY_UNCONFIRM', 15);
-
 //已支付
 define('ORDER_STATE_PAY', 20);
 

+ 89 - 53
helper/pay_helper.php

@@ -26,12 +26,12 @@ class pay_helper
     const real_order = 2;
 
     private $mOrderType;
-    private $logic_payment;
+    private $mPaymentLogic;
     private $mPaysn;
 
     public function __construct($paysn)
     {
-        $this->logic_payment = Logic('payment');
+        $this->mPaymentLogic = Logic('payment');
         $order_pay_info = Model('order')->getOrderPayInfo(array('pay_sn' => $paysn),true);
         if (empty($order_pay_info)) {
             $this->mOrderType = pay_helper::virtual_order;
@@ -45,7 +45,7 @@ class pay_helper
     {
         $pay_sn = $this->mPaysn;
         $member_info = array('member_id' => session_helper::memberid(), 'member_name'  => session_helper::nickname());
-        $this->logic_payment->payPredepositEx($pay_sn,$member_info);
+        $this->mPaymentLogic->payPredepositEx($pay_sn,$member_info);
     }
 
     public function pay($payment,$usebonus,&$err)
@@ -64,8 +64,7 @@ class pay_helper
             $this->pay_bonus();
         }
 
-        $logic_payment = Logic('payment');
-        $payinfo = $logic_payment->getRealOrderInfo($pay_sn, $_SESSION['member_id'],true);
+        $payinfo = $this->mPaymentLogic->getRealOrderInfo($pay_sn, $_SESSION['member_id'],true);
         if (intval($payinfo['data']['api_pay_state']) != 0) {
             $err = array('code' => errcode::ErrPayment, 'msg' => $payinfo['msg']);
             return false;
@@ -76,8 +75,9 @@ class pay_helper
         {
             $output['need_pay'] = false;
             $output['tips'] = "已经用红包支付完成";
+            $output['is_virtual'] = false;
 
-            $payinfo = self::update_order($pay_sn, $pay_sn, 'bonus');  // 更新订单
+            $payinfo = $this->update_order($pay_sn, 'bonus');  // 更新订单
             if (isset($payinfo) && $payinfo['state'])
             {
                 if(is_pushoms())
@@ -100,9 +100,7 @@ class pay_helper
     private function virtual_pay($payment,$usebonus,&$err)
     {
         $order_sn = $this->mPaysn;
-
-        $logic_payment = Logic('payment');
-        $payinfo = $logic_payment->getVrOrderInfo($order_sn, $_SESSION['member_id'],true);
+        $payinfo = $this->mPaymentLogic->getVrOrderInfo($order_sn, null,true);
 
         if(!$payinfo['state']) goto onerror;
         if ($payinfo['data']['order_state'] != ORDER_STATE_NEW || empty($payinfo['data']['api_pay_amount'])) goto onerror;
@@ -111,19 +109,11 @@ class pay_helper
         if($left_cents == 0)
         {
             $output['need_pay'] = false;
-            $output['tips'] = "已经用红包支付完成";
+            $output['tips'] = "支付完成";
+            $output['is_virtual'] = true;
 
-            $payinfo = self::update_order($order_sn, $pay_sn, 'bonus');  // 更新订单
-            if (isset($payinfo) && $payinfo['state'])
-            {
-                if(is_pushoms())
-                {
-                    $logic_delivery = Logic('delivery');
-                    $ret = $logic_delivery->putOrder($pay_sn, $pay_sn);
-                    if(empty($ret)) { //todo must add to 定时任务
-                        Log::record("Put order to oms error: pay_sn={$pay_sn},bonus pay.",Log::ERR);
-                    }
-                }
+            $payinfo = $this->update_order($order_sn, 'bonus');  // 更新订单
+            if ($payinfo['state']) {
                 $this->OnSuccess();
             }
             return $output;
@@ -132,7 +122,6 @@ class pay_helper
             return $this->third_pay($payment,$payinfo,$left_cents,$err);
         }
 
-
         onerror:
             $err = array('code' => errcode::ErrPayment, 'msg' => $payinfo['msg']);
         return false;
@@ -183,38 +172,69 @@ class pay_helper
     public function confirm(&$err,&$amount,&$fcode_state)
     {
         $pay_sn = $this->mPaysn;
-        $logic_payment = Logic('payment');
-        $result = $logic_payment->getRealOrderInfo($pay_sn,null,true);
-        if(empty($result)) {
-            $err = ['code'=> errcode::ErrOrder,'msg' => '无此订单.'];
-            return false;
-        }
-        $amount = $result['data']['api_pay_amount'];
-        $fcode_state = intval($result['data']['fcode_state']);
 
-        if (intval($result['data']['api_pay_state']) == 0) {
-            $err = ['code'=> errcode::ErrOrder,'msg' => '此订单未完成支付.'];
-            return false;
+        if($this->mOrderType == pay_helper::real_order)
+        {
+            $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
+            if(empty($result)) {
+                $err = ['code'=> errcode::ErrOrder,'msg' => '无此订单.'];
+                return false;
+            }
+            $amount = $result['data']['api_pay_amount'];
+            $fcode_state = intval($result['data']['fcode_state']);
+
+            if (intval($result['data']['api_pay_state']) == 0) {
+                $err = ['code'=> errcode::ErrOrder,'msg' => '此订单未完成支付.'];
+                return false;
+            }
+            else {
+                return true;
+            }
         }
-        else {
-            return true;
+        else
+        {
+            $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn, null,true);
+            if(!$result['state']) {
+                $err = ['code'=> errcode::ErrOrder,'msg' => '无此订单.'];
+                return false;
+            }
+            if ($result['data']['order_state'] != ORDER_STATE_NEW) {
+                $fcode_state = 1;
+                return true;
+            } else {
+                $err = ['code'=> errcode::ErrOrder,'msg' => '订单未完成支付.'];
+                return false;
+            }
         }
     }
 
     public function check_fee($total_fee,&$need_pay)
     {
         $pay_sn = $this->mPaysn;
-        $logic_payment = Logic('payment');
-        $result = $logic_payment->getRealOrderInfo($pay_sn,null,true);
 
-        if (intval($result['data']['api_pay_state']) != 0) {
-            return false;
+        if($this->mOrderType == pay_helper::real_order)
+        {
+            $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
+
+            if (intval($result['data']['api_pay_state']) != 0) {
+                return false;
+            }
+
+            $need_pay = intval($result['data']['api_pay_amount'] * 100 + 0.5);
+            $total_fee = intval($total_fee * 100 + 0.5);
+
+            return ($need_pay === $total_fee);
         }
+        else
+        {
+            $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn);
+            if(!$result['state']) return false;
 
-        $need_pay = intval($result['data']['api_pay_amount'] * 100 + 0.5);
-        $total_fee = intval($total_fee * 100 + 0.5);
+            $need_pay  = intval($result['data']['api_pay_amount'] * 100 + 0.5);
+            $total_fee = intval($total_fee * 100 + 0.5);
 
-        return ($need_pay === $total_fee);
+            return ($need_pay === $total_fee);
+        }
     }
 
     public function paied()
@@ -222,13 +242,18 @@ class pay_helper
         $pay_sn = $this->mPaysn;
         if($this->mOrderType == self::real_order)
         {
-            $result = $this->logic_payment->getRealOrderInfo($pay_sn,null,true);
+            $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
             if (intval($result['data']['api_pay_state']) != 0) {
                 return true;
             }
         } 
-        else {
-
+        else
+        {
+            $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn);
+            if(!$result['state']) return false;
+            if ($result['data']['order_state'] != ORDER_STATE_NEW) {
+                return true;
+            }
         }
 
         return false;
@@ -239,8 +264,7 @@ class pay_helper
         $pay_sn = $this->mPaysn;
         if ($this->mOrderType == self::real_order)
         {
-            $logic_payment = Logic('payment');
-            $result = $logic_payment->getRealOrderInfo($pay_sn,null,true);
+            $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
 
             if($result['state'] != true) {
                 return false;
@@ -249,8 +273,15 @@ class pay_helper
                 return true;
             }
         }
-        else {
-
+        else
+        {
+            $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn,null,true);
+            if($result['state'] != true) {
+                return false;
+            } else {
+                QueueClient::push('onAsyncOrderPaied',['pay_sn' => $pay_sn]);
+                return true;
+            }
         }
     }
 
@@ -259,20 +290,25 @@ class pay_helper
         $paysn = $this->mPaysn;
         if ($this->mOrderType == self::real_order)
         {
-            $result = $this->logic_payment->getRealOrderInfo($paysn,null,true);
+            $result = $this->mPaymentLogic->getRealOrderInfo($paysn,null,true);
             if (intval($result['data']['api_pay_state'])) {
                 return ['state' => true];
             }
             $order_list = $result['data']['order_list'];
-            $result = $this->logic_payment->updateRealOrder($paysn, $payment, $order_list, $trade_no);
+            $result = $this->mPaymentLogic->updateRealOrder($paysn, $payment, $order_list, $trade_no);
         }
         else
         {
-            $result = $this->logic_payment->getVrOrderInfo($paysn);
+            $result = $this->mPaymentLogic->getVrOrderInfo($paysn);
+            if(!$result['state']) {
+                return ['state' => false];
+            }
+
             if ($result['data']['order_state'] != ORDER_STATE_NEW) {
                 return ['state' => true];
             }
-            $result = $this->logic_payment->updateVrOrder($paysn, $payment, $result['data'], $trade_no);
+
+            $result = $this->mPaymentLogic->updateVrOrder($paysn, $payment, $result['data'], $trade_no);
         }
 
         return $result;

+ 0 - 5
mobile/control/member_buy.php

@@ -188,11 +188,6 @@ class member_buyControl extends mbMemberControl
         $input['buyer_phone'] = $_POST['buyer_phone'];
         $input['buyer_msg'] = $_POST['buyer_msg'];
 
-//        //是否使用充值卡支付0是/1否
-//        $input['rcb_pay'] = intval($_POST['rcb_pay']);
-//        //是否使用预存款支付0是/1否
-//        $input['pd_pay'] = intval($_POST['pd_pay']);
-
         $input['order_from'] = 2;
         $result = $logic_buy_virtual->buyStep3($input, session_helper::memberid());
         if (!$result['state']) {

+ 4 - 4
shop/templates/default/seller/store_goods_add.step2.php

@@ -856,14 +856,14 @@ $(function(){
             g_price : {
                 required    : true,
                 number      : true,
-                min         : 0.01,
+                min         : 0.00,
                 max         : 9999999,
                 checkPrice  : true
             },
             g_marketprice : {
                 required    : true,
                 number      : true,
-                min         : 0.01,
+                min         : 0.00,
                 max         : 9999999
             },
             g_costprice : {
@@ -921,8 +921,8 @@ $(function(){
             g_marketprice : {
                 required    : '<i class="icon-exclamation-sign"></i>请填写市场价',
                 number      : '<i class="icon-exclamation-sign"></i>请填写正确的价格',
-                min         : '<i class="icon-exclamation-sign"></i>请填写0.01~9999999之间的数字',
-                max         : '<i class="icon-exclamation-sign"></i>请填写0.01~9999999之间的数字'
+                min         : '<i class="icon-exclamation-sign"></i>请填写0.00~9999999之间的数字',
+                max         : '<i class="icon-exclamation-sign"></i>请填写0.00~9999999之间的数字'
             },
             g_costprice : {
                 number      : '<i class="icon-exclamation-sign"></i>请填写正确的价格',