source: branches/dev/html/mobile/shopping/nonmember_payment.php @ 12688

Revision 12688, 11.0 KB checked in by nakanishi, 17 years ago (diff)

非会員購入機能開発用ファイル

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