Ignore:
Timestamp:
2013/08/05 10:24:23 (13 years ago)
Author:
yomoro
Message:

#1506 決済処理中でストップした際に在庫とポイントが差し引かれてしまう 対応。一旦こちらの形でコミットさせていただきます。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/helper/SC_Helper_Purchase.php

    r23024 r23027  
    13381338        return $objQuery->nextVal('dtb_order_order_id'); 
    13391339    } 
     1340     
     1341    /** 
     1342     * 決済処理中スタータスの全受注検索 
     1343     */ 
     1344    public function checkDbAllPendingOrder() { 
     1345        $term = PENDING_ORDER_CANCEL_TIME; 
     1346        if (!SC_Utils_Ex::isBlank($term) && preg_match("/^[0-9]+$/", $term)) { 
     1347            $target_time = strtotime('-' . $term . ' sec'); 
     1348            $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     1349            $arrVal = array(date('Y/m/d H:i:s',$target_time), ORDER_PENDING); 
     1350            $objQuery->begin(); 
     1351            $arrOrders = $objQuery->select('order_id', 'dtb_order', 'create_date <= ? and status = ? and del_flg = 0', $arrVal); 
     1352            if (!SC_Utils_Ex::isBlank($arrOrders)) { 
     1353                foreach ($arrOrders as $key => $arrOrder) { 
     1354                    $order_id = $arrOrder['order_id']; 
     1355                    $this->cancelOrder($order_id, ORDER_PENDING_ERROR, false); 
     1356                    GC_Utils_Ex::gfPrintLog('order cancel.(time expire) order_id=' . $order_id); 
     1357                } 
     1358            } 
     1359            $objQuery->commit(); 
     1360        } 
     1361    } 
     1362 
     1363    public function checkDbMyPendignOrder() { 
     1364        $objCustomer = new SC_Customer_Ex(); 
     1365        if ($objCustomer->isLoginSuccess(true)) { 
     1366            $customer_id = $objCustomer->getValue('customer_id'); 
     1367            $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     1368            $arrVal = array($customer_id, ORDER_PENDING); 
     1369            $objQuery->setOrder('create_date desc'); 
     1370            $objQuery->begin(); 
     1371            $arrOrders = $objQuery->select('order_id,create_date', 'dtb_order', 'customer_id = ? and status = ? and del_flg = 0', $arrVal); 
     1372            if (!SC_Utils_Ex::isBlank($arrOrders)) { 
     1373                foreach ($arrOrders as $key => $arrOrder) { 
     1374                    $order_id = $arrOrder['order_id']; 
     1375                    if ($key == 0) { 
     1376                        $objCartSess = new SC_CartSession_Ex(); 
     1377                        $cartKeys = $objCartSess->getKeys(); 
     1378                        $term = PENDING_ORDER_CANCEL_TIME; 
     1379                        if(preg_match("/^[0-9]+$/", $term)){ 
     1380                            $target_time = strtotime('-' . $term . ' sec'); 
     1381                            $create_time = strtotime($arrOrder['create_date']); 
     1382                            if (SC_Utils_Ex::isBlank($cartKeys) && $target_time < $create_time) { 
     1383                                $this->rollbackOrder($order_id, ORDER_CANCEL, true); 
     1384                                GC_Utils_Ex::gfPrintLog('order rollback.(my pending) order_id=' . $order_id); 
     1385                            } else { 
     1386                                $this->cancelOrder($order_id, ORDER_CANCEL, true); 
     1387                                if ($target_time > $create_time) { 
     1388                                    GC_Utils_Ex::gfPrintLog('order cancel.(my pending and time expire) order_id=' . $order_id); 
     1389                                } else { 
     1390                                    GC_Utils_Ex::gfPrintLog('order cancel.(my pending and set cart) order_id=' . $order_id); 
     1391                                } 
     1392                            } 
     1393                        } 
     1394                    } else { 
     1395                        $this->cancelOrder($order_id, ORDER_CANCEL, true); 
     1396                        GC_Utils_Ex::gfPrintLog('order cancel.(my old pending) order_id=' . $order_id); 
     1397                    } 
     1398                } 
     1399            } 
     1400            $objQuery->commit(); 
     1401        } 
     1402    } 
     1403 
     1404    public function checkSessionPendingOrder() { 
     1405        if (!SC_Utils_Ex::isBlank($_SESSION['order_id'])) { 
     1406            $order_id = $_SESSION['order_id']; 
     1407            unset($_SESSION['order_id']); 
     1408            $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     1409            $objQuery->begin(); 
     1410            $arrOrder =  $this->getOrder($order_id); 
     1411            if ($arrOrder['status'] == ORDER_PENDING) { 
     1412                $objCartSess = new SC_CartSession_Ex(); 
     1413                $cartKeys = $objCartSess->getKeys(); 
     1414                if (SC_Utils_Ex::isBlank($cartKeys)) { 
     1415                    $this->rollbackOrder($order_id, ORDER_CANCEL, true); 
     1416                    GC_Utils_Ex::gfPrintLog('order rollback.(session pending) order_id=' . $order_id); 
     1417                } else { 
     1418                    $this->cancelOrder($order_id, ORDER_CANCEL, true); 
     1419                    GC_Utils_Ex::gfPrintLog('order rollback.(session pending and set card) order_id=' . $order_id); 
     1420                } 
     1421            } 
     1422            $objQuery->commit(); 
     1423        } 
     1424    } 
    13401425} 
Note: See TracChangeset for help on using the changeset viewer.