source: temp/trunk/html/shopping/payment.php @ 6659

Revision 6659, 9.3 KB checked in by kakinaka, 20 years ago (diff)

* empty log message *

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