/**
  * カートの情報を取得する
  *
  * @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;
 }
示例#5
0
 /**
  * 集計情報を元に最終計算を行う.
  *
  * @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;
 }
示例#7
0
 * 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 = ?";