Index: /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs.php
===================================================================
--- /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs.php	(revision 16906)
+++ /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs.php	(revision 16908)
@@ -62,5 +62,5 @@
 function lfInitParam($arrParam = null) {
     $objForm = new SC_FormParam;
-    $objForm->addParam('¥ê¥¯¥¨¥¹¥ÈÀè', 'cybs_request_url', INT_LEN, '', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
+    $objForm->addParam('¥ê¥¯¥¨¥¹¥ÈÀè', 'cybs_request_url', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
     $objForm->addParam('¥Þ¡¼¥Á¥ã¥ó¥ÈID', 'cybs_merchant_id', MTEXT_LEN, '', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
     $objForm->addParam('¸°¡¦¾ÚÌÀ½ñ¥Ñ¥¹', 'cybs_key_path', MTEXT_LEN, '', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'), MDL_CYBS_KEY_PATH);
Index: /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs.inc
===================================================================
--- /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs.inc	(revision 16906)
+++ /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs.inc	(revision 16908)
@@ -2,4 +2,7 @@
 // ¥â¥¸¥å¡¼¥ëÈÖ¹æ
 define('MDL_CYBS_ID', 14);
+
+// ¥í¥°¥Ñ¥¹
+define('MDL_CYBS_LOG', DATA_PATH . 'logs/cybs.log');
 
 // ³ÈÄ¥¥â¥¸¥å¡¼¥ëÌ¾
@@ -10,5 +13,5 @@
 // ¥Æ¥¹¥ÈURL
 define('MDL_CYBS_REQUEST_URL_TEST', 'ics2test.ic3.com');
-//
+// ¥ê¥¯¥¨¥¹¥ÈÀèURLÇÛÎó
 $arrCybsRequestURL = array(
     '1' => MDL_CYBS_REQUEST_URL_TEST,
@@ -18,3 +21,26 @@
 // ¸°¡¦¾ÚÌÀ½ñ¤Î¥Ñ¥¹
 define('MDL_CYBS_KEY_PATH', '/opt/CyberSource/SDK/keys/');
+
+// »ÙÊ§¤¤ÊýË¡
+$arrPayMethod = array(
+    '1-0' => "°ì³çÊ§¤¤",
+    '4-3' => "Ê¬³ä3²óÊ§¤¤",
+    '4-6' => "Ê¬³ä6²óÊ§¤¤",
+    '4-10'=> "Ê¬³ä10²óÊ§¤¤",
+    '4-15'=> "Ê¬³ä15²óÊ§¤¤",
+    '4-20'=> "Ê¬³ä20²óÊ§¤¤",
+    '5-0' => "¥ê¥Ü¥ë¥Ó¥ó¥°Ê§¤¤"
+);
+
+// ics_auth¤Î¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸
+$arrIcsAuthErr = array(
+    'DCALL' => '¥«¡¼¥É²ñ¼Ò¤¬Í¿¿®È½Äê¤ò¼è¤ê¾Ã¤·¤Þ¤·¤¿¡£',
+    'DCARDEXPIRED' => '¥«¡¼¥É¤ÎÍ­¸ú´ü¸ÂÀÚ¤ì¤Ç¤¹¡£',
+    'DCARDREFUSED' => '¥«¡¼¥É²ñ¼Ò¤¬Í¿¿®¤ò¾µÇ§¤·¤Þ¤»¤ó¤Ç¤·¤¿¡£',
+    'DINVALIDCARD' => '¥¯¥ì¥¸¥Ã¥È¥«¡¼¥ÉÈÖ¹æ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£',
+    'DINVALIDDATA' => '¥ê¥¯¥¨¥¹¥È¤Ë´Þ¤Þ¤ì¤ë¥Ç¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹¡£',
+    'DMISSINGFIELD' => '¥ê¥¯¥¨¥¹¥È¤ËÉ¬¿Ü¥Õ¥£¡¼¥ë¥É¤¬·ç¤±¤Æ¤¤¤Þ¤¹¡£',
+    'ESYSTEM' => '¥·¥¹¥Æ¥à¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£',
+    'ETIMEOUT' => '¥ê¥¯¥¨¥¹¥È¤¬¥¿¥¤¥à¥¢¥¦¥È¤·¤Þ¤·¤¿¡£',
+);
 ?>
Index: /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs_credit.tpl
===================================================================
--- /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs_credit.tpl	(revision 16906)
+++ /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs_credit.tpl	(revision 16908)
@@ -63,5 +63,5 @@
 							<tr>
 								<td width="666" class="fs12" bgcolor="#ffffff">
-								<span class="redst"><!--{$tpl_error}--></span>
+								<span class="redst"><!--{$tpl_error|escape|nl2br}--></span>
 								</td>
 							</tr>
Index: /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs_credit.php
===================================================================
--- /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs_credit.php	(revision 16906)
+++ /branches/beta/data/downloads/module/mdl_cybs/mdl_cybs_credit.php	(revision 16908)
@@ -13,4 +13,6 @@
     function LC_Page() {
         $this->tpl_mainpage = MODULE_PATH . 'mdl_cybs/mdl_cybs_credit.tpl';
+        global $arrPayMethod;
+        $this->arrPayMethod = $arrPayMethod;
         /**
          * session_start»þ¤Îno-cache¥Ø¥Ã¥À¡¼¤òÍÞÀ©¤¹¤ë¤³¤È¤Ç
@@ -29,4 +31,10 @@
 $arrInfo = sf_getBasisData();
 
+$objDate = new SC_Date();
+$objDate->setStartYear(RELEASE_YEAR);
+$objDate->setEndYear(RELEASE_YEAR + CREDIT_ADD_YEAR);
+$objPage->arrYear = $objDate->getZeroYear();
+$objPage->arrMonth = $objDate->getZeroMonth();
+
 // ¥æ¡¼¥¶¥æ¥Ë¡¼¥¯ID¤Î¼èÆÀ¤È¹ØÆþ¾õÂÖ¤ÎÀµÅöÀ­¤ò¥Á¥§¥Ã¥¯
 $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess);
@@ -42,5 +50,5 @@
     if ($arrErr = lfCheckError($objForm)) {
         $objPage->arrErr = $arrErr;
-        //break;
+        break;
     }
     // ¥«¡¼¥È½¸·×½èÍý
@@ -50,11 +58,34 @@
     // ¥«¡¼¥È½¸·×¤ò¸µ¤ËºÇ½ª·×»»
     $arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo);
-    $objConfig =& new Mdl_Cybs_Config;
-sfPrintR($objConfig->getConfig());
-    break;
+
+    // ¥ê¥¯¥¨¥¹¥È¤ÎÁ÷¿®
+    gfPrintLog('#### cybs request start ###' , MDL_CYBS_LOG);
+    $arrResults = lfSendRequest($objForm->getHashArray(), $arrData);
+    // ·ë²Ì¤ÎÈ½Äê
+    $e = lfIsError($arrResults);
+    if (PEAR::isError($e)) {
+        gfPrintLog('#### cybs request error ###' , MDL_CYBS_LOG);
+        gfPrintLog('-> cybs request results' , MDL_CYBS_LOG);
+        gfPrintLog(print_r($arrResults, true), MDL_CYBS_LOG);
+        $objPage->tpl_error = $e->getMessage();
+        break;
+    }
+
+    gfPrintLog('#### cybs request successfull ###', MDL_CYBS_LOG);
+    gfPrintLog('-> cybs request results', MDL_CYBS_LOG);
+    gfPrintLog(print_r($arrResults, true), MDL_CYBS_LOG);
+    gfPrintLog('#### cybs request end ###' , MDL_CYBS_LOG);
+
+    // À®¸ù»þ¤Ï´°Î»²èÌÌ¤ØÁ«°Ü
+    $objSiteSess->setRegistFlag();
+    lfRegisterOrderTemp($uniqid, $objForm->getHashArray(), $arrResults);
+    header("Location: " . URL_SHOP_COMPLETE);
+    exit;
 
 // Ìá¤ë¥Ü¥¿¥ó²¡²¼»þ
 case 'return':
-    break;
+    $objSiteSess->setRegistFlag();
+    header("Location: " . URL_SHOP_CONFIRM);
+    exit;
 
 // ÄÌ¾ïÉ½¼¨
@@ -64,4 +95,5 @@
 $objView->assignobj($objPage);
 $objView->display(SITE_FRAME);
+
 
 /**
@@ -81,4 +113,5 @@
     $objForm->addParam("Ì¾", "card_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "ALPHA_CHECK"));
     $objForm->addParam("»ÙÊ§ÊýË¡", "paymethod", STEXT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
+    $objForm->setParam($_POST);;
     return $objForm;
 }
@@ -97,6 +130,15 @@
 }
 
-function lfSendRequest($objForm, $arrData) {
+/**
+ * ¥ê¥¯¥¨¥¹¥È¤òÁ÷¿®¤¹¤ë
+ *
+ * @param array $arrForm
+ * @param array $arrData
+ * @return array
+ */
+function lfSendRequest($arrForm, $arrData) {
+    global $objCartSess;
     global $arrCybsRequestURL;
+    global $arrPref;
 
     $objConfig =& new Mdl_Cybs_Config;
@@ -105,28 +147,99 @@
     $arrConfig = $objConfig->getConfig();
 
-    $objRequest->add_request("server_host",$arrCybsRequestURL[$arrConfig['cybs_request_url']]);
-    $objRequest->add_request("server_port","80");
-    $objRequest->add_request("ics_applications","ics_auth");
-    $objRequest->add_request("merchant_id",$arrConfig['cybs_merchant_id']);
-    $objRequest->add_request("customer_cc_number","4111111111111111");
-    $objRequest->add_request("customer_cc_expmo","02");
-    $objRequest->add_request("customer_cc_expyr","2010");
-    $objRequest->add_request("customer_firstname","ÂÀÏº");
-    $objRequest->add_request("customer_lastname","¥µ¥¤¥Ð¡¼");
-    $objRequest->add_request("customer_email","nobody@cybersourec.co.jp");
-    $objRequest->add_request("customer_phone","11-1111-1111");
-    $objRequest->add_request("bill_address1","¶åÃÊËÌ3-2-5");
-    $objRequest->add_request("bill_address2","Åì¿­¶åÃÊ¥Ó¥ë2F");
-    $objRequest->add_request("bill_city","ÀéÂåÅÄ¶è");
-    $objRequest->add_request("bill_state","ÅìµþÅÔ");
-    $objRequest->add_request("bill_zip","111-1111");
-    $objRequest->add_request("bill_country","JP");
-    $objRequest->add_request("merchant_ref_number","11111");
-    $objRequest->add_request("currency","JPY");
-    $objRequest->add_request("offer0","offerid:0^amount:200");
-}
-
-function lfConvertRequestParam($objForm) {
-
-}
+    $cardNo = $arrForm['card_no01'] . $arrForm['card_no02'] . $arrForm['card_no03'] . $arrForm['card_no04'];
+    $expMo = $arrForm['card_month'];
+    $expyr = '20' . $arrForm['card_year'];
+    $phoneNo = $arrData['order_tel01'] . $arrData['order_tel02'] . $arrData['order_tel03'];
+
+    $objRequest->add_request("server_host", $arrCybsRequestURL[$arrConfig['cybs_request_url']]);
+    $objRequest->add_request("server_port", "80");
+    $objRequest->add_request("ics_applications", "ics_auth");
+    $objRequest->add_request("merchant_id", $arrConfig['cybs_merchant_id']);
+    $objRequest->add_request("customer_cc_number", $cardNo);
+    $objRequest->add_request("customer_cc_expmo", $expMo);
+    $objRequest->add_request("customer_cc_expyr", $expyr);
+    $objRequest->add_request("customer_firstname", lfToSjis($arrData['order_name02']));
+    $objRequest->add_request("customer_lastname", lfToSjis($arrData['order_name01']));
+    $objRequest->add_request("customer_email", $arrData['order_email']);
+    $objRequest->add_request("customer_phone", $phoneNo);
+    $objRequest->add_request("bill_address1", lfToSjis($arrData['order_addr02']));
+    $objRequest->add_request("bill_city", lfToSjis($arrData['order_addr01']));
+    $objRequest->add_request("bill_state", lfToSjis($arrPref[$arrData['order_pref']]));
+    $objRequest->add_request("bill_zip", $arrData['order_zip01'] . $arrData['order_zip02']);
+    $objRequest->add_request("bill_country", "JP");
+    $objRequest->add_request("merchant_ref_number", $arrData['order_id']);
+    $objRequest->add_request("currency", "JPY");
+    // »ÙÊ§¤¤ÊýË¡
+    list($method, $paytimes) = split("-", $arrForm['paymethod']);
+    $objRequest->add_request("jpo_payment_method", $method);
+    if ($paytimes > 0) $objRequest->add_request("jpo_installments", $paytimes);
+
+    $objRequest->add_request("offer0", "offerid:0^amount:" . $arrData['payment_total']);
+
+    $request_array = $objRequest->requests;
+    gfPrintLog(print_r($request_array, true), MDL_CYBS_LOG);
+
+    if( ($result = cybs_send($request_array)) == false ) {
+      print("error");
+      gfPrintLog('#### cybs_send() error ###' , MDL_CYBS_LOG);
+      exit;
+    }
+    return $result;
+}
+
+/**
+ * ¥ê¥¯¥¨¥¹¥È¤Î¥¨¥é¡¼¥Á¥§¥Ã¥¯
+ *
+ * @param array $arrResults
+ * @return boolean|PEAR::Error
+ */
+function lfIsError($arrResults) {
+    global $arrIcsAuthErr;
+    $ret = null;
+
+    switch ($arrResults['ics_rcode']) {
+    // À®¸ù
+    case '1':
+        $ret = true;
+        break;
+    case '0':
+        $msg = "½èÍý¤¬µñÈÝ¤µ¤ì¤Þ¤·¤¿¡£\n" . $arrIcsAuthErr[$arrResults['ics_rflag']];
+        $ret = PEAR::raiseError($msg);
+        break;
+    case '-1':
+        $msg = "¥·¥¹¥Æ¥à¤Þ¤¿¤Ï¥Í¥Ã¥È¥ï¡¼¥¯¥¨¥é¡¼¤Ë¤è¤ê½èÍý¤¬¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤·¤¿¡£\n" . $arrIcsAuthErr[$arrResults['ics_rflag']];
+        $ret = PEAR::raiseError($msg);
+        break;
+    default:
+        $ret = PEAR::raiseError("ÉÔÌÀ¤Ê¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£\n");
+    }
+
+    return $ret;
+}
+
+/**
+ * SJIS¤ØÊÑ´¹¤¹¤ë
+ *
+ * @param string $str
+ * @return string
+ */
+function lfToSjis($str) {
+    return mb_convert_encoding($str, 'SJIS', CHAR_CODE);
+}
+
+/**
+ * ÆþÎÏ¾ðÊó¤ò°ìÉôµ­Ï¿
+ *
+ * @param string $uniqid
+ * @param array $arrForm
+ */
+function lfRegisterOrderTemp($uniqid, $arrForm, $arrResults) {
+    $sqlval = array();
+    $sqlval['memo03'] = $arrForm['card_name01'] . " " . $arrForm['card_name02'];
+    $sqlval['memo02'] = serialize($arrResults['auth_auth_code']);
+
+    $objQuery = new SC_Query;
+    $objQuery->update("dtb_order_temp", $sqlval, "order_temp_id = ?", array($uniqid));
+}
+
 ?>
