skip_load_page_layout = true; parent::init(); } /** * Page のプロセス. * * @return void */ public function process() { parent::process(); } /** * Page のAction. * * @return void */ public function action() { //決済処理中ステータスのロールバック $objPurchase = new SC_Helper_Purchase_Ex(); $objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG); //受注詳細データの取得 $arrOrderDetail = $this->lfGetOrderDetail($_POST['order_id']); //ログインしていない、またはDBに情報が無い場合 if (empty($arrOrderDetail)) { SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); } $this->lfAddCartProducts($arrOrderDetail); SC_Response_Ex::sendRedirect(CART_URLPATH); } // 受注詳細データの取得 public function lfGetOrderDetail($order_id) { $objQuery = SC_Query_Ex::getSingletonInstance(); $objCustomer = new SC_Customer_Ex(); //customer_idを検証 $customer_id = $objCustomer->getValue('customer_id'); $order_count = $objQuery->count('dtb_order', 'order_id = ? and customer_id = ?', array($order_id, $customer_id)); if ($order_count != 1) return array(); $col = 'dtb_order_detail.product_class_id, quantity'; $table = 'dtb_order_detail LEFT JOIN dtb_products_class ON dtb_order_detail.product_class_id = dtb_products_class.product_class_id'; $where = 'order_id = ?'; $objQuery->setOrder('order_detail_id'); $arrOrderDetail = $objQuery->select($col, $table, $where, array($order_id)); return $arrOrderDetail; } // 商品をカートに追加 public function lfAddCartProducts($arrOrderDetail) { $objCartSess = new SC_CartSession_Ex(); foreach ($arrOrderDetail as $order_row) { $objCartSess->addProduct($order_row['product_class_id'], $order_row['quantity']); } } }