source: branches/feature-module-update/data/downloads/module/mdl_epsilon/card.php @ 15078

Revision 15078, 5.6 KB checked in by nanasess, 14 years ago (diff)

r15064 から svn cp
とりあえず暫定コミット.

  • UTF-8 に変更
  • slib.php, glib.php のクラス化
  • LC_Page の抽象化(一部)
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8require_once("../require.php");
9require_once(DATA_PATH . "module/Request.php");
10require_once(MODULE_PATH . "mdl_epsilon/mdl_epsilon.inc");
11
12class LC_Page {
13    function LC_Page() {
14        /** 必ず指定する **/
15        $this->tpl_mainpage = 'mdl_epsilon/card.tpl';           // メインテンプレート
16        /*
17         session_start時のno-cacheヘッダーを抑制することで
18         「戻る」ボタン使用時の有効期限切れ表示を抑制する。
19         private-no-expire:クライアントのキャッシュを許可する。
20        */
21        session_cache_limiter('private-no-expire');     
22    }
23}
24
25$objPage = new LC_Page();
26$objView = new SC_SiteView();
27$objCampaignSess = new SC_CampaignSession();
28$objSiteInfo = $objView->objSiteInfo;
29$arrInfo = $objSiteInfo->data;
30
31// ユーザユニークIDの取得と購入状態の正当性をチェック
32$uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess);
33
34// カート集計処理
35$objPage = sfTotalCart($objPage, $objCartSess, $arrInfo);
36
37// 一時受注テーブルの読込
38$arrData = sfGetOrderTemp($uniqid);
39
40// カート集計を元に最終計算
41$arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo);
42
43// 代表商品情報
44$arrMainProduct = $objPage->arrProductsClass[0];
45
46// 支払い情報を取得
47$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"]));
48
49// trans_codeに値があり且つ、正常終了のときはオーダー確認を行う。
50if($_GET["result"] == "1"){
51   
52    // 正常な推移であることを記録しておく
53    $objSiteSess->setRegistFlag();
54   
55    // GETデータを保存
56    $arrVal["credit_result"] = $_GET["result"];
57    $arrVal["memo01"] = PAYMENT_CREDIT_ID;
58    $arrVal["memo03"] = $arrPayment[0]["module_id"];
59    $sqlval["memo04"] = sfGetXMLValue($arrXML,'RESULT','TRANS_CODE');
60
61    // トランザクションコード
62    $arrMemo["trans_code"] = array("name"=>"Epsilonトランザクションコード", "value" => $_GET["trans_code"]);
63    $arrVal["memo02"] = serialize($arrMemo);
64
65    // 決済送信データ作成
66    $arrModule['module_id'] = MDL_EPSILON_ID;
67    $arrModule['payment_total'] = $arrPayment[0]["payment_total"];
68    $arrModule['payment_id'] = PAYMENT_CREDIT_ID;
69    $arrVal["memo05"] = serialize($arrModule);
70
71    // 受注一時テーブルに更新
72    sfRegistTempOrder($uniqid, $arrVal);
73
74    // 完了画面へ
75    if (is_callable(GC_MobileUserAgent) && GC_MobileUserAgent::isMobile()) {
76        header("Location: " .  gfAddSessionId(URL_SHOP_COMPLETE));
77    } else {
78        header("Location: " .  URL_SHOP_COMPLETE);
79    }
80}
81
82// データ送信
83lfSendCredit($arrData, $arrPayment, $arrMainProduct);
84
85//---------------------------------------------------------------------------------------------------------------------------------------------------------
86
87// データ送信処理
88function lfSendCredit($arrData, $arrPayment, $arrMainProduct, $again = true){
89    global $objSiteSess;
90    global $objCampaignSess;
91   
92    // データ送信先CGI
93    $order_url = $arrPayment[0]["memo02"];
94
95    // 非会員のときは user_id に not_memberと送る
96    ($arrData["customer_id"] == 0) ? $user_id = "not_member" : $user_id = $arrData["customer_id"]; 
97   
98    // 送信データ生成
99    $item_name = $arrMainProduct["name"] . "×" . $arrMainProduct["quantity"] . "個 (代表)";
100    $arrSendData = array(
101        'contract_code' => $arrPayment[0]["memo01"],                        // 契約コード
102        'user_id' => $user_id ,                                             // ユーザID
103        'user_name' => $arrData["order_name01"].$arrData["order_name02"],   // ユーザ名
104        'user_mail_add' => $arrData["order_email"],                         // メールアドレス
105        'order_number' => $arrData["order_id"],                             // オーダー番号
106        'item_code' => $arrMainProduct["product_code"],                     // 商品コード(代表)
107        'item_name' => $item_name,                                          // 商品名(代表)
108        'item_price' => $arrData["payment_total"],                          // 商品価格(税込み総額)
109        'st_code' => $arrPayment[0]["memo04"],                              // 決済区分
110        'mission_code' => '1',                                              // 課金区分(固定)
111        'process_code' => '1',                                              // 処理区分(固定)
112        'xml' => '1',                                                       // 応答形式(固定)
113        'memo1' => "",                                                      // 予備01
114        'memo2' => ECCUBE_PAYMENT . "_" . date("YmdHis"),                   // 予備02
115    );
116
117    // データ送信
118    $arrXML = sfPostPaymentData($order_url, $arrSendData);
119   
120    // エラーがあるかチェックする
121    $err_code = sfGetXMLValue($arrXML,'RESULT','ERR_CODE');
122   
123    if($err_code != "") {
124        $err_detail = sfGetXMLValue($arrXML,'RESULT','ERR_DETAIL');
125       
126        // 決済区分エラーの場合には VISA,MASTER のみで再送信を試みる
127        if($err_code == "909" and $again){
128            $arrPayment[0]["memo04"] = "10000-0000-00000";
129            lfSendCredit($arrData, $arrPayment, $arrMainProduct, false);
130        }
131        sfDispSiteError(FREE_ERROR_MSG, "", true, "購入処理中に以下のエラーが発生しました。<br /><br /><br />・" . $err_detail . "<br /><br /><br />この手続きは無効となりました。");
132    } else {
133        // 正常な推移であることを記録しておく
134        $objSiteSess->setRegistFlag();
135       
136        // 携帯端末の場合は、セッションID・オーダー番号・戻ってくるURLを保存しておく。
137        if (is_callable(GC_MobileUserAgent) && GC_MobileUserAgent::isMobile()) {
138            sfMobileSetExtSessionId('order_number', $arrData['order_id'], 'shopping/load_payment_module.php');
139            sfMobileSetExtSessionId('order_number', $arrData['order_id'], 'shopping/confirm.php');
140        }
141
142        $url = sfGetXMLValue($arrXML,'RESULT','REDIRECT');
143        header("Location: " . $url);
144    }
145}
146
147?>
Note: See TracBrowser for help on using the repository browser.