source: branches/feature-module-gmo-pg/data/downloads/module/mdl_gmo-pg/gmo-pg_credit.php @ 16179

Revision 16179, 10.2 KB checked in by naka, 14 years ago (diff)
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7require_once(MODULE_PATH . "mdl_gmo-pg/mdl_gmo-pg.inc");
8
9/*
10
11»ÙʧÊýË¡¤òɽ¤¹¥³¡¼¥É
12
131¡§ °ì³çʧ¤¤
142¡§ ʬ³äʧ¤¤
153¡§ ¥Ü¡¼¥Ê¥¹°ì³çʧ¤¤
164¡§ ¥Ü¡¼¥Ê¥¹Ê¬³äʧ¤¤
175¡§ ¥ê¥Üʧ¤¤
18
19 */
20
21$arrPayMethod = array(
22    '1-0' => "°ì³çʧ¤¤",
23    '2-3' => "ʬ³ä3²óʧ¤¤",
24    '2-6' => "ʬ³ä6²óʧ¤¤",
25    '2-10'=> "ʬ³ä10²óʧ¤¤",
26    '2-15'=> "ʬ³ä15²óʧ¤¤",
27    '2-20'=> "ʬ³ä20²óʧ¤¤",
28    '5-0' => "¥ê¥Üʧ¤¤"
29);
30
31class LC_Page {
32    function LC_Page() {
33        /** ɬ¤º»ØÄꤹ¤ë **/
34        $this->tpl_css = '/css/layout/shopping/card.css';   // ¥á¥¤¥óCSS¥Ñ¥¹
35        if (GC_MobileUserAgent::isMobile()) {
36            $this->tpl_mainpage = MODULE_PATH . "mdl_gmo-pg/gmo-pg_credit_mobile.tpl";
37        } else {
38            $this->tpl_mainpage = MODULE_PATH . "mdl_gmo-pg/gmo-pg_credit.tpl";
39        }
40        global $arrPayMethod;
41        $this->arrPayMethod = $arrPayMethod;
42        /*
43         session_start»þ¤Îno-cache¥Ø¥Ã¥À¡¼¤òÍÞÀ©¤¹¤ë¤³¤È¤Ç
44         ¡ÖÌá¤ë¡×¥Ü¥¿¥ó»ÈÍÑ»þ¤ÎÍ­¸ú´ü¸ÂÀÚ¤ìɽ¼¨¤òÍÞÀ©¤¹¤ë¡£
45         private-no-expire:¥¯¥é¥¤¥¢¥ó¥È¤Î¥­¥ã¥Ã¥·¥å¤òµö²Ä¤¹¤ë¡£
46        */
47        session_cache_limiter('private-no-expire');     
48    }
49}
50
51$objPage = new LC_Page();
52$objView = (GC_MobileUserAgent::isMobile()) ? new SC_MobileView() : new SC_SiteView();
53$objSiteSess = new SC_SiteSession();
54$objCartSess = new SC_CartSession();
55$objSiteInfo = $objView->objSiteInfo;
56$arrInfo = $objSiteInfo->data;
57
58// ¥Ñ¥é¥á¡¼¥¿´ÉÍý¥¯¥é¥¹
59$objFormParam = new SC_FormParam();
60// ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½
61lfInitParam();
62// POSTÃͤμèÆÀ
63$objFormParam->setParam($_POST);
64
65// ¥¢¥¯¥»¥¹¤ÎÀµÅöÀ­¤ÎȽÄê
66$uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess);
67
68switch($_POST['mode']) {
69// ÅÐÏ¿
70case 'regist':
71    // ÆþÎÏÃͤÎÊÑ´¹
72    $objFormParam->convParam();
73    $objPage->arrErr = lfCheckError($arrRet);
74
75    // ÆþÎÏ¥¨¥é¡¼¤Ê¤·¤Î¾ì¹ç
76    if(count($objPage->arrErr) == 0) {
77        // ¥¨¥é¡¼¥Õ¥é¥°
78        $err_flg = false;
79       
80        // ¥«¡¼¥È½¸·×½èÍý
81        $objPage = sfTotalCart($objPage, $objCartSess, $arrInfo);
82        // °ì»þ¼õÃí¥Æ¡¼¥Ö¥ë¤ÎÆɹþ
83        $arrData = sfGetOrderTemp($uniqid);
84        // ¥«¡¼¥È½¸·×¤ò¸µ¤ËºÇ½ª·×»»
85        $arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo);
86        // ¥«¡¼¥É¤Îǧ¾Ú¤ò¹Ô¤¦
87        $arrVal = $objFormParam->getHashArray();
88       
89                // ÄÌ¿®¥¨¥é¡¼¤ÎȽÄê
90        $access_err = false;
91        // ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸
92        $credit_err = false;
93        $gmo_err_msg = "";
94       
95        // ¥¢¥¯¥»¥¹ID¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç
96        if($_SESSION['GMO']['ACCESS_ID'] == "") {
97            // ŹÊÞ¾ðÊó¤ÎÁ÷¿®
98            $arrEntryRet = lfSendGMOEntry($arrData['order_id'], $arrData['payment_total']);
99            if($arrEntryRet == NULL) {
100                $access_err = true;
101            }
102           
103            // ŹÊÞ¾ðÊ󥨥顼¤ÎȽÄê
104            if($arrEntryRet['ERR_CODE'] == '0' && $arrEntryRet['ERR_INFO'] == 'OK') {
105                $_SESSION['GMO']['ACCESS_ID'] = $arrEntryRet['ACCESS_ID'];
106                $_SESSION['GMO']['ACCESS_PASS'] = $arrEntryRet['ACCESS_PASS'];
107            } else {
108                $_SESSION['GMO']['ACCESS_ID'] = "";
109                $_SESSION['GMO']['ACCESS_PASS'] = "";               
110                $credit_err = true;
111                $detail_code01 = substr($arrEntryRet['ERR_INFO'], 0, 5);
112                $detail_code02 = substr($arrEntryRet['ERR_INFO'], 5, 4);
113                $gmo_err_msg = $detail_code01 . "-" . $detail_code02;
114            }
115        }
116       
117        // ¥¨¥é¡¼¤Ê¤·¤Î¾ì¹ç
118        if(!$access_err && !$credit_err) {
119            // ŹÊÞ¾ðÊóÁ÷¿®·ë²Ì
120            $sqlval['memo04'] = $arrEntryRet['ERR_CODE'];
121            $sqlval['memo05'] = $arrEntryRet['ERR_INFO'];
122           
123            // ŹÊÞ¾ðÊ󥨥顼¤ÎȽÄê
124            if($_SESSION['GMO']['ACCESS_ID'] != "" && $_SESSION['GMO']['ACCESS_PASS'] != "" ) {
125                // ·èºÑ¾ðÊó¤ÎÁ÷¿®
126                $arrExecRet = lfSendGMOExec($_SESSION['GMO']['ACCESS_ID'], $_SESSION['GMO']['ACCESS_PASS'], $arrData['order_id'], $arrVal['card_no01'], $arrVal['card_no02'], $arrVal['card_no03'], $arrVal['card_no04'], $arrVal['card_month'], $arrVal['card_year'], $arrVal['paymethod']);
127                if($arrExecRet == NULL) {
128                    $access_err = true;
129                }
130            }
131        }
132       
133        // ¥¨¥é¡¼¤Ê¤·¤Î¾ì¹ç
134        if(!$access_err && !$credit_err) {
135            // ÄɲþðÊó¤Ï¤Ê¤¤¤¿¤á¥À¥ß¡¼¥Ç¡¼¥¿¤ò³ÊǼ
136            $sqlval['memo02'] = serialize(array());
137                   
138            // ±þÅúÆâÍƤε­Ï¿
139            $sqlval['memo03'] = $arrVal['card_name01'] . " " . $arrVal['card_name02'];
140   
141            // ·èºÑ¾ðÊóÁ÷¿®·ë²Ì
142            $sqlval['memo06'] = $arrExecRet['ErrType'];
143            $sqlval['memo07'] = $arrExecRet['ErrInfo'];
144           
145            $objQuery = new SC_Query();
146            $objQuery->update("dtb_order_temp", $sqlval, "order_temp_id = ?", array($uniqid));
147       
148            // Í¿¿®½èÍýÀ®¸ù¤Î¾ì¹ç
149            if($arrExecRet['Html'] == "Receipt" && $arrExecRet['ErrType'] == "" && $arrExecRet['ErrInfo'] == "") {
150                // Àµ¾ï¤ËÅÐÏ¿¤µ¤ì¤¿¤³¤È¤òµ­Ï¿¤·¤Æ¤ª¤¯
151                $objSiteSess->setRegistFlag();
152                // ¥¢¥¯¥»¥¹ID¤ò¥¯¥ê¥¢¤¹¤ë¡£
153                $_SESSION['GMO']['ACCESS_ID'] = "";
154                $_SESSION['GMO']['ACCESS_PASS'] = "";   
155                // ½èÍý´°Î»¥Ú¡¼¥¸¤Ø
156                if (GC_MobileUserAgent::isMobile()) {
157                    header("Location: " . gfAddSessionId(URL_SHOP_COMPLETE));
158                } else {
159                    header("Location: " . URL_SHOP_COMPLETE);
160                }
161            } else {
162                $credit_err = true;
163                $detail_code01 = substr($arrExecRet['ErrInfo'], 0, 5);
164                $detail_code02 = substr($arrExecRet['ErrInfo'], 5, 4);
165                $gmo_err_msg = $detail_code01 . "-" . $detail_code02;
166            }
167        }
168       
169        if($access_err || $credit_err) {
170            if($access_err) {
171                $objPage->tpl_error = "¢¨ ¥¯¥ì¥¸¥Ã¥È¾µÇ§¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡§ÄÌ¿®¥¨¥é¡¼";               
172            } else {
173                if($gmo_err_msg != "") {
174                    $objPage->tpl_error = "¢¨ ¥¯¥ì¥¸¥Ã¥È¾µÇ§¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡§".$gmo_err_msg;             
175                } else {
176                    $objPage->tpl_error = "¢¨ ¥¯¥ì¥¸¥Ã¥È¾µÇ§¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡§ÉÔÌÀ¤Ê¥¨¥é¡¼";                             
177                }
178            }
179        }
180    }
181    break;
182// Á°¤Î¥Ú¡¼¥¸¤ËÌá¤ë
183case 'return':
184    // Àµ¾ï¤Ê¿ä°Ü¤Ç¤¢¤ë¤³¤È¤òµ­Ï¿¤·¤Æ¤ª¤¯
185    $objSiteSess->setRegistFlag();
186    header("Location: " . URL_SHOP_CONFIRM);
187    exit;
188    break;
189}
190
191$objDate = new SC_Date();
192$objDate->setStartYear(RELEASE_YEAR);
193$objDate->setEndYear(RELEASE_YEAR + CREDIT_ADD_YEAR);
194$objPage->arrYear = $objDate->getZeroYear();
195$objPage->arrMonth = $objDate->getZeroMonth();
196
197$objPage->arrForm = $objFormParam->getFormParamList();
198
199// ¶¦Ä̤Îɽ¼¨½àÈ÷
200$objPage = sfGmoDisp($objPage, $payment_id);
201
202$objView->assignobj($objPage);
203$objView->display(SITE_FRAME);
204//-----------------------------------------------------------------------------------------------------------------------------------
205/* ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½ */
206function lfInitParam() {
207    global $objFormParam;
208    $objFormParam->addParam("¥«¡¼¥ÉÈÖ¹æ1", "card_no01", CREDIT_NO_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
209    $objFormParam->addParam("¥«¡¼¥ÉÈÖ¹æ2", "card_no02", CREDIT_NO_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
210    $objFormParam->addParam("¥«¡¼¥ÉÈÖ¹æ3", "card_no03", CREDIT_NO_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
211    $objFormParam->addParam("¥«¡¼¥ÉÈÖ¹æ4", "card_no04", CREDIT_NO_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
212    $objFormParam->addParam("¥«¡¼¥É´ü¸Âǯ", "card_year", 2, "n", array("EXIST_CHECK", "NUM_COUNT_CHECK", "NUM_CHECK"));
213    $objFormParam->addParam("¥«¡¼¥É´ü¸Â·î", "card_month", 2, "n", array("EXIST_CHECK", "NUM_COUNT_CHECK", "NUM_CHECK"));
214    $objFormParam->addParam("À«", "card_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "ALPHA_CHECK"));
215    $objFormParam->addParam("̾", "card_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "ALPHA_CHECK"));
216    $objFormParam->addParam("»ÙʧÊýË¡", "paymethod", STEXT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
217}
218
219/* ÆþÎÏÆâÍƤΥÁ¥§¥Ã¥¯ */
220function lfCheckError() {
221    global $objFormParam;
222    // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£
223    $arrRet =  $objFormParam->getHashArray();
224    $objErr = new SC_CheckError($arrRet);
225    $objErr->arrErr = $objFormParam->checkError();
226   
227    return $objErr->arrErr;
228}
229
230// ŹÊÞ¾ðÊó¤ÎÁ÷¿®
231function lfSendGMOEntry($order_id, $amount, $tax = 0) {
232   
233    $arrRet = sfGetPaymentDB();
234       
235    $arrData = array(
236        'OrderId' => $order_id,     // ŹÊÞ¤´¤È¤Ë°ì°Õ¤ÊÃíʸID¤òÁ÷¿®¤¹¤ë¡£
237        'TdTenantName' => '',       // 3Dǧ¾Ú»þɽ¼¨ÍÑŹÊÞ̾
238        'TdFlag' => '',             // 3D¥Õ¥é¥°
239        'ShopId' => $arrRet[0]['gmo_shopid'],       // ¥·¥ç¥Ã¥×ID
240        'ShopPass' => $arrRet[0]['gmo_shoppass'],   // ¥·¥ç¥Ã¥×¥Ñ¥¹¥ï¡¼¥É
241        'Currency' => 'JPN',        // Ä̲ߥ³¡¼¥É
242        'Amount' => $amount,        // ¶â³Û
243        'Tax' => $tax,              // ¾ÃÈñÀÇ
244        'JobCd' => 'AUTH',          // ½èÍý¶èʬ
245        'TenantNo' => $arrRet[0]['gmo_tenantno'],   // ŹÊÞID¤òÁ÷¿®¤¹¤ë¡£
246    );
247   
248    $req = new HTTP_Request(GMO_ENTRY_URL);
249    $req->setMethod(HTTP_REQUEST_METHOD_POST);
250    $req->addPostDataArray($arrData);
251   
252    if (!PEAR::isError($req->sendRequest())) {
253        $response = $req->getResponseBody();
254    }
255    $req->clearPostData();
256    $arrRet = lfGetPostArray($response);
257   
258    return $arrRet;
259}
260
261function lfSendGMOExec($access_id, $access_pass, $order_id, $cardno1, $cardno2, $cardno3, $cardno4, $ex_mm, $ex_yy, $paymethod) {
262   
263    // »ÙʧÊýË¡¡¢²ó¿ô¤Î¼èÆÀ
264    list($method, $paytimes) = split("-", $paymethod);
265   
266    if(!($paytimes > 0)) {
267        $paytimes = "";
268    }
269           
270    $arrData = array(
271    'AccessId' => $access_id,
272    'AccessPass' => $access_pass,
273    'OrderId' => $order_id,
274    'RetURL' => GMO_RETURL,
275    // ¥×¥í¥Ñ¡¼¥«¡¼¥É¤ò°·¤ï¤Ê¤¤¾ì¹ç¤ÏVISA¸ÇÄê¤ÇOK
276    'CardType' => 'VISA, 11111, 111111111111111111111111111111111111, 1111111111',
277    // »Ùʧ¤¤ÊýË¡
278    /*
279        1:°ì³ç
280        2:ʬ³ä
281        3:¥Ü¡¼¥Ê¥¹°ì³ç
282        4:¥Ü¡¼¥Ê¥¹Ê¬³ä
283        5:¥ê¥Üʧ¤¤
284     */
285    'Method' => $method,
286    // »Ùʧ²ó¿ô
287    'PayTimes' => $paytimes,
288    // ¥«¡¼¥ÉÈÖ¹æ
289    /*
290        »î¸³ÍÑ¥«¡¼¥ÉÈÖ¹æ¤Ï¡¢4111-1111-1111-1111
291     */
292    'CardNo1' => $cardno1,
293    'CardNo2' => $cardno2,
294    'CardNo3' => $cardno3,
295    'CardNo4' => $cardno4,
296    'ExpireMM' => $ex_mm,
297    'ExpireYY' => $ex_yy,
298    // ²ÃÌÁŹ¼«Í³¹àÌÜÊֵѥե饰
299    'ClientFieldFlag' => '1',
300    'ClientField1' => 'f1',
301    'ClientField2' => 'f2',
302    'ClientField3' => 'f3',
303    // ¥ê¥À¥¤¥ì¥¯¥È¥Ú¡¼¥¸¤Ç¤Î±þÅú¤ò¼õ¤±¼è¤é¤Ê¤¤
304    /*
305        0: HTML ¥ê¥À¥¤¥ì¥¯¥È¥Ú¡¼¥¸¡ÊDefault ÃÍ¡Ë
306        1: ¥Æ¥­¥¹¥È
307     */
308    'ModiFlag' => '1', 
309    );
310   
311    $req = new HTTP_Request(GMO_EXEC_URL);
312    $req->setMethod(HTTP_REQUEST_METHOD_POST);
313   
314    $req->addPostDataArray($arrData);
315   
316    if (!PEAR::isError($req->sendRequest())) {
317        $response = $req->getResponseBody();
318    }
319    $req->clearPostData();
320   
321    $arrRet = lfGetPostArray($response);
322   
323    return $arrRet;
324}
325
326function lfGetPostArray($text) {
327    $arrRet = array();
328    if($text != "") {
329        $text = ereg_replace("[\n\r]", "", $text);
330        $arrTemp = split("&", $text);
331        foreach($arrTemp as $ret) {
332            list($key, $val) = split("=", $ret);
333            $arrRet[$key] = $val;
334        }
335    }
336    return $arrRet;
337}
338?>
Note: See TracBrowser for help on using the repository browser.