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

Revision 4900, 9.2 KB checked in by kakinaka, 20 years ago (diff)

blank

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