/** * カートを購入モードに設定 * * @param SiteSession $objSiteSess * @param CartSession $objCartSess * @return void */ public function lfSetCurrentCart(&$objSiteSess, &$objCartSess, $cartKey) { // 正常に登録されたことを記録しておく $objSiteSess->setRegistFlag(); $pre_uniqid = $objSiteSess->getUniqId(); // 注文一時IDの発行 $objSiteSess->setUniqId(); $uniqid = $objSiteSess->getUniqId(); // エラーリトライなどで既にuniqidが存在する場合は、設定を引き継ぐ if ($pre_uniqid != '') { $this->lfUpdateOrderTempid($pre_uniqid, $uniqid); } // カートを購入モードに設定 $objCartSess->registerKey($cartKey); $objCartSess->saveCurrentCart($uniqid, $cartKey); }
/** * カートに変化が無いか検証する. * * ユニーク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; } }