source: branches/feature-module-update/data/downloads/module/mdl_epsilon/convenience.php @ 16582

Revision 16582, 11.4 KB checked in by nanasess, 17 years ago (diff)

ライセンス表記変更

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * This file is part of EC-CUBE
4 *
5 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
6 *
7 * http://www.lockon.co.jp/
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 */
23
24require_once("../require.php");
25require_once(DATA_PATH . "module/Request.php");
26require_once(MODULE_PATH . "mdl_epsilon/mdl_epsilon.inc");
27
28class LC_Page {
29    function LC_Page() {
30        if (is_callable(SC_MobileUserAgent) && SC_MobileUserAgent::isMobile()) {
31            $this->tpl_mainpage = MODULE_PATH . "mdl_epsilon/convenience_mobile.tpl";
32        } else {
33            $this->tpl_mainpage = MODULE_PATH . "mdl_epsilon/convenience.tpl";
34        }
35        $this->tpl_title = "コンビニ決済";
36        /*
37         session_start時のno-cacheヘッダーを抑制することで
38         「戻る」ボタン使用時の有効期限切れ表示を抑制する。
39         private-no-expire:クライアントのキャッシュを許可する。
40        */
41        session_cache_limiter('private-no-expire');     
42    }
43}
44
45global $arrConvenience;
46global $arrConveni_message;
47
48$objPage = new LC_Page();
49$objView = new SC_SiteView();
50$objCampaignSess = new SC_CampaignSession();
51$objSiteInfo = $objView->objSiteInfo;
52$arrInfo = $objSiteInfo->data;
53
54// パラメータ管理クラス
55$objFormParam = new SC_FormParam();
56// パラメータ情報の初期化
57lfInitParam();
58// POST値の取得
59$objFormParam->setParam($_POST);
60
61// ユーザユニークIDの取得と購入状態の正当性をチェック
62$uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess);
63
64// カート集計処理
65$objPage = sfTotalCart($objPage, $objCartSess, $arrInfo);
66
67// 一時受注テーブルの読込
68$arrData = sfGetOrderTemp($uniqid);
69
70// カート集計を元に最終計算
71$arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo);
72
73// 代表商品情報
74$arrMainProduct = $objPage->arrProductsClass[0];
75
76// 支払い情報を取得
77$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"]));
78
79// データ送信先CGI
80$order_url = $arrPayment[0]["memo02"];
81
82switch($_POST["mode"]){
83    //戻る
84    case 'return':
85        // 正常に登録されたことを記録しておく
86        $objSiteSess->setRegistFlag();
87        // 確認ページへ移動
88        if (is_callable(SC_MobileUserAgent) && SC_MobileUserAgent::isMobile()) {
89            header("Location: " . gfAddSessionId(URL_SHOP_CONFIRM));
90        } else {
91            header("Location: " . URL_SHOP_CONFIRM);
92        }
93        exit;
94        break;
95
96    case "send":
97        $arrErr = array();
98        $arrErr = $objFormParam->checkError();
99        $objPage->arrErr = $arrErr;
100       
101        // 非会員のときは user_id に not_memberと送る
102        ($arrData["customer_id"] == 0) ? $user_id = "not_member" : $user_id = $arrData["customer_id"];
103       
104        if(count($arrErr) <= 0){
105            // 送信データ生成
106            $item_name = $arrMainProduct["name"] . "×" . $arrMainProduct["quantity"] . "個 (代表)";
107            $arrSendData = array(
108                'contract_code' => $arrPayment[0]["memo01"],                        // 契約コード
109                'user_id' => $user_id ,                                             // ユーザID
110                'user_name' => $arrData["order_name01"].$arrData["order_name02"],   // ユーザ名
111                'user_mail_add' => $arrData["order_email"],                         // メールアドレス
112                'order_number' => $arrData["order_id"],                             // オーダー番号
113                'item_code' => $arrMainProduct["product_code"],                     // 商品コード(代表)
114                'item_name' => $item_name,                                          // 商品名(代表)
115                'item_price' => $arrData["payment_total"],                          // 商品価格(税込み総額)
116                'st_code' => $arrPayment[0]["memo04"],                              // 決済区分
117                'mission_code' => '1',                                              // 課金区分(固定)
118                'process_code' => '1',                                              // 処理区分(固定)
119                'xml' => '1',                                                       // 応答形式(固定)
120                'conveni_code' => $_POST["convenience"],                            // コンビニコード
121                'user_tel' => $_POST["order_tel01"].$_POST["order_tel02"].$_POST["order_tel03"],    // 電話番号
122                'user_name_kana' => $_POST["order_kana01"].$_POST["order_kana02"],                  // 氏名(カナ)
123                'haraikomi_mail' => 0,                                              // 払込メール(送信しない)
124                'memo1' => "",                                                      // 予備01
125                'memo2' => ECCUBE_PAYMENT . "_" . date("YmdHis"),                   // 予備02
126            );
127           
128            // データ送信
129            $arrXML = sfPostPaymentData($order_url, $arrSendData);
130           
131            // エラーがあるかチェックする
132            $err_code = sfGetXMLValue($arrXML,'RESULT','ERR_CODE');
133           
134            if($err_code != "") {
135                $err_detail = sfGetXMLValue($arrXML,'RESULT','ERR_DETAIL');
136                sfDispSiteError(FREE_ERROR_MSG, "", false, "購入処理中に以下のエラーが発生しました。<br /><br /><br />・" . $err_detail);
137            } else {
138                // 正常な推移であることを記録しておく
139                $objSiteSess->setRegistFlag();
140
141                $conveni_code = sfGetXMLValue($arrXML,'RESULT','CONVENI_CODE'); // コンビニコード
142                $conveni_type = lfSetConvMSG("コンビニの種類",$arrConvenience[$conveni_code]); // コンビニの種類
143                $receipt_no   = lfSetConvMSG("払込票番号",sfGetXMLValue($arrXML,'RESULT','RECEIPT_NO')); // 払込票番号
144                $payment_url = lfSetConvMSG("払込票URL",sfGetXMLValue($arrXML,'RESULT','HARAIKOMI_URL'));  // 払込票URL
145                $company_code = lfSetConvMSG("企業コード",sfGetXMLValue($arrXML,'RESULT','KIGYOU_CODE'));    // 企業コード
146                $order_no = lfSetConvMSG("受付番号",sfGetXMLValue($arrXML,'RESULT','ORDER_NUMBER'));        // 受付番号
147                $tel = lfSetConvMSG("電話番号",$_POST["order_tel01"]."-".$_POST["order_tel02"]."-".$_POST["order_tel03"]);  // 電話番号
148                $payment_limit = lfSetConvMSG("支払期日",sfGetXMLValue($arrXML,'RESULT','CONVENI_LIMIT'));  // 支払期日
149                $trans_code =  sfGetXMLValue($arrXML,'RESULT','TRANS_CODE');    // トランザクションコード
150               
151                //コンビニの種類
152                switch($conveni_code) {
153                //セブンイレブン
154                case '11':
155                    $arrRet['cv_type'] = $conveni_type;         //コンビニの種類
156                    $arrRet['cv_payment_url'] = $payment_url;   //払込票URL(PC)
157                    $arrRet['cv_receipt_no'] = $receipt_no;     //払込票番号
158                    $arrRet['br1'] = lfSetConvMSG("","\n\n");
159                    $arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
160                    break;
161                //ファミリーマート
162                case '21':
163                    $arrRet['cv_type'] = $conveni_type;         //コンビニの種類
164                    $arrRet['cv_company_code'] = $company_code; //企業コード
165                    $arrRet['cv_order_no'] = $receipt_no;       //受付番号
166                    $arrRet['br1'] = lfSetConvMSG("","\n\n");
167                    $arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
168                    break;
169                //ローソン
170                case '31':
171                    $arrRet['cv_type'] = $conveni_type;         //コンビニの種類
172                    $arrRet['cv_receipt_no'] = $receipt_no;     //払込票番号
173                    $arrRet['cv_tel'] = $tel;                   //電話番号
174                    $arrRet['br1'] = lfSetConvMSG("","\n\n");
175                    $arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
176                    break;
177                //セイコーマート
178                case '32':
179                    $arrRet['cv_type'] =$conveni_type;          //コンビニの種類
180                    $arrRet['cv_receipt_no'] = $receipt_no;     //払込票番号
181                    $arrRet['cv_tel'] = $tel;                   //電話番号
182                    $arrRet['br1'] = lfSetConvMSG("","\n\n");
183                    $arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
184                    break;
185                //ミニストップ
186                case '33':
187                    $arrRet['cv_type'] = $conveni_type;         //コンビニの種類
188                    $arrRet['cv_payment_url'] = $payment_url;   //払込票URL
189                    $arrRet['br1'] = lfSetConvMSG("","\n\n");
190                    $arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
191                    break;
192                //デイリーヤマザキ
193                case '34':
194                    $arrRet['cv_type'] = $conveni_type;         //コンビニの種類
195                    $arrRet['cv_payment_url'] = $payment_url;   //払込票URL
196                    $arrRet['br1'] = lfSetConvMSG("","\n\n");
197                    $arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
198                    break;
199                }
200
201                //支払期限
202                $arrRet['br2'] = lfSetConvMSG("","\n\n");
203                $arrRet['cv_payment_limit'] = $payment_limit;
204                $arrRet['br3'] = lfSetConvMSG("","\n\n");
205
206                // タイトル
207                $arrRet['title'] = lfSetConvMSG("コンビニ決済", true);
208
209                // 決済送信データ作成
210                $arrModule['module_id'] = MDL_EPSILON_ID;
211                $arrModule['payment_total'] = $arrData["payment_total"];
212                $arrModule['payment_id'] = PAYMENT_CONVENIENCE_ID;
213               
214                // ステータスは未入金にする
215                $sqlval['status'] = 2;
216
217                //コンビニ決済情報を格納
218                $sqlval['conveni_data'] = serialize($arrRet);
219                $sqlval['memo01'] = PAYMENT_CONVENIENCE_ID;
220                $sqlval['memo02'] = serialize($arrRet);
221                $sqlval["memo03"] = $arrPayment[0]["module_id"];
222                $sqlval["memo04"] = $trans_code;
223                $sqlval['memo05'] = serialize($arrModule);
224
225                // 受注一時テーブルに更新
226                sfRegistTempOrder($uniqid, $sqlval);
227
228                if (is_callable(SC_MobileUserAgent) && SC_MobileUserAgent::isMobile()) {
229                    header("Location: " . gfAddSessionId(URL_SHOP_COMPLETE));
230                } else {
231                    header("Location: " . URL_SHOP_COMPLETE);
232                }
233            }
234        }
235        break;
236       
237    default:
238        $objFormParam->setParam($arrData);
239        break;
240}
241
242// 利用可能コンビニ
243$objFormParam->setValue("convenience", $arrPayment[0]["memo05"]);
244$objFormParam->splitParamCheckBoxes("convenience");
245$arrUseConv = $objFormParam->getValue("convenience");
246foreach($arrUseConv as $key => $val){
247    $arrConv[$val] = $arrConvenience[$val];
248}
249
250// 購入金額が30万より大きければセブンイレブンは利用不可
251if($arrData["payment_total"] > SEVEN_CHARGE_MAX){
252    unset($arrConv[11]);
253}
254
255$objPage->arrConv = $arrConv;
256
257$objPage->arrForm =$objFormParam->getHashArray();
258
259$objView->assignobj($objPage);
260// フレームを選択(キャンペーンページから遷移なら変更)
261$objCampaignSess->pageView($objView);
262
263//---------------------------------------------------------------------------------------------------------------------------------------------------------
264//パラメータの初期化
265function lfInitParam() {
266    global $objFormParam;
267    $objFormParam->addParam("コンビニの種類", "convenience", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
268    $objFormParam->addParam("お名前(セイ)", "order_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
269    $objFormParam->addParam("お名前(メイ)", "order_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
270    $objFormParam->addParam("お電話番号1", "order_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
271    $objFormParam->addParam("お電話番号2", "order_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
272    $objFormParam->addParam("お電話番号3", "order_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
273}
274
275function lfSetConvMSG($name, $value){
276    return array("name" => $name, "value" => $value);
277}
278
279?>
Note: See TracBrowser for help on using the repository browser.