/** * カートの情報を取得する * * @param SC_CartSession $objCart カートセッション管理クラス * @return array カートデータ配列 */ public function lfGetCartData(&$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 = SC_Helper_DB_Ex::sfGetBasisData(); $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; }
/** * Page のプロセス. * * @return void */ function process() { $objSubView = new SC_SiteView(); $objCart = new SC_CartSession(); $objSiteInfo = new SC_SiteInfo(); if (count($_SESSION[$objCart->key]) > 0) { // カート情報を取得 $arrCartList = $objCart->getCartList(); // カート内の商品ID一覧を取得 $arrAllProductID = $objCart->getAllProductID(); // 商品が1つ以上入っている場合には商品名称を取得 if (count($arrAllProductID) > 0) { $objQuery = new SC_Query(); $arrVal = array(); $sql = ""; $sql = "SELECT name FROM dtb_products WHERE product_id IN ( ?"; $arrVal = array($arrAllProductID[0]); for ($i = 1; $i < count($arrAllProductID); $i++) { $sql .= " ,? "; array_push($arrVal, $arrAllProductID[$i]); } $sql .= " )"; $arrProduct_name = $objQuery->getAll($sql, $arrVal); foreach ($arrProduct_name as $key => $val) { $arrCartList[$key]['product_name'] = $val['name']; } } // 店舗情報の取得 $arrInfo = $objSiteInfo->data; // 購入金額合計 $ProductsTotal = $objCart->getAllProductsTotal($arrInfo); // 合計個数 $TotalQuantity = $objCart->getTotalQuantity(); // 送料無料までの金額 $arrCartList[0]['ProductsTotal'] = $ProductsTotal; $arrCartList[0]['TotalQuantity'] = $TotalQuantity; $deliv_free = $arrInfo['free_rule'] - $ProductsTotal; $arrCartList[0]['free_rule'] = $arrInfo['free_rule']; $arrCartList[0]['deliv_free'] = $deliv_free; $this->arrCartList = $arrCartList; } $objSubView->assignobj($this); $objSubView->display($this->tpl_mainpage); }
/** * カートに変化が無いか検証する. * * ユニークIDとセッションのユニークIDを比較し, 異なる場合は * エラー画面を表示する. * * カートが空の場合, 購入ボタン押下後にカートが変更された場合は * カート画面へ遷移する. * * @param string $uniqId ユニークID * @param SC_CartSession $objCartSession * @return void */ public function verifyChangeCart($uniqId, &$objCartSession) { $cartKey = $objCartSession->getKey(); // カート内が空でないか if (SC_Utils_Ex::isBlank($cartKey)) { SC_Response_Ex::sendRedirect(CART_URL); exit; } // 初回のみカートの内容を保存 $objCartSession->saveCurrentCart($uniqId, $cartKey); /* * POSTのユニークIDとセッションのユニークIDを比較 *(ユニークIDがPOSTされていない場合はスルー) */ if (!SC_SiteSession_Ex::checkUniqId()) { SC_Utils_Ex::sfDispSiteError(CANCEL_PURCHASE); exit; } // 購入ボタンを押してから変化がないか $quantity = $objCartSession->getTotalQuantity($cartKey); if ($objCartSession->checkChangeCart($cartKey) || !($quantity > 0)) { SC_Response_Ex::sendRedirect(CART_URL); exit; } }
/** * カートの情報を取得する * * @param SC_CartSession $objCart カートセッション管理クラス * @param Array $arrInfo 基本情報配列 * @param Array $cartKeys 商品種類配列 * @return array $arrCartList カートデータ配列 */ public function lfGetCartData($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; }
/** * 集計情報を元に最終計算を行う. * * @param array $arrData 各種情報 * @param LC_Page $objPage LC_Page インスタンス * @param SC_CartSession $objCartSess SC_CartSession インスタンス * @param array $arrInfo 店舗情報の配列 * @param SC_Customer $objCustomer SC_Customer インスタンス * @return array 最終計算後の配列 */ function sfTotalConfirm($arrData, &$objPage, &$objCartSess, $arrInfo, $objCustomer = "") { // 未定義変数を定義 if (!isset($arrData['deliv_pref'])) { $arrData['deliv_pref'] = ""; } if (!isset($arrData['payment_id'])) { $arrData['payment_id'] = ""; } if (!isset($arrData['charge'])) { $arrData['charge'] = ""; } if (!isset($arrData['use_point'])) { $arrData['use_point'] = ""; } // 商品の合計個数 $total_quantity = $objCartSess->getTotalQuantity(true); // 税金の取得 $arrData['tax'] = $objPage->tpl_total_tax; // 小計の取得 $arrData['subtotal'] = $objPage->tpl_total_pretax; // 合計送料の取得 $arrData['deliv_fee'] = 0; // 商品ごとの送料が有効の場合 if (OPTION_PRODUCT_DELIV_FEE == 1) { $arrData['deliv_fee'] += $objCartSess->getAllProductsDelivFee(); } // 配送業者の送料が有効の場合 if (OPTION_DELIV_FEE == 1) { // 送料の合計を計算する $arrData['deliv_fee'] += $this->sfGetDelivFee($arrData); } // 送料無料の購入数が設定されている場合 if (DELIV_FREE_AMOUNT > 0) { if ($total_quantity >= DELIV_FREE_AMOUNT) { $arrData['deliv_fee'] = 0; } } // 送料無料条件が設定されている場合 if ($arrInfo['free_rule'] > 0) { // 小計が無料条件を超えている場合 if ($arrData['subtotal'] >= $arrInfo['free_rule']) { $arrData['deliv_fee'] = 0; } } // 合計の計算 $arrData['total'] = $objPage->tpl_total_pretax; // 商品合計 $arrData['total'] += $arrData['deliv_fee']; // 送料 $arrData['total'] += $arrData['charge']; // 手数料 // お支払い合計 $arrData['payment_total'] = $arrData['total'] - $arrData['use_point'] * POINT_VALUE; // 加算ポイントの計算 if (USE_POINT === false) { $arrData['add_point'] = 0; } else { $arrData['add_point'] = SC_Utils::sfGetAddPoint($objPage->tpl_total_point, $arrData['use_point'], $arrInfo); if ($objCustomer != "") { // 誕生日月であった場合 if ($objCustomer->isBirthMonth()) { $arrData['birth_point'] = BIRTH_MONTH_POINT; $arrData['add_point'] += $arrData['birth_point']; } } } if ($arrData['add_point'] < 0) { $arrData['add_point'] = 0; } return $arrData; }
/** * カートの情報を取得する * * @param SC_CartSession $objCart カートセッション管理クラス * @return array $arrCartList カートデータ配列 */ function lfGetCartData(&$objCart) { $arrCartKeys = $objCart->getKeys(); foreach ($arrCartKeys as $cart_key) { // カート情報を取得 $arrCartList = $objCart->getCartList($cart_key); // カート内の商品ID一覧を取得 $arrAllProductID = $objCart->getAllProductID($cart_key); // 商品が1つ以上入っている場合には商品名称を取得 if (!SC_Utils_Ex::isBlank($arrCartList['productsClass'])) { foreach ($arrCartList['productsClass'] as $key => $val) { $arrCartList[$key]['product_name'] = $val['name']; } } // 購入金額合計 $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[0]['ProductsTotal'] = $products_total; $arrCartList[0]['TotalQuantity'] = $total_quantity; // 店舗情報の取得 $arrInfo = SC_Helper_DB_Ex::sfGetBasisData(); $arrCartList[0]['free_rule'] = $arrInfo['free_rule']; // 送料無料までの金額 if ($is_deliv_free) { $arrCartList[0]['deliv_free'] = 0; } else { $deliv_free = $arrInfo['free_rule'] - $products_total; $arrCartList[0]['deliv_free'] = $deliv_free; } return $arrCartList; }
* but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ require_once "../require.php"; $objSiteSess = new SC_SiteSession(); $objCartSess = new SC_CartSession(); $objQuery = new SC_Query(); // 前のページで正しく登録手続きが行われた記録があるか判定 SC_Utils::sfIsPrePage($objSiteSess); // SPSモジュール連携用 if (file_exists(MODULE_PATH . 'mdl_sps/inc/include.php') && !$objCartSess->getTotalQuantity()) { require_once MODULE_PATH . 'mdl_sps/inc/include.php'; header("Location: " . ERROR_URL); exit; } // アクセスの正当性の判定 $uniqid = SC_Utils::sfCheckNormalAccess($objSiteSess, $objCartSess); $payment_id = $_SESSION["payment_id"]; // 支払いIDが無い場合にはエラー if ($payment_id == "") { SC_Utils::sfDispSiteError(PAGE_ERROR, "", true); } // 決済情報を取得する $objDB = new SC_Helper_DB_Ex(); if ($objDB->sfColumnExists("dtb_payment", "memo01")) { $sql = "SELECT module_path, memo01, memo02, memo03, memo04, memo05, memo06, memo07, memo08, memo09, memo10 FROM dtb_payment WHERE payment_id = ?";