source: branches/dev/html/mobile/shopping/payment.php @ 11691

Revision 11691, 10.1 KB checked in by uehara, 19 years ago (diff)
  • Property svn:eol-style set to native
Line 
1<?php
2/**
3 *
4 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
5 *
6 * http://www.lockon.co.jp/
7 *
8 */
9
10require_once("../require.php");
11
12class LC_Page {
13    var $arrSession;
14    var $tpl_mode;
15    function LC_Page() {
16        $this->tpl_css = '/css/layout/shopping/pay.css';
17        $this->tpl_mainpage = 'shopping/payment.tpl';
18        $this->tpl_onload = 'fnCheckInputPoint();';
19        $this->tpl_title = "¤ª»ÙʧÊýË¡¤Î»ØÄê";
20        /*
21         session_start»þ¤Îno-cache¥Ø¥Ã¥À¡¼¤òÍÞÀ©¤¹¤ë¤³¤È¤Ç
22         ¡ÖÌá¤ë¡×¥Ü¥¿¥ó»ÈÍÑ»þ¤ÎÍ­¸ú´ü¸ÂÀÚ¤ìɽ¼¨¤òÍÞÀ©¤¹¤ë¡£
23         private-no-expire:¥¯¥é¥¤¥¢¥ó¥È¤Î¥­¥ã¥Ã¥·¥å¤òµö²Ä¤¹¤ë¡£
24        */
25        session_cache_limiter('private-no-expire');     
26    }
27}
28
29$objPage = new LC_Page();
30$objView = new SC_SiteView();
31$objSiteSess = new SC_SiteSession();
32$objCartSess = new SC_CartSession();
33$objCustomer = new SC_Customer();
34$objSiteInfo = $objView->objSiteInfo;
35$arrInfo = $objSiteInfo->data;
36
37// ¥Ñ¥é¥á¡¼¥¿´ÉÍý¥¯¥é¥¹
38$objFormParam = new SC_FormParam();
39// ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½
40lfInitParam();
41// POSTÃͤμèÆÀ
42$objFormParam->setParam($_POST);
43
44// ¥æ¡¼¥¶¥æ¥Ë¡¼¥¯ID¤Î¼èÆÀ¤È¹ØÆþ¾õÂÖ¤ÎÀµÅöÀ­¤ò¥Á¥§¥Ã¥¯
45$uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess);
46// ¥æ¥Ë¡¼¥¯ID¤ò°ú¤­·Ñ¤°
47$objPage->tpl_uniqid = $uniqid;
48
49// ²ñ°÷¥í¥°¥¤¥ó¥Á¥§¥Ã¥¯
50if($objCustomer->isLoginSuccess()) {
51    $objPage->tpl_login = '1';
52    $objPage->tpl_user_point = $objCustomer->getValue('point');
53}
54
55// ¶â³Û¤Î¼èÆÀ (¹ØÆþÅÓÃæ¤ÇÇä¤êÀڤ줿¾ì¹ç¤Ë¤Ï¤³¤Î´Ø¿ôÆâ¤Ë¤Æ¤½¤Î¾¦ÉʤθĿô¤¬£°¤Ë¤Ê¤ë)
56$objPage = sfTotalCart($objPage, $objCartSess, $arrInfo);
57$objPage->arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo);
58
59// ¥«¡¼ÅÔÆâ¤Î¾¦ÉʤÎÇä¤êÀÚ¤ì¥Á¥§¥Ã¥¯
60$objCartSess->chkSoldOut($objCartSess->getCartList());
61
62switch($_POST['mode']) {
63// »Ùʧ¤¤ÊýË¡»ØÄê ¢ª ÇÛãÆü»þ»ØÄê
64case 'deliv_date':
65    // ÆþÎÏÃͤÎÊÑ´¹
66    $objFormParam->convParam();
67    $objPage->arrErr = lfCheckError($objPage->arrData);
68    if (!isset($objPage->arrErr['payment_id'])) {
69        // »Ùʧ¤¤ÊýË¡¤ÎÆþÎÏ¥¨¥é¡¼¤Ê¤·
70        $objPage->tpl_mainpage = 'shopping/deliv_date.tpl';
71        $objPage->tpl_title = "ÇÛãÆü»þ»ØÄê";
72        break;
73    } else {
74        // ¥æ¡¼¥¶¥æ¥Ë¡¼¥¯ID¤Î¼èÆÀ
75        $uniqid = $objSiteSess->getUniqId();
76        // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤«¤é¤Î¾ðÊó¤ò³ÊǼ
77        lfSetOrderTempData($uniqid);
78    }
79    break;
80case 'confirm':
81    // ÆþÎÏÃͤÎÊÑ´¹
82    $objFormParam->convParam();
83    $objPage->arrErr = lfCheckError($objPage->arrData );
84    // ÆþÎÏ¥¨¥é¡¼¤Ê¤·
85    if(count($objPage->arrErr) == 0) {
86        // DB¤Ø¤Î¥Ç¡¼¥¿ÅÐÏ¿
87        lfRegistData($uniqid);
88        // Àµ¾ï¤ËÅÐÏ¿¤µ¤ì¤¿¤³¤È¤òµ­Ï¿¤·¤Æ¤ª¤¯
89        $objSiteSess->setRegistFlag();
90        // ³Îǧ¥Ú¡¼¥¸¤Ø°Üư
91        header("Location: " . gfAddSessionId(URL_SHOP_CONFIRM));
92        exit;
93    }else{
94        // ¥æ¡¼¥¶¥æ¥Ë¡¼¥¯ID¤Î¼èÆÀ
95        $uniqid = $objSiteSess->getUniqId();
96        // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤«¤é¤Î¾ðÊó¤ò³ÊǼ
97        lfSetOrderTempData($uniqid);
98        if (!isset($objPage->arrErr['payment_id'])) {
99            // »Ùʧ¤¤ÊýË¡¤ÎÆþÎÏ¥¨¥é¡¼¤Ê¤·
100            $objPage->tpl_mainpage = 'shopping/deliv_date.tpl';
101            $objPage->tpl_title = "ÇÛãÆü»þ»ØÄê";
102        }
103    }
104    break;
105// Á°¤Î¥Ú¡¼¥¸¤ËÌá¤ë
106case 'return':
107    // Èó²ñ°÷¤Î¾ì¹ç
108    // Àµ¾ï¤Ê¿ä°Ü¤Ç¤¢¤ë¤³¤È¤òµ­Ï¿¤·¤Æ¤ª¤¯
109    $objSiteSess->setRegistFlag();
110    header("Location: " . gfAddSessionId(URL_SHOP_TOP));
111    exit;
112    break;
113// »Ùʧ¤¤ÊýË¡¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç
114case 'payment':
115    // ¤³¤³¤Îbreak¤Ï¡¢°ÕÌ£¤¬¤¢¤ë¤Î¤Ç³°¤µ¤Ê¤¤¤Ç²¼¤µ¤¤¡£
116    break;
117default:
118    // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤«¤é¤Î¾ðÊó¤ò³ÊǼ
119    lfSetOrderTempData($uniqid);
120    break;
121}
122
123// ŹÊÞ¾ðÊó¤Î¼èÆÀ
124$arrInfo = $objSiteInfo->data;
125// ¹ØÆþ¶â³Û¤Î¼èÆÀÆÀ
126$total_pretax = $objCartSess->getAllProductsTotal($arrInfo);
127// »Ùʧ¤¤ÊýË¡¤Î¼èÆÀ
128$objPage->arrPayment = lfGetPayment($total_pretax);
129// ÇÛÁ÷»þ´Ö¤Î¼èÆÀ
130$arrRet = sfGetDelivTime($objFormParam->getValue('payment_id'));
131$objPage->arrDelivTime = sfArrKeyValue($arrRet, 'time_id', 'deliv_time');
132$objPage->objCustomer = $objCustomer;
133//¡¡ÇÛÁ÷Æü°ìÍ÷¤Î¼èÆÀ
134$objPage->arrDelivDate = lfGetDelivDate();
135
136$objPage->arrForm = $objFormParam->getFormParamList();
137
138$objView->assignobj($objPage);
139$objView->display(SITE_FRAME);
140//--------------------------------------------------------------------------------------------------------------------------
141/* ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½ */
142function lfInitParam() {
143    global $objFormParam;
144    $objFormParam->addParam("¤ª»Ùʧ¤¤ÊýË¡", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
145    $objFormParam->addParam("¥Ý¥¤¥ó¥È", "use_point", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START"));
146    $objFormParam->addParam("ÇÛã»þ´Ö", "deliv_time_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
147    $objFormParam->addParam("¤´¼ÁÌä", "message", LTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
148    $objFormParam->addParam("¥Ý¥¤¥ó¥È¤ò»ÈÍѤ¹¤ë", "point_check", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2');
149    $objFormParam->addParam("ÇÛãÆü", "deliv_date", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
150}
151
152function lfGetPayment($total_pretax) {
153    $objQuery = new SC_Query();
154    $objQuery->setorder("rank DESC");
155    //ºï½ü¤µ¤ì¤Æ¤¤¤Ê¤¤»ÙʧÊýË¡¤ò¼èÆÀ
156    $arrRet = $objQuery->select("payment_id, payment_method, rule, upper_rule, note, payment_image", "dtb_payment", "del_flg = 0 AND deliv_id IN (SELECT deliv_id FROM dtb_deliv WHERE del_flg = 0) ");
157    //ÍøÍѾò·ï¤«¤é»Ùʧ²ÄǽÊýË¡¤òȽÄê
158    foreach($arrRet as $data) {
159        //²¼¸Â¤È¾å¸Â¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë
160        if($data['rule'] > 0 && $data['upper_rule'] > 0) {
161            if($data['rule'] <= $total_pretax && $data['upper_rule'] >= $total_pretax) {
162                $arrPayment[] = $data;
163            }
164        //²¼¸Â¤Î¤ßÀßÄꤵ¤ì¤Æ¤¤¤ë
165        } elseif($data['rule'] > 0) {   
166            if($data['rule'] <= $total_pretax) {
167                $arrPayment[] = $data;
168            }
169        //¾å¸Â¤Î¤ßÀßÄꤵ¤ì¤Æ¤¤¤ë
170        } elseif($data['upper_rule'] > 0) {
171            if($data['upper_rule'] >= $total_pretax) {
172                $arrPayment[] = $data;
173            }
174        //ÀßÄê¤Ê¤·
175        } else {
176            $arrPayment[] = $data;
177        }   
178    }
179    return $arrPayment;
180}
181
182/* ÆþÎÏÆâÍÆ¤Î¥Á¥§¥Ã¥¯ */
183function lfCheckError($arrData) {
184    global $objFormParam;
185    global $objCustomer;
186    // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£
187    $arrRet =  $objFormParam->getHashArray();
188    $objErr = new SC_CheckError($arrRet);
189    $objErr->arrErr = $objFormParam->checkError();
190   
191    if($_POST['point_check'] == '1') {
192        $objErr->doFunc(array("¥Ý¥¤¥ó¥È¤ò»ÈÍѤ¹¤ë", "point_check"), array("EXIST_CHECK"));
193        $objErr->doFunc(array("¥Ý¥¤¥ó¥È", "use_point"), array("EXIST_CHECK"));
194        $max_point = $objCustomer->getValue('point');
195        if($max_point == "") {
196            $max_point = 0;
197        }
198        if($arrRet['use_point'] > $max_point) {
199            $objErr->arrErr['use_point'] = "¢¨ ¤´ÍøÍѥݥ¤¥ó¥È¤¬½ê»ý¥Ý¥¤¥ó¥È¤òͤ¨¤Æ¤¤¤Þ¤¹¡£<br>";
200        }
201        if(($arrRet['use_point'] * POINT_VALUE) > $arrData['subtotal']) {
202            $objErr->arrErr['use_point'] = "¢¨ ¤´ÍøÍѥݥ¤¥ó¥È¤¬¤´¹ØÆþ¶â³Û¤òͤ¨¤Æ¤¤¤Þ¤¹¡£<br>";
203        }
204    }
205    return $objErr->arrErr;
206}
207
208/* »Ùʧ¤¤Êýˡʸ»úÎó¤Î¼èÆÀ */
209function lfGetPaymentInfo($payment_id) {
210    $objQuery = new SC_Query();
211    $where = "payment_id = ?";
212    $arrRet = $objQuery->select("payment_method, charge", "dtb_payment", $where, array($payment_id));
213    return (array($arrRet[0]['payment_method'], $arrRet[0]['charge']));
214}
215
216/* ÇÛÁ÷»þ´Öʸ»úÎó¤Î¼èÆÀ */
217function lfGetDelivTimeInfo($time_id) {
218    $objQuery = new SC_Query();
219    $where = "time_id = ?";
220    $arrRet = $objQuery->select("deliv_id, deliv_time", "dtb_delivtime", $where, array($time_id));
221    return (array($arrRet[0]['deliv_id'], $arrRet[0]['deliv_time']));
222}
223
224/* DB¤Ø¥Ç¡¼¥¿¤ÎÅÐÏ¿ */
225function lfRegistData($uniqid) {
226    global $objFormParam;
227    $arrRet = $objFormParam->getHashArray();
228    $sqlval = $objFormParam->getDbArray();
229    // ÅÐÏ¿¥Ç¡¼¥¿¤ÎºîÀ®
230    $sqlval['order_temp_id'] = $uniqid;
231    $sqlval['update_date'] = 'Now()';
232   
233    if($sqlval['payment_id'] != "") {
234        list($sqlval['payment_method'], $sqlval['charge']) = lfGetPaymentInfo($sqlval['payment_id']);
235    } else {
236        $sqlval['payment_id'] = '0';
237        $sqlval['payment_method'] = "";
238    }
239   
240    if($sqlval['deliv_time_id'] != "") {
241        list($sqlval['deliv_id'], $sqlval['deliv_time']) = lfGetDelivTimeInfo($sqlval['deliv_time_id']);
242    } else {
243        $sqlval['deliv_time_id'] = '0';
244        $sqlval['deliv_id'] = '0';
245        $sqlval['deliv_time'] = "";
246    }
247   
248    // »ÈÍѥݥ¤¥ó¥È¤ÎÀßÄê
249    if($sqlval['point_check'] != '1') {
250        $sqlval['use_point'] = 0;
251    }
252   
253    sfRegistTempOrder($uniqid, $sqlval);
254}
255
256/* ÇÛãÆü°ìÍ÷¤ò¼èÆÀ¤¹¤ë */
257function lfGetDelivDate() {
258    $objCartSess = new SC_CartSession();
259    $objQuery = new SC_Query();
260    // ¾¦ÉÊID¤Î¼èÆÀ
261    $max = $objCartSess->getMax();
262    for($i = 1; $i <= $max; $i++) {
263        if($_SESSION[$objCartSess->key][$i]['id'][0] != "") {
264            $arrID['product_id'][$i] = $_SESSION[$objCartSess->key][$i]['id'][0];
265        }
266    }
267    if(count($arrID['product_id']) > 0) {
268        $id = implode(",", $arrID['product_id']);
269        //¾¦Éʤ«¤éȯÁ÷Ìܰ¤μèÆÀ
270        $deliv_date = $objQuery->get("dtb_products", "MAX(deliv_date_id)", "product_id IN (".$id.")");
271        //ȯÁ÷ÌܰÂ
272        switch($deliv_date) {
273        //¨ÆüȯÁ÷
274        case '1':
275            $start_day = 1;
276            break;
277        //1-2Æü¸å
278        case '2':
279            $start_day = 3;
280            break;
281        //3-4Æü¸å
282        case '3':
283            $start_day = 5;
284            break;
285        //1½µ´Ö°ÊÆâ
286        case '4':
287            $start_day = 8;
288            break;
289        //2½µ´Ö°ÊÆâ
290        case '5':
291            $start_day = 15;
292            break;
293        //3½µ´Ö°ÊÆâ
294        case '6':
295            $start_day = 22;
296            break;
297        //1¥ö·î°ÊÆâ
298        case '7':
299            $start_day = 32;
300            break;
301        //2¥ö·î°Ê¹ß
302        case '8':
303            $start_day = 62;           
304            break;
305        //¤ª¼è¤ê´ó¤»(¾¦ÉÊÆþ²Ù¸å)
306        case '9':
307            $start_day = "";
308            break;
309        default:
310            //¤ªÆÏ¤±Æü¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç
311            $start_day = "";
312            break;
313        }
314        //ÇÛã²ÄǽÆü¤Î¥¹¥¿¡¼¥ÈÃͤ«¤é¡¢ÇÛãÆü¤ÎÇÛÎó¤ò¼èÆÀ¤¹¤ë
315        $arrDelivDate = lfGetDateArray($start_day, DELIV_DATE_END_MAX);
316    }
317    return $arrDelivDate;
318}
319
320//ÇÛã²ÄǽÆü¤Î¥¹¥¿¡¼¥ÈÃͤ«¤é¡¢ÇÛãÆü¤ÎÇÛÎó¤ò¼èÆÀ¤¹¤ë
321function lfGetDateArray($start_day, $end_day) {
322    global $arrWDAY;
323    //ÇÛã²ÄǽÆü¤Î¥¹¥¿¡¼¥ÈÃͤ¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ì¤Ð
324    if($start_day >= 1) {
325        $now_time = time();
326        $max_day = $start_day + $end_day;
327        // ½¸·×
328        for ($i = $start_day; $i < $max_day; $i++) {
329            // ´ðËÜ»þ´Ö¤«¤éÆü¿ô¤òÄɲ䷤Ƥ¤¤¯
330            $tmp_time = $now_time + ($i * 24 * 3600);
331            list($y, $m, $d, $w) = split(" ", date("y m d w", $tmp_time)); 
332            $val = sprintf("%02d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]);
333            $arrDate[$val] = $val;
334        }
335    } else {
336        $arrDate = false;
337    }
338    return $arrDate;
339}
340
341//°ì»þ¼õÃí¥Æ¡¼¥Ö¥ë¤«¤é¤Î¾ðÊó¤ò³ÊǼ¤¹¤ë
342function lfSetOrderTempData($uniqid) {
343    global $objQuery;
344    global $objFormParam;
345   
346    $objQuery = new SC_Query();
347    $col = "payment_id, use_point, deliv_time_id, message, point_check, deliv_date";
348    $from = "dtb_order_temp";
349    $where = "order_temp_id = ?";
350    $arrRet = $objQuery->select($col, $from, $where, array($uniqid));
351    // DBÃͤμèÆÀ
352    $objFormParam->setParam($arrRet[0]);
353    return $objFormParam;
354}
355
356
357?>
Note: See TracBrowser for help on using the repository browser.