/** * カートの情報を取得する * * @param Eccube\CartSession $objCart カートセッション管理クラス * @return array カートデータ配列 */ public function lfGetCartData(CartSession &$objCart) { $arrCartKeys = $objCart->getKeys(); foreach ($arrCartKeys as $cart_key) { // 購入金額合計 $products_total += $objCart->getAllProductsTotal($cart_key); // 合計数量 $total_quantity += $objCart->getTotalQuantity($cart_key); // 送料無料チェック if (!$this->isMultiple && !$this->hasDownload) { $is_deliv_free = $objCart->isDelivFree($cart_key); } } $arrCartList = array(); $arrCartList['ProductsTotal'] = $products_total; $arrCartList['TotalQuantity'] = $total_quantity; // 店舗情報の取得 $arrInfo = Application::alias('eccube.helper.db')->getBasisData(); $arrCartList['free_rule'] = $arrInfo['free_rule']; // 送料無料までの金額 if ($is_deliv_free) { $arrCartList['deliv_free'] = 0; } else { $deliv_free = $arrInfo['free_rule'] - $products_total; $arrCartList['deliv_free'] = $deliv_free; } return $arrCartList; }
/** * カートの情報を取得する * * @param CartSession $objCart カートセッション管理クラス * @param Array $arrInfo 基本情報配列 * @param Array $cartKeys 商品種類配列 * @return array $arrCartList カートデータ配列 */ public function lfGetCartData(CartSession $objCart, $arrInfo, $cartKeys) { $cartList = array(); foreach ($cartKeys as $key) { // カート集計処理 $cartList[$key]['productTypeName'] = $this->arrProductType[$key]; //商品種類名 $cartList[$key]['totalInctax'] = $objCart->getAllProductsTotal($key); //合計金額 $cartList[$key]['delivFree'] = $arrInfo['free_rule'] - $cartList[$key]['totalInctax']; // 送料無料までの金額を計算 $cartList[$key]['totalTax'] = $objCart->getAllProductsTax($key); //消費税合計 $cartList[$key]['quantity'] = $objCart->getTotalQuantity($key); //商品数量合計 $cartList[$key]['productTypeId'] = $key; // 商品種別ID } return $cartList; }
/** * カートに変化が無いか検証する. * * ユニークIDとセッションのユニークIDを比較し, 異なる場合は * エラー画面を表示する. * * カートが空の場合, 購入ボタン押下後にカートが変更された場合は * カート画面へ遷移する. * * @param string $uniqId ユニークID * @param CartSession $objCartSession * @return void */ public function verifyChangeCart($uniqId, &$objCartSession) { $cartKey = $objCartSession->getKey(); // カート内が空でないか if (Utils::isBlank($cartKey)) { Application::alias('eccube.response')->sendRedirect(CART_URL); exit; } // 初回のみカートの内容を保存 $objCartSession->saveCurrentCart($uniqId, $cartKey); /* * POSTのユニークIDとセッションのユニークIDを比較 *(ユニークIDがPOSTされていない場合はスルー) */ if (!Application::alias('eccube.site_session')->checkUniqId()) { Utils::sfDispSiteError(CANCEL_PURCHASE); exit; } // 購入ボタンを押してから変化がないか $quantity = $objCartSession->getTotalQuantity($cartKey); if ($objCartSession->checkChangeCart($cartKey) || !($quantity > 0)) { Application::alias('eccube.response')->sendRedirect(CART_URL); exit; } }