source: branches/version-1/data/downloads/module/mdl_remise/remise_recv.php @ 17265

Revision 17265, 36.0 KB checked in by adachi, 16 years ago (diff)

モバイルのクレジット決済が正常に完了しない不具合の修正

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php
Line 
1<?php
2/**
3 *
4 * @copyright   2000-2007 LOCKON CO.,LTD. All Rights Reserved.
5 * @version CVS: $Id$
6 * @link        http://www.lockon.co.jp/
7 *
8 */
9require_once '../require.php';
10require_once MODULE_PATH . "mdl_remise/mdl_remise.inc";
11
12if (REMISE_IP_ADDRESS_DENY == 1) {
13    if (!isset($_SERVER["REMOTE_ADDR"]) || !lfIpAddressDenyCheck($_SERVER["REMOTE_ADDR"])) {
14        print("NOT REMISE SERVER");
15        exit;
16    }
17}
18
19switch (lfGetMode()) {
20case 'credit_complete':
21    // ¥ë¥ß¡¼¥º¥«¡¼¥É¥¯¥ì¥¸¥Ã¥È·èºÑ·ë²ÌÄÌÃνèÍý
22    lfRemiseCreditResultCheck();
23    break;
24
25case 'conveni_mobile_complete':
26    // ¥â¥Ð¥¤¥ë´°Î»¥Æ¥ó¥×¥ì¡¼¥È
27    lfRemiseConveniComplete();
28    break;
29
30case 'conveni_check':
31    // ¥³¥ó¥Ó¥ËÆþ¶â¥Á¥§¥Ã¥¯
32    lfRemiseConveniCheck();
33    break;
34
35default:
36    break;
37}
38
39//-------------------------------------------------------------------------------------------------------
40function lfGetMode() {
41    $mode = '';
42    if (isset($_POST["X-TRANID"]) && isset($_POST["X-PARTOFCARD"])) {
43        $mode = 'credit_complete';
44
45    // ¥â¥Ð¥¤¥ë¥³¥ó¥Ó¥Ë´°Î»¥Æ¥ó¥×¥ì¡¼¥È
46    } elseif (isset($_POST['X-JOB_ID'])) {
47        $mode = 'conveni_mobile_complete';
48
49    // ¥³¥ó¥Ó¥ËÆþ¶â³Îǧ
50    } elseif (isset($_POST["JOB_ID"]) && isset($_POST["REC_FLG"]) && REMISE_CONVENIENCE_RECIVE == 1) {
51        $mode = 'conveni_check';
52    }
53    return $mode;
54}
55// ¥ë¥ß¡¼¥º¥«¡¼¥É¥¯¥ì¥¸¥Ã¥È·èºÑ·ë²ÌÄÌÃνèÍý
56function lfRemiseCreditResultCheck(){
57    $objQuery = new SC_Query;
58
59    $log_path = DATA_PATH . "logs/remise_card_result.log";
60    gfPrintLog("remise card result : ".$_POST["X-TRANID"] , $log_path);
61
62    // TRAN_ID ¤ò»ØÄꤵ¤ì¤Æ¤¤¤Æ¡¢¥«¡¼¥É¾ðÊ󤬤¢¤ë¾ì¹ç
63    if (isset($_POST["X-TRANID"]) && isset($_POST["X-PARTOFCARD"])) {
64
65        $errFlg = FALSE;
66
67        gfPrintLog("remise card result start----------", $log_path);
68        foreach($_POST as $key => $val){
69            gfPrintLog( "\t" . $key . " => " . $val, $log_path);
70        }
71        gfPrintLog("remise credit result end  ----------", $log_path);
72
73        // IP¥¢¥É¥ì¥¹À©¸æ¤¹¤ë¾ì¹ç
74        if (REMISE_IP_ADDRESS_DENY == 1) {
75            gfPrintLog("remise remoto ip address : ".$_SERVER["REMOTE_HOST"]."-".$_SERVER["REMOTE_ADDR"], $log_path);
76            if (!isset($_SERVER["REMOTE_ADDR"]) || !lfIpAddressDenyCheck($_SERVER["REMOTE_ADDR"])) {
77                print("NOT REMISE SERVER");
78                exit;
79            }
80        }
81
82        // ÀÁµáÈÖ¹æ¤È¶â³Û¤Î¼èÆÀ
83        $order_id = 0;
84        $payment_total = 0;
85
86        if (isset($_POST["X-S_TORIHIKI_NO"])) {
87            $order_id = $_POST["X-S_TORIHIKI_NO"];
88        }
89
90        if (isset($_POST["X-TOTAL"])) {
91            $payment_total = $_POST["X-TOTAL"];
92        }
93
94        gfPrintLog("order_id : ".$order_id, $log_path);
95        gfPrintLog("payment_total : ".$payment_total, $log_path);
96
97        // Ãíʸ¥Ç¡¼¥¿¼èÆÀ
98        $arrTempOrder = $objQuery->getall("SELECT payment_total FROM dtb_order_temp WHERE order_id = ? ", array($order_id));
99
100        // ¶â³Û¤ÎÁê°ã
101        if (count($arrTempOrder) > 0) {
102            gfPrintLog("ORDER payment_total : ".$arrTempOrder[0]['payment_total'], $log_path);
103            if ($arrTempOrder[0]['payment_total'] == $payment_total) {
104                $errFlg = TRUE;
105            }
106        }
107
108        if ($errFlg) {
109            // ¥â¥Ð¥¤¥ë¤Î¾ì¹ç¤Ï¡¢¹ØÆþ´°Î»½èÍý¤ò¹Ô¤¦
110            $arrCarier = array('imode', 'ezweb', 'jsky');
111            if (isset($_POST["CARIER_TYPE"]) && in_array($_POST["CARIER_TYPE"], $arrCarier)) {
112                gfPrintLog("Mobile Complete Start", $log_path);
113                if (lfMobileComplete(REMISE_PAY_TYPE_CREDIT)) {
114                    gfPrintLog("Mobile Complete Success", $log_path);
115                    print(REMISE_PAYMENT_CHARGE_OK_MOBILE);
116                } else {
117                    gfPrintLog("Mobile Complete Error", $log_path);
118                    print("ERROR");
119                }
120                gfPrintLog("Mobile Complete End", $log_path);
121                exit;
122            }
123
124            // PCÈǤϹØÆþ´°Î»²èÌ̤Ǵ°Î»¤¹¤ë¤¿¤á¡¢¤³¤³¤Ç¤ÏÀ®¸ù¥³¡¼¥É¤òÊÖ¤¹
125            print(REMISE_PAYMENT_CHARGE_OK);
126            exit;
127        }
128        print("ERROR");
129        exit;
130    }
131}
132
133// ¥â¥Ð¥¤¥ë´°Î»¥Æ¥ó¥×¥ì¡¼¥È
134function lfRemiseConveniComplete() {
135    require_once DATA_PATH . 'conf/mobile_conf.php';
136
137    gfPrintLog('remise mobile conveni finish start----------:', REMISE_LOG_PATH_CONVENI_RET);
138    foreach($_POST as $key => $val){
139        gfPrintLog( "\t" . $key . " => " . $val, REMISE_LOG_PATH_CONVENI_RET);
140    }
141    gfPrintLog("remise mobile conveni finish end  ----------", REMISE_LOG_PATH_CONVENI_RET);
142
143    $objForm = lfInitParamMobileCompleteConveni();
144    // ¥Ñ¥é¥á¡¼¥¿¥Á¥§¥Ã¥¯
145    if ($arrErr = $objForm->checkError()) {
146        gfPrintLog("Param Invalid", REMISE_LOG_PATH_CONVENI_RET);
147        foreach ($arrErr as $k => $v) {
148            gfPrintLog("\t$k => $v", REMISE_LOG_PATH_CONVENI_RET);
149        }
150        mb_http_output(REMISE_SEND_ENCODE);
151        sfDispSiteError(FREE_ERROR_MSG, "", true, "¹ØÆþ½èÍýÃæ¤Ë°Ê²¼¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£<br /><br /><br />¡¦¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹¡£", true);
152    }
153    $arrForm = $objForm->getHashArray();
154    $arrOrderTemp = lfGetOrderTempConveni($arrForm, new SC_Query);
155    $arrOrderTemp = $arrOrderTemp[0];
156
157    // ½èÍý·ë²Ì¤Î¥¨¥é¡¼¥Á¥§¥Ã¥¯
158    global $arrRemiseErrorWord;
159    gfPrintLog("\terror check", REMISE_LOG_PATH_CONVENI_RET);
160    if ($arrForm["X-R_CODE"] !== $arrRemiseErrorWord["OK"]) {
161        $err_detail = $arrForm["X-R_CODE"];
162        gfPrintLog("\t error check result: $err_detail", REMISE_LOG_PATH_CONVENI_RET);
163        mb_http_output(REMISE_SEND_ENCODE);
164        sfDispSiteError(FREE_ERROR_MSG, "", true, "¹ØÆþ½èÍýÃæ¤Ë°Ê²¼¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£<br /><br /><br />¡¦" . $err_detail, true);
165    }
166    // ¶â³Û¤ÎÀ°¹çÀ­¥Á¥§¥Ã¥¯
167    gfPrintLog("\tpayment total check", REMISE_LOG_PATH_CONVENI_RET);
168    if ($arrOrderTemp["payment_total"] != $arrForm["X-TOTAL"]) {
169        $xtotal = $arrForm["X-TOTAL"];
170        $paytotal = $arrOrderTemp["payment_total"];
171        gfPrintLog("\t payment total check result: X-TOTAL($xtotal) != payment_total($paytotal)", REMISE_LOG_PATH_CONVENI_RET);
172        mb_http_output(REMISE_SEND_ENCODE);
173        sfDispSiteError(FREE_ERROR_MSG, "", true, "¹ØÆþ½èÍýÃæ¤Ë°Ê²¼¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£<br /><br /><br />¡¦ÀÁµá¶â³Û¤È»Ùʧ¤¤¶â³Û¤¬°ã¤¤¤Þ¤¹¡£", true);
174    }
175
176    gfPrintLog("\tdtb_order_temp update...", REMISE_LOG_PATH_CONVENI_RET);
177    // ¥ë¥ß¡¼¥º¤«¤é¤ÎÃͤμèÆÀ
178    $job_id = lfSetConvMSG("¥¸¥ç¥ÖID(REMISE)", $arrForm["X-JOB_ID"]);
179    $payment_limit = lfSetConvMSG("»Ùʧ¤¤´ü¸Â", $arrForm["X-PAYDATE"]);
180    global $arrConvenience;
181    $conveni_type = lfSetConvMSG("»Ùʧ¤¤¥³¥ó¥Ó¥Ë", $arrConvenience[$arrForm["X-PAY_CSV"]]);
182    $payment_total = lfSetConvMSG("¹ç·×¶â³Û", $arrForm["X-TOTAL"]);
183    $receipt_no = lfSetConvMSG("¥³¥ó¥Ó¥Ëʧ¤¤½Ð¤·ÈÖ¹æ", $arrForm["X-PAY_NO1"]);
184
185    // ¥Õ¥¡¥ß¥ê¡¼¥Þ¡¼¥È¤Î¤ßURL¤¬¤Ê¤¤
186    if ($arrForm["X-PAY_CSV"] != "D030") {
187        $payment_url = lfSetConvMSG("¥³¥ó¥Ó¥Ëʧ¤¤½Ð¤·URL", $arrForm["X-PAY_NO2"]);
188    } else {
189        $payment_url = lfSetConvMSG("ÃíʸÈÖ¹æ", $arrForm["X-PAY_NO2"]);
190    }
191
192    $arrRet['cv_type'] = $conveni_type;             // ¥³¥ó¥Ó¥Ë¤Î¼ïÎà
193    $arrRet['cv_payment_url'] = $payment_url;       // ʧ¹þɼURL(PC)
194    $arrRet['cv_receipt_no'] = $receipt_no;         // ʧ¹þɼÈÖ¹æ
195    $arrRet['cv_payment_limit'] = $payment_limit;   // »Ùʧ¤¤´ü¸Â
196    $arrRet['title'] = lfSetConvMSG("¥³¥ó¥Ó¥Ë·èºÑ", true);
197
198    // ·èºÑÁ÷¿®¥Ç¡¼¥¿ºîÀ®
199    $arrModule['module_id'] = MDL_REMISE_ID;
200    $arrModule['payment_total'] = $arrOrderTemp["payment_total"];
201    $arrModule['payment_id'] = PAYMENT_CONVENIENCE_ID;
202
203    // ¥¹¥Æ¡¼¥¿¥¹¤Ï̤Æþ¶â¤Ë¤¹¤ë
204    $sqlval['status'] = 2;
205
206    // ¥³¥ó¥Ó¥Ë·èºÑ¾ðÊó¤ò³ÊǼ
207    $sqlval['conveni_data'] = serialize($arrRet);
208    $sqlval['memo01'] = PAYMENT_CONVENIENCE_ID;
209    $sqlval['memo02'] = serialize($arrRet);
210    $sqlval['memo03'] = MDL_REMISE_ID;
211    $sqlval['memo04'] = $arrForm["X-JOB_ID"];
212    $sqlval['memo05'] = serialize($arrModule);
213
214    // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤Ë¹¹¿·
215    sfRegistTempOrder($arrForm['OPT'], $sqlval);
216    gfPrintLog("\tdtb_order_temp update done", REMISE_LOG_PATH_CONVENI_RET);
217
218    gfPrintLog("Mobile Complete Start", REMISE_LOG_PATH_CONVENI_RET);
219    if (lfMobileComplete(REMISE_PAY_TYPE_CONVENI)) {
220        gfPrintLog("Mobile Complete Success", REMISE_LOG_PATH_CONVENI_RET);
221    } else {
222        gfPrintLog("Mobile Complete Error", REMISE_LOG_PATH_CONVENI_RET);
223        mb_http_output(REMISE_SEND_ENCODE);
224        sfDispSiteError(FREE_ERROR_MSG, "", true, "¹ØÆþ½èÍýÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£<br>¤ª¼ê¿ô¤Ç¤¹¤¬¥µ¥¤¥È´ÉÍý¼Ô¤Þ¤Ç¤ªÌ䤤¹ç¤ï¤»²¼¤µ¤¤", true);
225    }
226    gfPrintLog("Mobile Complete End", $log_path);
227
228
229}
230
231// ¥³¥ó¥Ó¥ËÆþ¶â³Îǧ½èÍý
232function lfRemiseConveniCheck(){
233    $objQuery = new SC_Query;
234
235    $log_path = DATA_PATH . "logs/remise_cv_charge.log";
236    gfPrintLog("remise conveni result : ".$_POST["JOB_ID"] , $log_path);
237
238    // ɬÍפʥǡ¼¥¿¤¬Á÷¿®¤µ¤ì¤Æ¤¤¤Æ¡¢¼ýǼÄÌÃΤμ«Æ°¼õ¿®¤òµö²Ä¤·¤Æ¤¤¤ë¾ì¹ç
239    if(isset($_POST["JOB_ID"]) && isset($_POST["REC_FLG"]) && REMISE_CONVENIENCE_RECIVE == 1){
240
241        $errFlg = FALSE;
242
243        // ¼ýǼºÑ¤ß¤Î¾ì¹ç
244        if ($_POST["REC_FLG"] == REMISE_CONVENIENCE_CHARGE) {
245            // POST¤ÎÆâÍƤòÁ´¤Æ¥í¥°Êݸ
246            gfPrintLog("remise conveni charge start----------", $log_path);
247            foreach($_POST as $key => $val){
248                gfPrintLog( "\t" . $key . " => " . $val, $log_path);
249            }
250            gfPrintLog("remise conveni charge end  ----------", $log_path);
251
252            // IP¥¢¥É¥ì¥¹À©¸æ¤¹¤ë¾ì¹ç
253            if (REMISE_IP_ADDRESS_DENY == 1) {
254                gfPrintLog("remise remoto ip address : ".$_SERVER["REMOTE_HOST"]."-".$_SERVER["REMOTE_ADDR"], $log_path);
255                if (!isset($_SERVER["REMOTE_ADDR"]) || !lfIpAddressDenyCheck($_SERVER["REMOTE_ADDR"])) {
256                    print("NOT REMISE SERVER");
257                    exit;
258                }
259            }
260
261            // ÀÁµáÈÖ¹æ¤È¶â³Û¤Î¼èÆÀ
262            $order_id = 0;
263            $payment_total = 0;
264
265            if (isset($_POST["S_TORIHIKI_NO"])) {
266                $order_id = $_POST["S_TORIHIKI_NO"];
267            }
268
269            if (isset($_POST["TOTAL"])) {
270                $payment_total = $_POST["TOTAL"];
271            }
272
273            gfPrintLog("order_id : ".$order_id, $log_path);
274            gfPrintLog("payment_total : ".$payment_total, $log_path);
275
276            // Ãíʸ¥Ç¡¼¥¿¼èÆÀ
277            $arrTempOrder = $objQuery->getall("SELECT payment_total FROM dtb_order_temp WHERE order_id = ? ", array($order_id));
278
279            // ¶â³Û¤ÎÁê°ã
280            if (count($arrTempOrder) > 0) {
281                gfPrintLog("ORDER payment_total : ".$arrTempOrder[0]['payment_total'], $log_path);
282                if ($arrTempOrder[0]['payment_total'] == $payment_total) {
283                    $errFlg = TRUE;
284                }
285            }
286
287            // JOB_ID¤ÈÀÁµáÈֹ档Æþ¶â¶â³Û¤¬°ìÃפ¹¤ë¾ì¹ç¤Î¤ß¡¢¥¹¥Æ¡¼¥¿¥¹¤òÆþ¶âºÑ¤ß¤ËÊѹ¹¤¹¤ë
288            if ($errFlg) {
289                $sql = "UPDATE dtb_order SET status = 6, update_date = now() ".
290                    "WHERE order_id = ? AND memo04 = ? ";
291                $objQuery->query($sql, array($order_id, $_POST["JOB_ID"]));
292
293                //±þÅú·ë²Ì¤òɽ¼¨
294                print(REMISE_CONVENIENCE_CHARGE_OK);
295                exit;
296            }
297        }
298        print("ERROR");
299        exit;
300    }
301}
302
303/**
304 * IP¥¢¥É¥ì¥¹ÂÓ°è¥Á¥§¥Ã¥¯
305 * @param $ip IP¥¢¥É¥ì¥¹
306 * @return boolean
307 */
308function lfIpAddressDenyCheck($ip) {
309
310    // IP¥¢¥É¥ì¥¹ÈϰϤËÆþ¤Ã¤Æ¤Ê¤¤¾ì¹ç
311    if (ip2long(REMISE_IP_ADDRESS_S) > ip2long($ip) ||
312        ip2long(REMISE_IP_ADDRESS_E) < ip2long($ip)) {
313        return FALSE;
314    }
315    return TRUE;
316}
317
318/**
319 * ¾¦ÉʹØÆþ¤ò´°Î»¤¹¤ë(¥â¥Ð¥¤¥ë)
320 *
321 * @param string $type ¥¯¥ì¥¸¥Ã¥È¤«¥³¥ó¥Ó¥Ë¤«
322 * @return boolean
323 */
324function lfMobileComplete($type) {
325    $logPath = ($type == REMISE_PAY_TYPE_CONVENI)
326        ? REMISE_LOG_PATH_CONVENI_RET
327        : REMISE_LOG_PATH_CARD_RET;
328    $objForm = ($type == REMISE_PAY_TYPE_CONVENI)
329        ? lfInitParamMobileCompleteConveni()
330        : lfInitParamMobileCompleteCredit();
331    $objSiteSess     = new SC_SiteSession();
332    $objCartSess     = new SC_CartSession();
333    $objCampaignSess = new SC_CampaignSession();
334    $objCustomer     = new SC_Customer();
335    $objQuery        = new SC_Query();
336    $arrInfo         = sf_getBasisData();
337
338    if ($arrErr = $objForm->checkError()) {
339        gfPrintLog("\tParam Invalid", $logPath);
340        foreach ($arrErr as $k => $v) {
341            gfPrintLog("\t$k => $v", $logPath);
342        }
343        return false;
344    }
345
346    $order_id = $objForm->getValue('X-S_TORIHIKI_NO');
347
348    // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤Î¼èÆÀ
349    $getOrderTempFucntion = ($type == REMISE_PAY_TYPE_CONVENI)
350        ? 'lfGetOrderTempConveni'
351        : 'lfUpdateOrderTemp';
352    $arrOrderTemp = $getOrderTempFucntion($objForm->getHashArray(), $objQuery);
353    if (empty($arrOrderTemp[0])) {
354        gfPrintLog("\tOrder Temp Not Found: $order_id", $logPath);
355        return false;
356    }
357    $arrOrderTemp = $arrOrderTemp[0];
358    gfPrintLog("\tOrder Temp Found: $order_id", $logPath);
359
360    // ¥»¥Ã¥·¥ç¥ó¤ÎÉü¸µ
361    $_SESSION = unserialize($arrOrderTemp['session']);
362
363    $uniqid = $arrOrderTemp['order_temp_id'];
364    $customer_id = $objCustomer->getValue('customer_id');
365    $execSetCustomerPurchase = false;
366    $preCustomer = false; // ²¾²ñ°÷ÅÐÏ¿¥Õ¥é¥°¡¢true¤Ê¤é²¾²ñ°÷ÅÐÏ¿¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë
367
368    gfPrintLog("\tBegin Transaction...", $logPath);
369    $objQuery = new SC_Query();
370    $objQuery->begin();
371
372    // ²ñ°÷¾ðÊóÅÐÏ¿½èÍý
373    if ($objCustomer->isLoginSuccess()) {
374        // ¿·¤ªÆϤ±Àè¤ÎÅÐÏ¿
375        gfPrintLog("\tlfSetNewAddr() Start.", $logPath);
376        lfSetNewAddr($uniqid, $customer_id, $objQuery);
377        $execSetCustomerPurchase = true;
378    } else {
379        //¹ØÆþ»þ¶¯À©²ñ°÷ÅÐÏ¿
380        switch(PURCHASE_CUSTOMER_REGIST) {
381        //̵¸ú
382        case '0':
383            // ¹ØÆþ»þ²ñ°÷ÅÐÏ¿
384            if($arrOrderTemp['member_check'] == '1') {
385                // ²¾²ñ°÷ÅÐÏ¿
386                gfPrintLog("\t0: lfRegistPreCustomer() Start.", $logPath);
387                $customer_id = lfRegistPreCustomer($arrOrderTemp, $arrInfo, $objQuery);
388                $execSetCustomerPurchase = true;
389                $preCustomer = true;
390            }
391            break;
392        //Í­¸ú
393        case '1':
394            // ²¾²ñ°÷ÅÐÏ¿
395            gfPrintLog("\t1: lfRegistPreCustomer() Start.", $logPath);
396            $customer_id = lfRegistPreCustomer($arrOrderTemp, $arrInfo, $objQuery);
397            $execSetCustomerPurchase = true;
398            $preCustomer = true;
399            break;
400        }
401    }
402
403    // ¹ØÆþ½¸·×¤ò¸ÜµÒ¥Æ¡¼¥Ö¥ë¤ËÈ¿±Ç
404    gfPrintLog("\tlfSetCustomerPurchase() Start.", $logPath);
405    if ($execSetCustomerPurchase && !lfSetCustomerPurchase($customer_id, $arrOrderTemp, $objQuery)) {
406        gfPrintLog("\tFailed lfSetCustomerPurchase();", $logPath);
407        $objQuery->rollback();
408        return false;
409    }
410    // °ì»þ¥Æ¡¼¥Ö¥ë¤ò¼õÃí¥Æ¡¼¥Ö¥ë¤Ë³ÊǼ¤¹¤ë
411    gfPrintLog("\tlfRegistOrder() Start.", $logPath);
412    if (!lfRegistOrder($objQuery, $arrOrderTemp)) {
413        gfPrintLog("\t" . 'Failed lfRegistOrder();', $logPath);
414        $objQuery->rollback();
415        return false;
416    }
417    // ¥«¡¼¥È¾¦Éʤò¼õÃí¾ÜºÙ¥Æ¡¼¥Ö¥ë¤Ë³ÊǼ¤¹¤ë
418    gfPrintLog("\tlfRegistOrderDetail() Start.", $logPath);
419    if (!lfRegistOrderDetail($objQuery, $order_id, $objCartSess)) {
420        gfPrintLog("\t" . 'Failed lfRegistOrderDetail();', $logPath);
421        $objQuery->rollback();
422        return false;
423    }
424    // ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤Î¾ðÊó¤òºï½ü¤¹¤ë¡£
425    gfPrintLog("\tlfDeleteTempOrder() Start.", $logPath);
426    if (!lfDeleteTempOrder($objQuery, $uniqid)) {
427        gfPrintLog("\t" . 'Failed lfDeleteTempOrder();', $logPath);
428        $objQuery->rollback();
429        return false;
430    }
431    // ¥­¥ã¥ó¥Ú¡¼¥ó¤«¤é¤ÎÁ«°Ü¤Î¾ì¹çÅÐÏ¿¤¹¤ë¡£
432    if ($objCampaignSess->getIsCampaign()) {
433        gfPrintLog("\tlfRegistCampaignOrder() Start.", $logPath);
434        if (!lfRegistCampaignOrder($objQuery, $objCampaignSess, $order_id)) {
435            gfPrintLog("\t" . 'Failed lfRegistCampaignOrder();', $logPath);
436            $objQuery->rollback();
437            return false;
438        }
439    }
440
441    // sfSendOrderMail(), sfMakeSubject()Æâ¤Ç¡¢LC_Page¥¯¥é¥¹¤ò»ÈÍѤ·¤Æ¤¤¤ë¤¿¤á¡¢¤³¤³¤ÇLC_Page¥¯¥é¥¹¤òÄêµÁ¤¹¤ë.
442    // ¤³¤³¤ÇÄêµÁ¤·¤Ê¤¤¤ÈLC_Page¥¯¥é¥¹¤¬Ì¤ÄêµÁ¤Ê¤Î¤ÇFatal Error¤Ë¤Ê¤ë.
443    if (!class_exists('LC_Page')) {
444        gfPrintLog("\t" . 'define LC_Page Class.', $logPath);
445        class LC_Page {}
446    }
447
448    gfPrintLog("\t" . 'Send Mail Start.', $logPath);
449    lfSendMail($order_id, $preCustomer, $customer_id); // ¥á¡¼¥ëÁ÷¿®
450
451    gfPrintLog("\t" . 'Commit Transaction.', $logPath);
452    $objQuery->commit();
453
454    gfPrintLog("\t" . 'Success lfMobileComplete();', $logPath);
455    return true;
456}
457/**
458 * ¥â¥Ð¥¤¥ë¥¯¥ì¥¸¥Ã¥È´°Î»Íѥѥé¥á¡¼¥¿¤Î½é´ü²½
459 *
460 * @return SC_FormParam
461 */
462function lfInitParamMobileCompleteCredit() {
463/**
464X-TRANID => 0802242008300000873041892525 from 211.0.149.169
465X-S_TORIHIKI_NO => 50 from 211.0.149.169
466X-REFAPPROVED => 2008224 from 211.0.149.169
467X-REFFORWARDED => 15250 from 211.0.149.169
468X-ERRCODE =>     from 211.0.149.169
469X-ERRINFO => 000000000 from 211.0.149.169
470X-ERRLEVEL => 0 from 211.0.149.169
471X-R_CODE => 0:0000 from 211.0.149.169
472CARIER_TYPE => imode from 211.0.149.169
473REC_TYPE => RET from 211.0.149.169
474X-REFGATEWAYNO => 1 from 211.0.149.169
475 X-AMOUNT => 2733 from 211.0.149.169
476X-TAX => 0 from 211.0.149.169
477X-TOTAL => 2733 from 211.0.149.169
478X-PAYQUICKID =>  from 211.0.149.169
479X-PARTOFCARD => 1234 from 211.0.149.169
480X-EXPIRE => 1122 from 211.0.149.169
481X-NAME => LOCKON from 211.0.149.169
482*/
483    $objForm = new SC_FormParam();
484    $objForm->addParam('¥È¥é¥ó¥¶¥¯¥·¥ç¥óID', 'X-TRANID',        28, '', array('EXIST_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK'));
485    $objForm->addParam('ÀÁµáÈÖ¹æ',          'X-S_TORIHIKI_NO', 17, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
486    $objForm->addParam('¶â³Û',             'X-AMOUNT',        8, '',  array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
487    $objForm->addParam('ÀÇÁ÷ÎÁ',            'X-TAX',           7, '',  array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
488    $objForm->addParam('¹ç·×¶â³Û',          'X-TOTAL',         8, '',  array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
489    $objForm->addParam('¾µÇ§ÈÖ¹æ',          'X-REFAPPROVED',   7, '',  array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
490    $objForm->addParam('»Å¸þÀ襳¡¼¥É',      'X-REFFORWARDED',  7, '',  array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
491    $objForm->addParam('¥¨¥é¡¼¥³¡¼¥É',      'X-ERRCODE',       3, '',  array('MAX_LENGTH_CHECK'));
492    $objForm->addParam('¥¨¥é¡¼¾ÜºÙ¥³¡¼¥É',   'X-ERRINFO',        9, '',   array('EXIST_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK'));
493    $objForm->addParam('¥¨¥é¡¼¥ì¥Ù¥ë',       'X-ERRLEVEL',      1, '',  array('EXIST_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK'));
494    $objForm->addParam('Ìá¤ê¥³¡¼¥É',        'X-R_CODE',        6, '',  array('MAX_LENGTH_CHECK'));
495    $objForm->addParam('Ìá¤ê¶èʬ',          'REC_TYPE',        3,'',  array('EXIST_CHECK', 'ALNUM_CHECK', 'NUM_COUNT_CHECK'));
496    $objForm->addParam('¥²¡¼¥È¥¦¥§¥¤ÈÖ¹æ',   'X-REFGATEWAYNO',  2, '',  array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
497    $objForm->addParam('¥Ú¥¤¥¯¥¤¥Ã¥¯ID',     'X-PAYQUICKID',    20, '', array('ALNUM_CHECK', 'MAX_LENGTH_CHECK'));
498    $objForm->addParam('¥­¥ã¥ê¥¢',          'CARIER_TYPE',      5, '', array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK'));
499    $objForm->addParam('¥«¡¼¥ÉÈÖ¹æ',        'X-PARTOFCARD',     4, '', array('EXIST_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK'));
500    $objForm->addParam('Í­¸ú´ü¸Â',          'X-EXPIRE',         4, '', array('EXIST_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK'));
501
502    $objForm->setParam($_POST);
503    return $objForm;
504}
505
506/**
507 * ¥â¥Ð¥¤¥ë¥³¥ó¥Ó¥Ë´°Î»Íѥѥé¥á¡¼¥¿¤Î½é´ü²½
508 *
509 * @return SC_FormParam
510 */
511function lfInitParamMobileCompleteConveni() {
512    $objForm = new SC_FormParam();
513    $objForm->addParam('¥¸¥ç¥ÖID',        'X-JOB_ID',        17, '', array('EXIST_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK'));
514    $objForm->addParam('ÀÁµáÈÖ¹æ',        'X-S_TORIHIKI_NO', 17, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
515    $objForm->addParam('Ìá¤ê¥³¡¼¥É',      'X-R_CODE',         6, '',  array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
516    $objForm->addParam('ÀÁµá¶â³Û',        'X-TOTAL',          6, '',  array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
517    $objForm->addParam('³°ÀÇʬ¾ÃÈñÀÇ',     'X-TAX',            6, '',  array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
518    $objForm->addParam('»Ùʧ´ü¸Â',        'X-PAYDATE',        8, '',  array('ALNUM_CHECK', 'MAX_LENGTH_CHECK'));
519    $objForm->addParam('»Ùʧ¤¤ÊýË¡¥³¡¼¥É', 'X-PAY_WAY',        3, '',  array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
520    $objForm->addParam('¥³¥ó¥Ó¥Ë¥³¡¼¥É',   'X-PAY_CSV',        4, '',  array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK'));
521    $objForm->addParam('ʧ¤¤½Ð¤·ÈÖ¹æ1',    'X-PAY_NO1',        20, '',  array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
522    $objForm->addParam('ʧ¤¤½Ð¤·ÈÖ¹æ2',    'X-PAY_NO2',        120, '',   array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
523    $objForm->addParam('¥ª¥×¥·¥ç¥ó',       'OPT',              100, '',  array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK'));
524    $objForm->addParam('Ìá¤ê¶èʬ',         'REC_TYPE',        3,'',  array('EXIST_CHECK', 'ALNUM_CHECK', 'NUM_COUNT_CHECK'));
525    $objForm->addParam('¥­¥ã¥ê¥¢',         'CARIER_TYPE',      5, '', array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK'));
526    $objForm->setParam($_POST);
527
528    return $objForm;
529}
530/**
531 * ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤ò¹¹¿·¤¹¤ë
532 *
533 * @param array $arrForm
534 * @param SC_Query $objQuery
535 * @return array|null
536 */
537function lfUpdateOrderTemp($arrForm, $objQuery) {
538    $order_id = $arrForm['X-S_TORIHIKI_NO'];
539
540    // POST¥Ç¡¼¥¿¤òÊݸ
541    $arrVal["credit_result"] = $arrForm["X-TRANID"];
542    $arrVal["memo01"] = PAYMENT_CREDIT_ID;
543    $arrVal["memo03"] = MDL_REMISE_ID;
544    $arrVal["memo04"] = $arrForm["X-TRANID"];
545
546    // ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¥³¡¼¥É
547    $arrMemo["trans_code"] = array("name"=>"Remise¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¥³¡¼¥É", "value" => $arrForm["X-TRANID"]);
548    $arrVal["memo02"] = serialize($arrMemo);
549
550    // ·èºÑÁ÷¿®¥Ç¡¼¥¿ºîÀ®
551    $arrModule['module_id'] = MDL_REMISE_ID;
552    $arrModule['payment_total'] = $arrForm["X-TOTAL"];
553    $arrModule['payment_id'] = PAYMENT_CREDIT_ID;
554    $arrVal['memo05'] = serialize($arrModule);
555
556    $objQuery->update('dtb_order_temp', $arrVal, 'order_id = ?', array($order_id));
557    return $objQuery->select('*', 'dtb_order_temp', 'order_id = ? AND del_flg = 0', array($order_id));
558}
559
560/**
561 * ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤Î½»½ê¤¬ÅÐÏ¿ºÑ¤ß¥Æ¡¼¥Ö¥ë¤È°Û¤Ê¤ë¾ì¹ç¤Ï¡¢Ê̤ΤªÆϤ±Àè¤ËÄɲ乤ë
562 *
563 * @param string $uniqid
564 * @param integer $customer_id
565 */
566function lfSetNewAddr($uniqid, $customer_id, $objQuery) {
567    $diff = false;
568    $find_same = false;
569
570    $col = "deliv_name01,deliv_name02,deliv_kana01,deliv_kana02,deliv_tel01,deliv_tel02,deliv_tel03,deliv_zip01,deliv_zip02,deliv_pref,deliv_addr01,deliv_addr02";
571    $where = "order_temp_id = ?";
572    $arrRet = $objQuery->select($col, "dtb_order_temp", $where, array($uniqid));
573
574    // Í×ÁÇ̾¤Îdeliv_¤òºï½ü¤¹¤ë¡£
575    foreach($arrRet[0] as $key => $val) {
576        $keyname = ereg_replace("^deliv_", "", $key);
577        $arrNew[$keyname] = $val;
578    }
579
580    // ²ñ°÷¾ðÊó¥Æ¡¼¥Ö¥ë¤È¤ÎÈæ³Ó
581    $col = "name01,name02,kana01,kana02,tel01,tel02,tel03,zip01,zip02,pref,addr01,addr02";
582    $where = "customer_id = ?";
583    $arrCustomerAddr = $objQuery->select($col, "dtb_customer", $where, array($customer_id));
584
585    // ²ñ°÷¾ðÊó¤Î½»½ê¤È°Û¤Ê¤ë¾ì¹ç
586    if($arrNew != $arrCustomerAddr[0]) {
587        // Ê̤ΤªÆϤ±Àè¥Æ¡¼¥Ö¥ë¤Î½»½ê¤ÈÈæ³Ó¤¹¤ë
588        $col = "name01,name02,kana01,kana02,tel01,tel02,tel03,zip01,zip02,pref,addr01,addr02";
589        $where = "customer_id = ?";
590        $arrOtherAddr = $objQuery->select($col, "dtb_other_deliv", $where, array($customer_id));
591
592        foreach($arrOtherAddr as $arrval) {
593            if($arrNew == $arrval) {
594                // ¤¹¤Ç¤ËƱ¤¸½»½ê¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë
595                $find_same = true;
596            }
597        }
598
599        if(!$find_same) {
600            $diff = true;
601        }
602    }
603
604    // ¿·¤·¤¤¤ªÆϤ±À褬ÅÐÏ¿ºÑ¤ß¤Î¤â¤Î¤È°Û¤Ê¤ë¾ì¹ç¤ÏÊ̤ΤªÆϤ±Àè¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤¹¤ë
605    if($diff) {
606        $sqlval = $arrNew;
607        $sqlval['customer_id'] = $customer_id;
608        $objQuery->insert("dtb_other_deliv", $sqlval);
609    }
610}
611
612/**
613 * ¹ØÆþ¾ðÊó¤ò²ñ°÷¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤¹¤ë
614 *
615 * @param integer $customer_id
616 * @param array $arrData ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¾ðÊó
617 * @param SC_Query $objQuery
618 * @return booean
619 */
620function lfSetCustomerPurchase($customer_id, $arrData, $objQuery) {
621    $col = "first_buy_date, last_buy_date, buy_times, buy_total, point";
622    $where = "customer_id = ?";
623    $arrRet = $objQuery->select($col, "dtb_customer", $where, array($customer_id));
624    $sqlval = $arrRet[0];
625
626    if($sqlval['first_buy_date'] == "") {
627        $sqlval['first_buy_date'] = "Now()";
628    }
629    $sqlval['last_buy_date'] = "Now()";
630    $sqlval['buy_times']++;
631    $sqlval['buy_total']+= $arrData['total'];
632    $sqlval['point'] = ($sqlval['point'] + $arrData['add_point'] - $arrData['use_point']);
633
634    // ¥Ý¥¤¥ó¥È¤¬ÉÔ­¤·¤Æ¤¤¤ë¾ì¹ç
635    if($sqlval['point'] < 0) {
636        return false;
637    }
638    $objQuery->update("dtb_customer", $sqlval, $where, array($customer_id));
639    return true;
640}
641/**
642 * ²ñ°÷ÅÐÏ¿¡Ê²¾ÅÐÏ¿¡Ë¤ò¼Â¹Ô¤¹¤ë
643 *
644 * @param array $arrData ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¾ðÊó
645 * @param array $arrInfo ¥µ¥¤¥È¾ðÊó
646 * @return integer customer_id ¸ÜµÒID
647 */
648function lfRegistPreCustomer($arrData, $arrInfo, $objQuery) {
649    foreach ($arrData as $k => $v) {
650        gfPrintLog("$k -> $v",  REMISE_LOG_PATH_CARD_RET);
651    }
652    // ¹ØÆþ»þ¤Î²ñ°÷ÅÐÏ¿
653    $sqlval['name01'] = $arrData['order_name01'];
654    $sqlval['name02'] = $arrData['order_name02'];
655    $sqlval['kana01'] = $arrData['order_kana01'];
656    $sqlval['kana02'] = $arrData['order_kana02'];
657    $sqlval['zip01'] = $arrData['order_zip01'];
658    $sqlval['zip02'] = $arrData['order_zip02'];
659    $sqlval['pref'] = $arrData['order_pref'];
660    $sqlval['addr01'] = $arrData['order_addr01'];
661    $sqlval['addr02'] = $arrData['order_addr02'];
662    $sqlval['email'] = $arrData['order_email'];
663    $sqlval['tel01'] = $arrData['order_tel01'];
664    $sqlval['tel02'] = $arrData['order_tel02'];
665    $sqlval['tel03'] = $arrData['order_tel03'];
666    $sqlval['fax01'] = $arrData['order_fax01'];
667    $sqlval['fax02'] = $arrData['order_fax02'];
668    $sqlval['fax03'] = $arrData['order_fax03'];
669    $sqlval['sex'] = $arrData['order_sex'];
670    $sqlval['password'] = $arrData['password'];
671    $sqlval['reminder'] = $arrData['reminder'];
672    $sqlval['reminder_answer'] = $arrData['reminder_answer'];
673
674    // ¥á¥ë¥Þ¥¬ÇÛ¿®Íѥե饰¤ÎȽÄê
675    switch($arrData['mail_flag']) {
676    case '1':   // HTML¥á¡¼¥ë
677        $mail_flag = 4;
678        break;
679    case '2':   // TEXT¥á¡¼¥ë
680        $mail_flag = 5;
681        break;
682    case '3':   // ´õ˾¤Ê¤·
683        $mail_flag = 6;
684        break;
685    default:
686        $mail_flag = 6;
687        break;
688    }
689    // ¥á¥ë¥Þ¥¬¥Õ¥é¥°
690    $sqlval['mailmaga_flg'] = $mail_flag;
691
692    // ²ñ°÷²¾ÅÐÏ¿
693    $sqlval['status'] = 1;
694    // URLȽÄêÍÑ¥­¡¼
695    $sqlval['secret_key'] = sfGetUniqRandomId("t");
696
697    $objQuery = new SC_Query();
698    $sqlval['create_date'] = "now()";
699    $sqlval['update_date'] = "now()";
700    $objQuery->insert("dtb_customer", $sqlval);
701
702    // ¸ÜµÒID¤Î¼èÆÀ
703    $arrRet = $objQuery->select("customer_id", "dtb_customer", "secret_key = ?", array($sqlval['secret_key']));
704    $customer_id = $arrRet[0]['customer_id'];
705
706    return $customer_id;
707}
708/**
709 * ¼õÃí¥Æ¡¼¥Ö¥ë¤ØÅÐÏ¿
710 *
711 * @param SC_Query $objQuery
712 * @param array $arrData
713 * @return $order_id
714 */
715function lfRegistOrder($objQuery, $arrData) {
716    $objCampaignSess = new SC_CampaignSession();
717    $sqlval = $arrData;
718
719    // Ãíʸ¥¹¥Æ¡¼¥¿¥¹:»ØÄ̵꤬¤±¤ì¤Ð¿·µ¬¼õÉÕ¤ËÀßÄê
720    if(!isset($sqlval["status"])) {
721        $sqlval['status'] = '1';
722    }
723
724    // Ê̤ΤªÆϤ±Àè¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ÇÛÁ÷Àè¤ËÅÐÏ¿½»½ê¤ò¥³¥Ô¡¼¤¹¤ë¡£
725    if(empty($arrData["deliv_check"]) || $arrData["deliv_check"] == "-1") {
726        $sqlval['deliv_name01'] = $arrData['order_name01'];
727        $sqlval['deliv_name02'] = $arrData['order_name02'];
728        $sqlval['deliv_kana01'] = $arrData['order_kana01'];
729        $sqlval['deliv_kana02'] = $arrData['order_kana02'];
730        $sqlval['deliv_pref'] = $arrData['order_pref'];
731        $sqlval['deliv_zip01'] = $arrData['order_zip01'];
732        $sqlval['deliv_zip02'] = $arrData['order_zip02'];
733        $sqlval['deliv_addr01'] = $arrData['order_addr01'];
734        $sqlval['deliv_addr02'] = $arrData['order_addr02'];
735        $sqlval['deliv_tel01'] = $arrData['order_tel01'];
736        $sqlval['deliv_tel02'] = $arrData['order_tel02'];
737        $sqlval['deliv_tel03'] = $arrData['order_tel03'];
738    }
739
740    $order_id = $arrData['order_id'];       // ¥ª¡¼¥À¡¼ID
741    $sqlval['create_date'] = 'now()';       // ¼õÃíÆü
742
743    // ¥­¥ã¥ó¥Ú¡¼¥óID
744    if($objCampaignSess->getIsCampaign()) $sqlval['campaign_id'] = $objCampaignSess->getCampaignId();
745
746    // ¼õÃí¥Æ¡¼¥Ö¥ë¤Ë½ñ¤­¹þ¤Þ¤Ê¤¤Îó¤ò½üµî
747    unset($sqlval['mailmaga_flg']);     // ¥á¥ë¥Þ¥¬¥Á¥§¥Ã¥¯
748    unset($sqlval['deliv_check']);      // Ê̤ΤªÆϤ±Àè¥Á¥§¥Ã¥¯
749    unset($sqlval['point_check']);      // ¥Ý¥¤¥ó¥ÈÍøÍÑ¥Á¥§¥Ã¥¯
750    unset($sqlval['member_check']);     // ¹ØÆþ»þ²ñ°÷¥Á¥§¥Ã¥¯
751    unset($sqlval['password']);         // ¥í¥°¥¤¥ó¥Ñ¥¹¥ï¡¼¥É
752    unset($sqlval['reminder']);         // ¥ê¥Þ¥¤¥ó¥À¡¼¼ÁÌä
753    unset($sqlval['reminder_answer']);  // ¥ê¥Þ¥¤¥ó¥À¡¼Åú¤¨
754    unset($sqlval['mail_flag']);        // ¥á¡¼¥ë¥Õ¥é¥°
755    unset($sqlval['session']);          // ¥»¥Ã¥·¥ç¥ó¾ðÊó
756
757    // INSERT¤Î¼Â¹Ô
758    $objQuery->insert("dtb_order", $sqlval);
759
760    return true;
761}
762/**
763 * ¼õÃí¾ÜºÙ¥Æ¡¼¥Ö¥ë¤ØÅÐÏ¿
764 *
765 * @param SC_Query $objQuery
766 * @param integer $order_id
767 * @param boolean
768 */
769function lfRegistOrderDetail($objQuery, $order_id, $objCartSess) {
770    // ¥«¡¼¥ÈÆâ¾ðÊó¤Î¼èÆÀ
771    $arrCart = $objCartSess->getCartList();
772    $max = count($arrCart);
773
774    // ´û¤Ë¸ºß¤¹¤ë¾ÜºÙ¥ì¥³¡¼¥É¤ò¾Ã¤·¤Æ¤ª¤¯¡£
775    $objQuery->delete("dtb_order_detail", "order_id = ?", array($order_id));
776
777    // µ¬³Ê̾°ìÍ÷
778    $arrClassName = sfGetIDValueList("dtb_class", "class_id", "name");
779    // µ¬³ÊʬÎà̾°ìÍ÷
780    $arrClassCatName = sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");
781
782    for ($i = 0; $i < $max; $i++) {
783        // ¾¦Éʵ¬³Ê¾ðÊó¤Î¼èÆÀ
784        $arrData = sfGetProductsClass($arrCart[$i]['id']);
785
786        // ¸ºß¤¹¤ë¾¦ÉʤΤßɽ¼¨¤¹¤ë¡£
787        if($arrData != "") {
788            $sqlval['order_id'] = $order_id;
789            $sqlval['product_id'] = $arrCart[$i]['id'][0];
790            $sqlval['classcategory_id1'] = $arrCart[$i]['id'][1];
791            $sqlval['classcategory_id2'] = $arrCart[$i]['id'][2];
792            $sqlval['product_name'] = $arrData['name'];
793            $sqlval['product_code'] = $arrData['product_code'];
794            $sqlval['classcategory_name1'] = $arrClassCatName[$arrData['classcategory_id1']];
795            $sqlval['classcategory_name2'] = $arrClassCatName[$arrData['classcategory_id2']];
796            $sqlval['point_rate'] = $arrCart[$i]['point_rate'];
797            $sqlval['price'] = $arrCart[$i]['price'];
798            $sqlval['quantity'] = $arrCart[$i]['quantity'];
799            // ºß¸Ë¤Î¸º¾¯½èÍý
800            if (!lfReduceStock($objQuery, $arrCart[$i]['id'], $arrCart[$i]['quantity'])) {
801                return false;
802            }
803            // INSERT¤Î¼Â¹Ô
804            $objQuery->insert("dtb_order_detail", $sqlval);
805        } else {
806            return false;
807        }
808    }
809    return true;
810}
811/**
812 * ¹ØÆþ¾¦Éʤκ߸ˤò¸º¤é¤¹.
813 *
814 * @param SC_Query $objQuery
815 * @param array $arrID ¾¦ÉÊID
816 * @param integer $quantity ¾¦ÉÊ¿ô
817 * @return boolean
818 */
819function lfReduceStock($objQuery, $arrID, $quantity) {
820    $where = "product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?";
821    $arrRet = $objQuery->select("stock, stock_unlimited", "dtb_products_class", $where, $arrID);
822
823    // Çä¤êÀڤ쥨¥é¡¼
824    if(($arrRet[0]['stock_unlimited'] != '1' && $arrRet[0]['stock'] < $quantity) || $quantity == 0) {
825        return false;
826
827    // ̵À©¸Â¤Î¾ì¹ç¡¢ºß¸Ë¤ÏNULL
828    } elseif($arrRet[0]['stock_unlimited'] == '1') {
829        $sqlval['stock'] = null;
830        $objQuery->update("dtb_products_class", $sqlval, $where, $arrID);
831    // ºß¸Ë¤ò¸º¤é¤¹
832    } else {
833        $sqlval['stock'] = ($arrRet[0]['stock'] - $quantity);
834        if($sqlval['stock'] == "") {
835            $sqlval['stock'] = '0';
836        }
837        $objQuery->update("dtb_products_class", $sqlval, $where, $arrID);
838    }
839    return true;
840}
841/**
842 * ¥­¥ã¥ó¥Ú¡¼¥ó¼õÃí¥Æ¡¼¥Ö¥ë¤ØÅÐÏ¿
843 *
844 * @param SC_Query $objQuery
845 * @param SC_CampaignSession $objCampaignSess
846 * @param integer $order_id
847 */
848function lfRegistCampaignOrder($objQuery, $objCampaignSess, $order_id) {
849
850    // ¼õÃí¥Ç¡¼¥¿¤ò¼èÆÀ
851    $cols = "order_id, campaign_id, customer_id, message, order_name01, order_name02,".
852            "order_kana01, order_kana02, order_email, order_tel01, order_tel02, order_tel03,".
853            "order_fax01, order_fax02, order_fax03, order_zip01, order_zip02, order_pref, order_addr01,".
854            "order_addr02, order_sex, order_birth, order_job, deliv_name01, deliv_name02, deliv_kana01,".
855            "deliv_kana02, deliv_tel01, deliv_tel02, deliv_tel03, deliv_fax01, deliv_fax02, deliv_fax03,".
856            "deliv_zip01, deliv_zip02, deliv_pref, deliv_addr01, deliv_addr02, payment_total";
857
858    $arrOrder = $objQuery->select($cols, "dtb_order", "order_id = ?", array($order_id));
859
860    $sqlval = $arrOrder[0];
861    $sqlval['create_date'] = 'now()';
862
863    // INSERT¤Î¼Â¹Ô
864    $objQuery->insert("dtb_campaign_order", $sqlval);
865
866    // ¿½¤·¹þ¤ß¿ô¤Î¹¹¿·
867    $total_count = $objQuery->get("dtb_campaign", "total_count", "campaign_id = ?", array($sqlval['campaign_id']));
868    $arrCampaign['total_count'] = $total_count += 1;
869    $objQuery->update("dtb_campaign", $arrCampaign, "campaign_id = ?", array($sqlval['campaign_id']));
870
871    return true;
872}
873/**
874 * ¼õÃí°ì»þ¥Æ¡¼¥Ö¥ë¤Îºï½ü
875 *
876 * @param SC_Query $objQuery
877 * @param string $uniqid
878 */
879function lfDeleteTempOrder($objQuery, $uniqid) {
880    $where = "order_temp_id = ?";
881    $sqlval['del_flg'] = 1;
882    $objQuery->update("dtb_order_temp", $sqlval, $where, array($uniqid));
883    return true;
884}
885/**
886 * ¥á¡¼¥ëÁ÷¿®½èÍý
887 *
888 * @param integer $order_id
889 * @param boolean $preCustomer
890 * @param integer $customer_id
891 */
892function lfSendMail($order_id, $preCustomer = false, $customer_id = null) {
893    $objQuery = new SC_Query;
894    $arrOrder = $objQuery->select("*", "dtb_order", "order_id = ?", array($order_id));
895    $arrOrder = $arrOrder[0];
896
897    $secret_key = $objQuery->get('dtb_customer', 'secret_key', 'customer_id=?', array($customer_id));
898
899    // ¥â¥Ð¥¤¥ë²¾ÅÐÏ¿´°Î»¥á¡¼¥ëÁ÷¿®
900    if ($preCustomer && $customer_id) {
901
902        gfPrintLog("\tPre Customer Mail Send.", REMISE_LOG_PATH_CARD_RET);
903        $arrInfo = sf_getBasisData();
904        $objMailPage = new StdClass();
905        $objMailPage->to_name01 = $arrOrder['order_name01'];
906        $objMailPage->to_name02 = $arrOrder['order_name02'];
907        $objMailPage->CONF = $arrInfo;
908        $objMailPage->uniqid = $secret_key;
909        $objMailView = new SC_SiteView;
910        $objMailView->assignobj($objMailPage);
911        $body = $objMailView->fetch("mobile/mail_templates/customer_mail.tpl");
912
913        $objMail = new GC_SendMail();
914        $objMail->setItem(
915                            ''                                      //¡¡°¸Àè
916                            , sfMakeSubject("²ñ°÷ÅÐÏ¿¤Î¤´³Îǧ")     //¡¡¥µ¥Ö¥¸¥§¥¯¥È
917                            , $body                                 //¡¡ËÜʸ
918                            , $arrInfo['email03']                   //¡¡ÇÛÁ÷¸µ¥¢¥É¥ì¥¹
919                            , $arrInfo['shop_name']                 //¡¡ÇÛÁ÷¸µ¡¡Ì¾Á°
920                            , $arrInfo["email03"]                   //¡¡reply_to
921                            , $arrInfo["email04"]                   //¡¡return_path
922                            , $arrInfo["email04"]                   //  Errors_to
923                            , $arrInfo["email01"]                   //  Bcc
924                                                            );
925        // °¸Àè¤ÎÀßÄê
926        $name = $arrOrder['order_name01'] . $arrOrder['order_name02'] ." ÍÍ";
927        $objMail->setTo($arrOrder['order_email'], $name);
928        $objMail->sendMail();
929    }
930
931    // ¥â¥Ð¥¤¥ë¹ØÆþ´°Î»¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë
932    sfSendOrderMail($order_id, '2');
933}
934
935/**
936 * ¼õÃí°ì»þ¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë
937 *
938 * @param array $arrForm
939 * @param SC_Query $objQuery
940 * @return array|null
941 */
942function lfGetOrderTempConveni($arrForm, $objQuery) {
943    $order_id = $arrForm['X-S_TORIHIKI_NO'];
944    $uniqid   = $arrForm['OPT'];
945    $where    = 'order_id = ? AND order_temp_id = ? AND del_flg = 0';
946    return $objQuery->select('*', 'dtb_order_temp', $where, array($order_id, $uniqid));
947}
948
949function lfSetConvMSG($name, $value){
950    return array("name" => $name, "value" => $value);
951}
952?>
Note: See TracBrowser for help on using the repository browser.