tpl_mainpage = 'mdl_epsilon/card.tpl'; // メインテンプレート /* session_start時のno-cacheヘッダーを抑制することで 「戻る」ボタン使用時の有効期限切れ表示を抑制する。 private-no-expire:クライアントのキャッシュを許可する。 */ session_cache_limiter('private-no-expire'); } } $objPage = new LC_Page(); $objView = new SC_SiteView(); $objCampaignSess = new SC_CampaignSession(); $objSiteInfo = $objView->objSiteInfo; $arrInfo = $objSiteInfo->data; // ユーザユニークIDの取得と購入状態の正当性をチェック $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess); // カート集計処理 $objPage = sfTotalCart($objPage, $objCartSess, $arrInfo); // 一時受注テーブルの読込 $arrData = sfGetOrderTemp($uniqid); // カート集計を元に最終計算 $arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo); // 代表商品情報 $arrMainProduct = $objPage->arrProductsClass[0]; // 支払い情報を取得 $arrPayment = $objQuery->getall("SELECT module_id, memo01, memo02, memo03, memo04, memo05, memo06, memo07, memo08, memo09, memo10 FROM dtb_payment WHERE payment_id = ? ", array($arrData["payment_id"])); // trans_codeに値があり且つ、正常終了のときはオーダー確認を行う。 if($_GET["result"] == "1"){ // 正常な推移であることを記録しておく $objSiteSess->setRegistFlag(); // GETデータを保存 $arrVal["credit_result"] = $_GET["result"]; $arrVal["memo01"] = PAYMENT_CREDIT_ID; $arrVal["memo03"] = $arrPayment[0]["module_id"]; $sqlval["memo04"] = sfGetXMLValue($arrXML,'RESULT','TRANS_CODE'); // トランザクションコード $arrMemo["trans_code"] = array("name"=>"Epsilonトランザクションコード", "value" => $_GET["trans_code"]); $arrVal["memo02"] = serialize($arrMemo); // 決済送信データ作成 $arrModule['module_id'] = MDL_EPSILON_ID; $arrModule['payment_total'] = $arrPayment[0]["payment_total"]; $arrModule['payment_id'] = PAYMENT_CREDIT_ID; $arrVal["memo05"] = serialize($arrModule); // 受注一時テーブルに更新 sfRegistTempOrder($uniqid, $arrVal); // 完了画面へ if (is_callable(GC_MobileUserAgent) && GC_MobileUserAgent::isMobile()) { header("Location: " . gfAddSessionId(URL_SHOP_COMPLETE)); } else { header("Location: " . URL_SHOP_COMPLETE); } } // データ送信 lfSendCredit($arrData, $arrPayment, $arrMainProduct); //--------------------------------------------------------------------------------------------------------------------------------------------------------- // データ送信処理 function lfSendCredit($arrData, $arrPayment, $arrMainProduct, $again = true){ global $objSiteSess; global $objCampaignSess; // データ送信先CGI $order_url = $arrPayment[0]["memo02"]; // 非会員のときは user_id に not_memberと送る ($arrData["customer_id"] == 0) ? $user_id = "not_member" : $user_id = $arrData["customer_id"]; // 送信データ生成 $item_name = $arrMainProduct["name"] . "×" . $arrMainProduct["quantity"] . "個 (代表)"; $arrSendData = array( 'contract_code' => $arrPayment[0]["memo01"], // 契約コード 'user_id' => $user_id , // ユーザID 'user_name' => $arrData["order_name01"].$arrData["order_name02"], // ユーザ名 'user_mail_add' => $arrData["order_email"], // メールアドレス 'order_number' => $arrData["order_id"], // オーダー番号 'item_code' => $arrMainProduct["product_code"], // 商品コード(代表) 'item_name' => $item_name, // 商品名(代表) 'item_price' => $arrData["payment_total"], // 商品価格(税込み総額) 'st_code' => $arrPayment[0]["memo04"], // 決済区分 'mission_code' => '1', // 課金区分(固定) 'process_code' => '1', // 処理区分(固定) 'xml' => '1', // 応答形式(固定) 'memo1' => "", // 予備01 'memo2' => ECCUBE_PAYMENT . "_" . date("YmdHis"), // 予備02 ); // データ送信 $arrXML = sfPostPaymentData($order_url, $arrSendData); // エラーがあるかチェックする $err_code = sfGetXMLValue($arrXML,'RESULT','ERR_CODE'); if($err_code != "") { $err_detail = sfGetXMLValue($arrXML,'RESULT','ERR_DETAIL'); // 決済区分エラーの場合には VISA,MASTER のみで再送信を試みる if($err_code == "909" and $again){ $arrPayment[0]["memo04"] = "10000-0000-00000"; lfSendCredit($arrData, $arrPayment, $arrMainProduct, false); } sfDispSiteError(FREE_ERROR_MSG, "", true, "購入処理中に以下のエラーが発生しました。


・" . $err_detail . "


この手続きは無効となりました。"); } else { // 正常な推移であることを記録しておく $objSiteSess->setRegistFlag(); // 携帯端末の場合は、セッションID・オーダー番号・戻ってくるURLを保存しておく。 if (is_callable(GC_MobileUserAgent) && GC_MobileUserAgent::isMobile()) { sfMobileSetExtSessionId('order_number', $arrData['order_id'], 'shopping/load_payment_module.php'); sfMobileSetExtSessionId('order_number', $arrData['order_id'], 'shopping/confirm.php'); } $url = sfGetXMLValue($arrXML,'RESULT','REDIRECT'); header("Location: " . $url); } } ?>