/** * 配送業者IDから, 支払い方法, お届け時間の配列を取得する. * * 結果の連想配列の添字の値は以下の通り * - 'arrDelivTime' - お届け時間の配列 * - 'arrPayment' - 支払い方法の配列 * - 'img_show' - 支払い方法の画像の有無 * * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス * @param SC_CartSession $objCartSess SC_CartSession インスタンス * @param integer $deliv_id 配送業者ID * @return array 支払い方法, お届け時間を格納した配列 */ function getSelectedDeliv(&$objPurchase, &$objCartSess, $deliv_id) { $arrResults = array(); $arrResults['arrDelivTime'] = $objPurchase->getDelivTime($deliv_id); $total = $objCartSess->getAllProductsTotal($objCartSess->getKey(), $deliv_id); $arrResults['arrPayment'] = $objPurchase->getPaymentsByPrice($total, $deliv_id); $arrResults['img_show'] = $this->hasPaymentImage($arrResults['arrPayment']); return $arrResults; }
/** * カートに変化が無いか検証する. * * ユニーク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; } }
/** * 配送業者IDから, 支払い方法, お届け時間の配列を取得する. * * 結果の連想配列の添字の値は以下の通り * - 'arrDelivTime' - お届け時間の配列 * - 'arrPayment' - 支払い方法の配列 * - 'img_show' - 支払い方法の画像の有無 * * @param SC_CartSession $objCartSess SC_CartSession インスタンス * @param integer $deliv_id 配送業者ID * @return array 支払い方法, お届け時間を格納した配列 */ public function getSelectedDeliv(&$objCartSess, $deliv_id) { $arrResults = array(); if (strval($deliv_id) === strval(intval($deliv_id))) { $arrResults['arrDelivTime'] = SC_Helper_Delivery_Ex::getDelivTime($deliv_id); $total = $objCartSess->getAllProductsTotal($objCartSess->getKey()); $payments_deliv = SC_Helper_Delivery_Ex::getPayments($deliv_id); $objPayment = new SC_Helper_Payment_Ex(); $payments_total = $objPayment->getByPrice($total); $arrPayment = array(); foreach ($payments_total as $payment) { if (in_array($payment['payment_id'], $payments_deliv)) { $arrPayment[] = $payment; } } $arrResults['arrPayment'] = $arrPayment; $arrResults['img_show'] = $this->hasPaymentImage($arrResults['arrPayment']); } return $arrResults; }
/** * カートの商品を数量ごとに分割し, フォームに設定する. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @param SC_CartSession $objCartSess SC_CartSession インスタンス * @return void */ public function setParamToSplitItems(&$objFormParam, &$objCartSess) { $cartLists =& $objCartSess->getCartList($objCartSess->getKey()); $arrItems = array(); $index = 0; foreach (array_keys($cartLists) as $key) { $arrProductsClass = $cartLists[$key]['productsClass']; $quantity = (int) $cartLists[$key]['quantity']; for ($i = 0; $i < $quantity; $i++) { foreach ($arrProductsClass as $key2 => $val) { $arrItems[$key2][$index] = $val; } $arrItems['quantity'][$index] = 1; $arrItems['price'][$index] = $cartLists[$key]['price']; $arrItems['price_inctax'][$index] = $cartLists[$key]['price_inctax']; $index++; } } $objFormParam->setParam($arrItems); $objFormParam->setValue('line_of_num', $index); }
/** * 配送業者IDから, 支払い方法, お届け時間の配列を取得する. * * 結果の連想配列の添字の値は以下の通り * - 'arrDelivTime' - お届け時間の配列 * - 'arrPayment' - 支払い方法の配列 * - 'img_show' - 支払い方法の画像の有無 * * @param SC_CartSession $objCartSess SC_CartSession インスタンス * @param integer $deliv_id 配送業者ID * @return array 支払い方法, お届け時間を格納した配列 */ public function getSelectablePayment(&$objCartSess, $deliv_id, $is_list = false) { $arrPayment = array(); if (strval($deliv_id) === strval(intval($deliv_id))) { $total = $objCartSess->getAllProductsTotal($objCartSess->getKey()); $payments_deliv = DeliveryHelper::getPayments($deliv_id); $objPayment = new PaymentHelper(); $payments_total = $objPayment->getByPrice($total); foreach ($payments_total as $payment) { if (in_array($payment['payment_id'], $payments_deliv)) { if ($is_list) { $arrPayment[$payment['payment_id']] = $payment['payment_method']; } else { $arrPayment[] = $payment; } } } } return $arrPayment; }