/** * @brief pay */ function procInipayDoIt() { $oEpayController =& getController('epay'); $inipayhome = sprintf(_XE_PATH_ . "files/epay/%s", Context::get('module_srl')); $vars = Context::getRequestVars(); $output = $oEpayController->beforePayment($vars); if (!$output->toBool()) { return $output; } $goodname = Context::get('goodname'); $currency = Context::get('currency'); require "libs/INILib.php"; $inipay = new INIpay50(); $inipay->SetField("inipayhome", $inipayhome); $inipay->SetField("type", "securepay"); $inipay->SetField("pgid", "INIphp" . $pgid); // $pgid is global var which defined in INICls.php $inipay->SetField("subpgip", "203.238.3.10"); $inipay->SetField("admin", $_SESSION['INI_ADMIN']); $inipay->SetField("debug", "true"); $inipay->SetField("uid", $uid); $inipay->SetField("goodname", iconv("UTF-8", "EUC-KR", $goodname)); $inipay->SetField("currency", $currency); $inipay->SetField("mid", $_SESSION['INI_MID']); $inipay->SetField("rn", $_SESSION['INI_RN']); $inipay->SetField("price", $_SESSION['INI_PRICE']); $inipay->SetField("enctype", $_SESSION['INI_ENCTYPE']); $inipay->SetField("buyername", iconv("UTF-8", "EUC-KR", Context::get('buyername'))); $inipay->SetField("buyertel", Context::get('buyertel')); $inipay->SetField("buyeremail", Context::get('buyeremail')); $inipay->SetField("paymethod", Context::get('paymethod')); $inipay->SetField("encrypted", Context::get('encrypted')); $inipay->SetField("sessionkey", Context::get('sessionkey')); $inipay->SetField("url", 'www.nurigo.net'); $inipay->SetField("cardcode", Context::get('cardcode')); $inipay->SetField("parentemail", Context::get('parentemail')); $inipay->SetField("recvname", Context::get('recvname')); $inipay->SetField("recvtel", Context::get('recvtel')); $inipay->SetField("recvaddr", Context::get('recvaddr')); $inipay->SetField("recvpostnum", Context::get('recvpostnum')); $inipay->SetField("recvmsg", Context::get('recvmsg')); $inipay->SetField("joincard", Context::get('joincard')); $inipay->SetField("joinexpire", Context::get('joinexpire')); $inipay->SetField("id_customer", Context::get('id_customer')); // 지불요청 $inipay->startAction(); $utf8ResultMsg = iconv('EUC-KR', 'UTF-8', $inipay->GetResult('ResultMsg')); $utf8VACTName = iconv('EUC-KR', 'UTF-8', $inipay->GetResult('VACT_Name')); $utf8VACTInputName = iconv('EUC-KR', 'UTF-8', $inipay->GetResult('VACT_InputName')); // error check if ($inipay->GetResult('ResultCode') != '00') { $payArgs = new Object(-1, $utf8ResultMsg); $payArgs->add('state', '3'); // failure } else { $payArgs = new Object(0, $utf8ResultMsg); if ($this->getPaymethod(Context::get('paymethod')) == 'VA') { $payArgs->add('state', '1'); // not completed } else { $payArgs->add('state', '2'); // completed (success) } } $payArgs->add('transaction_srl', Context::get('transaction_srl')); $payArgs->add('payment_method', $this->getPaymethod(Context::get('paymethod'))); $payArgs->add('payment_amount', $_SESSION['INI_PRICE']); $payArgs->add('result_code', $inipay->GetResult('ResultCode')); $payArgs->add('result_message', $utf8ResultMsg); $payArgs->add('vact_num', $inipay->GetResult('VACT_Num')); // 계좌번호 $payArgs->add('vact_bankname', $this->getBankName($inipay->GetResult('VACT_BankCode'))); //은행코드 $payArgs->add('vact_bankcode', $inipay->GetResult('VACT_BankCode')); //은행코드 $payArgs->add('vact_name', $utf8VACTName); // 예금주 $payArgs->add('vact_inputname', $utf8VACTInputName); // 송금자 $payArgs->add('vact_regnum', $inipay->GetResult('VACT_RegNum')); //송금자 주번 $payArgs->add('vact_date', $inipay->GetResult('VACT_Date')); // 송금일자 $payArgs->add('vact_time', $inipay->GetResult('VACT_Time')); // 송금시간 $payArgs->add('pg_tid', $inipay->GetResult('TID')); // afterPayment will call an after trigger and returns return_url in $output $output = $oEpayController->afterPayment($payArgs); if (!$output->toBool()) { return $output; } $return_url = $output->get('return_url'); if ($return_url) { $this->setRedirectUrl($return_url); } }
function ajax_inicis_vbank_order_cancelled() { global $inicis_payment; $post_id = $_POST['post_id']; $after_refund_order_status = $this->settings['order_status_after_refund']; $received_tid = get_post_meta($post_id, 'inicis_vbank_noti_received_tid', true); $vbank_refund_bankcode = get_post_meta($post_id, 'vbank_refund_bankcode', true); $vbank_refund_vaccnum = get_post_meta($post_id, 'vbank_refund_vaccnum', true); $vbank_refund_vaccname = get_post_meta($post_id, 'vbank_refund_vaccname', true); $vbank_refund_reason = get_post_meta($post_id, 'vbank_refund_reason', true); if (isset($_POST['inicis_vbank_refund_request']) || wp_verify_nonce($_POST['inicis_vbank_refund_request'], 'inicis_vbank_refund_request')) { if (!file_exists($inicis_payment->plugin_path() . "/lib/inipay50/INILib.php")) { die('<span style="color:red;font-weight:bold;">' . __('에러 : INILib.php 파일이 없습니다. 사이트 관리자에게 문의하여 주십시오.', 'inicis_payment') . '</span>'); wc_add_notice(__('에러 : INILib.php 파일이 없습니다. 사이트 관리자에게 문의하여 주십시오.', 'inicis_payment'), 'error'); } require_once $inicis_payment->plugin_path() . "/lib/inipay50/INILib.php"; $inipay = new INIpay50(); $inipay->SetField("inipayhome", $this->settings['libfolder']); // 이니페이 홈디렉터리(상점수정 필요) $inipay->SetField("type", "refund"); // 고정 (절대 수정 불가) $inipay->SetField("debug", "true"); // 로그모드("true"로 설정하면 상세로그가 생성됨.) $inipay->SetField("mid", $this->settings['merchant_id']); // 상점아이디 $inipay->SetField("admin", "1111"); //비대칭 사용키 키패스워드 //$inipay->SetField("pgn", $pgn); //pgn 파라미터 값의 의미를 알수가 없음 $inipay->SetField("tid", $received_tid); // 환불할 거래의 거래아이디 $inipay->SetField("cancelmsg", mb_convert_encoding($vbank_refund_reason, "EUC-KR", "UTF-8")); // 환불사유 $inipay->SetField("racctnum", $vbank_refund_vaccnum); $inipay->SetField("rbankcode", $vbank_refund_bankcode); $inipay->SetField("racctname", mb_convert_encoding($vbank_refund_vaccname, "EUC-KR", "UTF-8")); $inipay->startAction(); $order = new WC_Order($post_id); if ($inipay->getResult('ResultCode') == '00') { //성공 $order->update_status($after_refund_order_status); $order->add_order_note(sprintf(__('관리자의 요청으로 주문건의 가상계좌 환불처리가 완료되었습니다. 결과코드 : %s, 처리메시지 : %s, 거래번호 : %s, 취소날짜 : %s, 취소시간 : %s, 현금영수증 환불승인번호 : %s', 'inicis_payment'), $inipay->getResult('ResultCode'), mb_convert_encoding($inipay->GetResult('ResultMsg'), "UTF-8", "EUC-KR"), $received_tid, $inipay->getResult('CancelDate'), $inipay->getResult('CancelTime'), $inipay->getResult('CSHR_CancelNum'))); update_post_meta($post_id, 'inicis_paymethod_vbank_refunded', 'yes'); wp_send_json_success(__('관리자의 요청으로 주문건의 가상계좌 환불처리가 완료되었습니다.', 'inicis_payment')); } else { //실패 $order = new WC_Order($post_id); $order->add_order_note(sprintf(__('관리자의 요청으로 주문건의 가상계좌 환불처리가 실패하였습니다. 결과코드 : %s, 처리메시지 : %s, 거래번호 : %s, 취소날짜 : %s, 취소시간 : %s, 현금영수증 환불승인번호 : %s', 'inicis_payment'), $inipay->getResult('ResultCode'), mb_convert_encoding($inipay->GetResult('ResultMsg'), "UTF-8", "EUC-KR"), $received_tid, $inipay->getResult('CancelDate'), $inipay->getResult('CancelTime'), $inipay->getResult('CSHR_CancelNum'))); wp_send_json_error(__('관리자의 요청으로 주문건의 가상계좌 환불처리가 실패하였습니다. 환불계좌 정보를 다시 한번 확인 하신 후 환불하기를 진행해주세요.', 'inicis_payment')); } } else { //nonce 인증 실패시 $order = new WC_Order($post_id); $order->add_order_note(sprintf(__('가상계좌 환불처리 요청이 실패하였습니다. 허용되지 않은 취소 신청입니다. 아이피 : %s', 'inicis_payment'), getenv("REMOTE_ADDR"))); wp_send_json_error(__('가상계좌 환불처리 요청이 실패하였습니다. 허용되지 않은 취소 신청입니다.', 'inicis_payment')); } }
function procEscrowDenyConfirm() { $inipayhome = sprintf(_XE_PATH_ . "files/epay/%s", $this->plugin_info->plugin_srl); $vars = Context::getRequestVars(); debugPrint('procEscrowDenyConfirm'); debugPrint($vars); extract(get_object_vars($vars)); /************************** * 1. 라이브러리 인클루드 * **************************/ require "libs/INILib.php"; /*************************************** * 2. INIpay50 클래스의 인스턴스 생성 * ***************************************/ $iniescrow = new INIpay50(); /********************* * 3. 지불 정보 설정 * *********************/ $iniescrow->SetField("inipayhome", $inipayhome); $iniescrow->SetField("tid", Context::get('tid')); $iniescrow->SetField("mid", $this->plugin_info->inicis_id); $iniescrow->SetField("admin", $this->plugin_info->inicis_pass); $iniescrow->SetField("type", "escrow"); $iniescrow->SetField("escrowtype", "dcnf"); // 고정 (절대 수정 불가) $iniescrow->SetField("dcnf_name", $dcnf_name); $iniescrow->SetField("debug", "true"); /********************* * 3. 거절확인 요청 * *********************/ $iniescrow->startAction(); /********************** * 4. 거절확인 결과 * **********************/ debugPrint($iniescrow->m_Data); $tid = $iniescrow->GetResult("tid"); // 거래번호 $resultCode = $iniescrow->GetResult("ResultCode"); // 결과코드 ("00"이면 지불 성공) $resultMsg = $iniescrow->GetResult("ResultMsg"); // 결과내용 (지불결과에 대한 설명) $resultDate = $iniescrow->GetResult("DCNF_Date"); // 처리 날짜 $resultTime = $iniescrow->GetResult("DCNF_Time"); // 처리 시각 Context::set('tid', $tid); Context::set('resultCode', $resultCode); Context::set('resultMsg', $resultMsg); Context::set('resultDate', $resultDate); Context::set('resultTime', $resultTime); $oTemplate =& TemplateHandler::getInstance(); $tpl_path = _XE_PATH_ . "modules/epay/plugins/iniescrow/tpl"; $tpl_file = 'escrow_denyconfirm_result.html'; $tpl = $oTemplate->compile($tpl_path, $tpl_file); $output = new Object(); if (!$resultCode != '00') { $output->setError(-1); } $output->add('order_srl', Context::get('order_srl')); $output->add('denyconfirm_code', $resultCode); $output->add('denyconfirm_message', iconv('EUC-KR', 'UTF-8', $resultMsg)); $output->add('denyconfirm_date', $resultDate . $resultTime); $output->setMessage($tpl); return $output; }
function successful_request_cancelled($posted) { global $woocommerce, $inicis_payment; require_once $inicis_payment->plugin_path() . "/lib/inipay50/INILib.php"; $inipay = new INIpay50(); //$inipay->SetField("inipayhome", $_REQUEST['home']); $inipay->SetField("inipayhome", $this->settings['libfolder']); $inipay->SetField("type", "cancel"); $inipay->SetField("debug", "true"); $inipay->SetField("mid", $_REQUEST['mid']); $inipay->SetField("admin", "1111"); $inipay->SetField("tid", $_REQUEST['tid']); $inipay->SetField("cancelmsg", $_REQUEST['msg']); if ($code != "") { $inipay->SetField("cancelcode", $_REQUEST['code']); } $inipay->startAction(); if ($inipay->getResult('ResultCode') == "00") { echo "success"; return; //exit(); } else { echo $inipay->getResult('ResultMsg'); return; //exit(); } }
// 에스크로결제 테스트 $useescrow = ':useescrow'; } else { // 일반결제 테스트 $useescrow = ''; } } /************************** * 1. 라이브러리 인클루드 * **************************/ require G5_SHOP_PATH . '/inicis/libs/INILib.php'; /*************************************** * 2. INIpay50 클래스의 인스턴스 생성 * ***************************************/ $inipay = new INIpay50(); $inipay->SetField("inipayhome", G5_SHOP_PATH . '/inicis'); // 이니페이 홈디렉터리(상점수정 필요) $inipay->SetField("debug", "false"); // 로그모드("true"로 설정하면 상세로그가 생성됨.) $inipay_nointerest = 'no'; //무이자여부(no:일반, yes:무이자) $inipay_quotabase = '선택:일시불:2개월:3개월:4개월:5개월:6개월:7개월:8개월:9개월:10개월:11개월:12개월'; // 할부기간 $BANK_CODE = array('03' => '기업은행', '04' => '국민은행', '05' => '외환은행', '07' => '수협중앙회', '11' => '농협중앙회', '20' => '우리은행', '23' => 'SC 제일은행', '31' => '대구은행', '32' => '부산은행', '34' => '광주은행', '37' => '전북은행', '39' => '경남은행', '53' => '한국씨티은행', '71' => '우체국', '81' => '하나은행', '88' => '신한은행', 'D1' => '동양종합금융증권', 'D2' => '현대증권', 'D3' => '미래에셋증권', 'D4' => '한국투자증권', 'D5' => '우리투자증권', 'D6' => '하이투자증권', 'D7' => 'HMC 투자증권', 'D8' => 'SK 증권', 'D9' => '대신증권', 'DA' => '하나대투증권', 'DB' => '굿모닝신한증권', 'DC' => '동부증권', 'DD' => '유진투자증권', 'DE' => '메리츠증권', 'DF' => '신영증권'); $CARD_CODE = array('01' => '외환', '03' => '롯데', '04' => '현대', '06' => '국민', '11' => 'BC', '12' => '삼성', '14' => '신한', '15' => '한미', '16' => 'NH', '17' => '하나 SK', '21' => '해외비자', '22' => '해외마스터', '23' => 'JCB', '24' => '해외아멕스', '25' => '해외다이너스'); $PAY_METHOD = array('VCard' => '신용카드', 'Card' => '신용카드', 'DirectBank' => '계좌이체', 'HPP' => '휴대폰', 'VBank' => '가상계좌'); // 플러그인 호출 URL if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { $ini_js_url = 'https://plugin.inicis.com/pay61_secunissl_cross.js'; } else { $ini_js_url = 'http://plugin.inicis.com/pay61_secuni_cross.js';
* * http://www.inicis.com * Copyright (C) 2007 Inicis, Co. All rights reserved. */ /* * ************************ * 1. 라이브러리 인클루드 * * ************************ */ require "../libs/INILib.php"; /* * ************************************* * 2. INIpay41 클래스의 인스턴스 생성 * * ************************************* */ $inipay = new INIpay50(); /* * ******************* * 3. 취소 정보 설정 * * ******************* */ $inipay->SetField("inipayhome", "/home/ts/www/INIpay50"); // 이니페이 홈디렉터리(상점수정 필요) $inipay->SetField("type", "cancel"); // 고정 (절대 수정 불가) $inipay->SetField("debug", "true"); // 로그모드("true"로 설정하면 상세로그가 생성됨.) $inipay->SetField("mid", $mid); // 상점아이디 /* * ************************************************************************************************ * admin 은 키패스워드 변수명입니다. 수정하시면 안됩니다. 1111의 부분만 수정해서 사용하시기 바랍니다. * 키패스워드는 상점관리자 페이지(https://iniweb.inicis.com)의 비밀번호가 아닙니다. 주의해 주시기 바랍니다. * 키패스워드는 숫자 4자리로만 구성됩니다. 이 값은 키파일 발급시 결정됩니다. * 키패스워드 값을 확인하시려면 상점측에 발급된 키파일 안의 readme.txt 파일을 참조해 주십시오. * ************************************************************************************************ */ $inipay->SetField("admin", "1111"); $inipay->SetField("tid", $tid);
/** * @brief epay.getPaymentForm 에서 호출됨 */ function dispInipayForm() { $oEpayController =& getController('epay'); $inipayhome = sprintf(_XE_PATH_ . "files/epay/%s", $this->module_info->module_srl); // get products info using cartnos $reviewOutput = $oEpayController->reviewOrder(); if (!$reviewOutput->toBool()) { return $reviewOutput; } Context::set('transaction_srl', $reviewOutput->transaction_srl); Context::set('order_srl', $reviewOutput->order_srl); Context::set('review_form', $reviewOutput->review_form); Context::set('item_name', $reviewOutput->item_name); Context::set('price', $reviewOutput->price); Context::set('purchaser_name', $reviewOutput->purchaser_name); Context::set('purchaser_email', $reviewOutput->purchaser_email); Context::set('purchaser_telnum', $reviewOutput->purchaser_telnum); // set acceptmethod options if ($this->module_info->method_mobilephone == 'Y') { $HPP = '1'; } if ($this->module_info->method_mobilephone == 'M') { $HPP = '2'; } $acceptmethod = sprintf("SKIN(%s):HPP(%s):Card(0):OCB:receipt:cardpoint", $this->module_info->paywin_skin, $HPP); if ($this->module_info->va_receipt == 'Y') { $acceptmethod .= ':va_receipt'; } Context::set('acceptmethod', $acceptmethod); require "libs/INILib.php"; $inipay = new INIpay50(); $inipay->SetField("inipayhome", $inipayhome); $inipay->SetField("type", "chkfake"); $inipay->SetField("debug", "true"); $inipay->SetField("enctype", "asym"); $inipay->SetField("admin", $this->module_info->inicis_pass); $inipay->SetField("checkopt", "false"); $inipay->SetField("mid", $this->module_info->inicis_id); $inipay->SetField("price", $reviewOutput->price); $inipay->SetField("nointerest", "no"); $inipay->SetField("quotabase", iconv('UTF-8', 'EUC-KR', '선택:일시불:2개월:3개월:6개월')); /* 암호화 대상/값을 암호화 */ $inipay->startAction(); /* 암호화 결과 */ if ($inipay->GetResult("ResultCode") != "00") { $resultMsg = iconv("EUC-KR", "UTF-8", $inipay->GetResult("ResultMsg")); return new Object(-1, $resultMsg); } /* 세션정보 저장 */ $_SESSION['INI_MID'] = $this->module_info->inicis_id; //상점ID $_SESSION['INI_ADMIN'] = $this->module_info->inicis_pass; // 키패스워드(키발급시 생성, 상점관리자 패스워드와 상관없음) $_SESSION['INI_PRICE'] = $reviewOutput->price; //가격 $_SESSION['INI_RN'] = $inipay->GetResult("rn"); //고정 (절대 수정 불가) $_SESSION['INI_ENCTYPE'] = $inipay->GetResult("enctype"); //고정 (절대 수정 불가) Context::set('encfield', $inipay->GetResult('encfield')); Context::set('certid', $inipay->GetResult('certid')); Context::set('inicis_id', $this->module_info->inicis_id); // payment method 변환 <-- CC, IB, VA, MP 를 결제모듈에서 정의된 것으로 대체할 수 있으면 좋겠음. $payment_method = Context::get('payment_method'); switch ($payment_method) { case "CC": $payment_method = "Card"; break; case "IB": $payment_method = "DirectBank"; break; case "VA": $payment_method = "VBank"; break; case "MP": $payment_method = "HPP"; break; default: $payment_method = "Card"; } Context::set('payment_method', $payment_method); $this->setTemplateFile('formdata'); }
function pay_callback() { global $woocommerce; global $woocommerce_ver21_less; @ob_clean(); header('Content-type: text/html; charset=euc-kr'); foreach ($_POST as $key => $row) { $_POST[$key] = iconv("UTF-8", "EUC-KR", $row); } $order_id = $_POST["oid"]; $order = new WC_Order($order_id); /* INIsecurepay.php * * 이니페이 플러그인을 통해 요청된 지불을 처리한다. * 지불 요청을 처리한다. * 코드에 대한 자세한 설명은 매뉴얼을 참조하십시오. * <주의> 구매자의 세션을 반드시 체크하도록하여 부정거래를 방지하여 주십시요. * * http://www.inicis.com * Copyright (C) 2006 Inicis Co., Ltd. All rights reserved. */ /**************************** * 0. 세션 시작 * ****************************/ // session_start(); //주의:파일 최상단에 위치시켜주세요!! $inicis_session_vars = (array) get_user_meta(get_current_user_id(), wskl_get_option_name('inicis_session_vars'), TRUE); /************************** * 1. 라이브러리 인클루드 * **************************/ require_once dirname(__FILE__) . '/homeinicis/libs/INILib.php'; /*************************************** * 2. INIpay50 클래스의 인스턴스 생성 * ***************************************/ $inipay = new INIpay50(); /********************* * 3. 지불 정보 설정 * *********************/ //$inipay->SetField("inipayhome", "/home/ts/www/INIpay50"); // 이니페이 홈디렉터리(상점수정 필요) // 이니페이 홈디렉터리(상점수정 필요) $inipay->SetField("inipayhome", dirname(__FILE__) . '/homeinicis'); // 고정 (절대 수정 불가) $inipay->SetField("type", "securepay"); // 고정 (절대 수정 불가) $inipay->SetField("pgid", "INIphp" . $pgid); // 고정 (절대 수정 불가) $inipay->SetField("subpgip", "203.238.3.10"); // 키패스워드(상점아이디에 따라 변경) //$inipay->SetField( "admin", $_SESSION['INI_ADMIN'] ); // 키패스워드(상점아이디에 따라 변경) $inipay->SetField("admin", $inicis_session_vars['INI_ADMIN']); // 로그모드("true"로 설정하면 상세로그가 생성됨.) $inipay->SetField("debug", "true"); // INIpay User ID (절대 수정 불가) $inipay->SetField("uid", $uid); // 상품명 $inipay->SetField("goodname", $goodname); // 화폐단위 $inipay->SetField("currency", $currency); //$inipay->SetField( "mid", $_SESSION['INI_MID'] ); // 상점아이디 // 상점아이디 $inipay->SetField("mid", $inicis_session_vars['INI_MID']); // 웹페이지 위변조용 RN값 //$inipay->SetField( "rn", $_SESSION['INI_RN'] ); // 웹페이지 위변조용 RN값 $inipay->SetField("rn", $inicis_session_vars['INI_RN']); //$inipay->SetField( "price", $_SESSION['INI_PRICE'] ); // 가격 // 가격 $inipay->SetField("price", $inicis_session_vars['INI_PRICE']); //$inipay->SetField( "enctype", // $_SESSION['INI_ENCTYPE'] );// 고정 (절대 수정 불가) // 고정 (절대 수정 불가) $inipay->SetField("enctype", $inicis_session_vars['INI_ENCTYPE']); /*---------------------------------------------------------------------------------------- price 등의 중요데이터는 브라우저상의 위변조여부를 반드시 확인하셔야 합니다. 결제 요청페이지에서 요청된 금액과 실제 결제가 이루어질 금액을 반드시 비교하여 처리하십시오. 설치 메뉴얼 2장의 결제 처리페이지 작성부분의 보안경고 부분을 확인하시기 바랍니다. 적용참조문서: 이니시스홈페이지->가맹점기술지원자료실->기타자료실 의 '결제 처리 페이지 상에 결제 금액 변조 유무에 대한 체크' 문서를 참조하시기 바랍니다. 예제) 원 상품 가격 변수를 OriginalPrice 하고 원 가격 정보를 리턴하는 함수를 Return_OrgPrice()라 가정하면 다음 같이 적용하여 원가격과 웹브라우저에서 Post되어 넘어온 가격을 비교 한다. $OriginalPrice = Return_OrgPrice(); $PostPrice = $_SESSION['INI_PRICE']; if ( $OriginalPrice != $PostPrice ) { //결제 진행을 중단하고 금액 변경 가능성에 대한 메시지 출력 처리 //처리 종료 } ----------------------------------------------------------------------------------------*/ $inipay->SetField("buyername", $buyername); // 구매자 명 // 구매자 연락처(휴대폰 번호 또는 유선전화번호) $inipay->SetField("buyertel", $buyertel); // 구매자 이메일 주소 $inipay->SetField("buyeremail", $buyeremail); // 지불방법 (절대 수정 불가) $inipay->SetField("paymethod", $paymethod); // 암호문 $inipay->SetField("encrypted", $encrypted); // 암호문 $inipay->SetField("sessionkey", $sessionkey); // 실제 서비스되는 상점 SITE URL로 변경할것 // $inipay->SetField( "url", $_SESSION['inicis_url'] ); $inipay->SetField("url", $inicis_session_vars['inicis_url']); $inipay->SetField("cardcode", $cardcode); // 카드코드 리턴 // 보호자 이메일 주소(핸드폰 , 전화결제시에 14세 미만의 고객이 결제하면 부모 이메일로 결제 내용통보 의무, 다른결제 수단 사용시에 삭제 가능) $inipay->SetField("parentemail", $parentemail); /*-----------------------------------------------------------------* * 수취인 정보 * * *-----------------------------------------------------------------* * 실물배송을 하는 상점의 경우에 사용되는 필드들이며 * * 아래의 값들은 INIsecurepay.html 페이지에서 포스트 되도록 * * 필드를 만들어 주도록 하십시요. * * 컨텐츠 제공업체의 경우 삭제하셔도 무방합니다. * *-----------------------------------------------------------------*/ $inipay->SetField("recvname", $recvname); // 수취인 명 $inipay->SetField("recvtel", $recvtel); // 수취인 연락처 $inipay->SetField("recvaddr", $recvaddr); // 수취인 주소 $inipay->SetField("recvpostnum", $recvpostnum); // 수취인 우편번호 $inipay->SetField("recvmsg", $recvmsg); // 전달 메세지 $inipay->SetField("joincard", $joincard); // 제휴카드코드 $inipay->SetField("joinexpire", $joinexpire); // 제휴카드유효기간 $inipay->SetField("id_customer", $id_customer); //user_id $inipay->SetField("log", "false"); // 로깅은 생략합니다. /**************** * 4. 지불 요청 * ****************/ $inipay->startAction(); /**************************************************************************************************************** * 5. 결제 결과 * * 1 모든 결제 수단에 공통되는 결제 결과 데이터 * 거래번호 : $inipay->GetResult('TID') * 결과코드 : $inipay->GetResult('ResultCode') ("00"이면 지불 성공) * 결과내용 : $inipay->GetResult('ResultMsg') (지불결과에 대한 설명) * 지불방법 : $inipay->GetResult('PayMethod') (매뉴얼 참조) * 상점주문번호 : $inipay->GetResult('MOID') * 결제완료금액 : $inipay->GetResult('TotPrice') * * 결제 되는 금액 =>원상품가격과 결제결과금액과 비교하여 금액이 동일하지 않다면 * 결제 금액의 위변조가 의심됨으로 정상적인 처리가 되지않도록 처리 바랍니다. (해당 거래 취소 처리) * * * 2. 신용카드,ISP,핸드폰, 전화 결제, 은행계좌이체, OK CASH BAG Point 결제 결과 데이터 * (무통장입금 , 문화 상품권 포함) * 이니시스 승인날짜 : $inipay->GetResult('ApplDate') (YYYYMMDD) * 이니시스 승인시각 : $inipay->GetResult('ApplTime') (HHMMSS) * * 3. 신용카드 결제 결과 데이터 * * 신용카드 승인번호 : $inipay->GetResult('ApplNum') * 할부기간 : $inipay->GetResult('CARD_Quota') * 무이자할부 여부 : $inipay->GetResult('CARD_Interest') ("1"이면 무이자할부) * 신용카드사 코드 : $inipay->GetResult('CARD_Code') (매뉴얼 참조) * 카드발급사 코드 : $inipay->GetResult('CARD_BankCode') (매뉴얼 참조) * 본인인증 수행여부 : $inipay->GetResult('CARD_AuthType') ("00"이면 수행) * 각종 이벤트 적용 여부 : $inipay->GetResult('EventCode') * * ** 달러결제 시 통화코드와 환률 정보 ** * 해당 통화코드 : $inipay->GetResult('OrgCurrency') * 환율 : $inipay->GetResult('ExchangeRate') * * 아래는 "신용카드 및 OK CASH BAG 복합결제" 또는"신용카드 지불시에 OK CASH BAG적립"시에 추가되는 데이터 * OK Cashbag 적립 승인번호 : $inipay->GetResult('OCB_SaveApplNum') * OK Cashbag 사용 승인번호 : $inipay->GetResult('OCB_PayApplNum') * OK Cashbag 승인일시 : $inipay->GetResult('OCB_ApplDate') (YYYYMMDDHHMMSS) * OCB 카드번호 : $inipay->GetResult('OCB_Num') * OK Cashbag 복합결재시 신용카드 지불금액 : $inipay->GetResult('CARD_ApplPrice') * OK Cashbag 복합결재시 포인트 지불금액 : $inipay->GetResult('OCB_PayPrice') * * 4. 실시간 계좌이체 결제 결과 데이터 * * 은행코드 : $inipay->GetResult('ACCT_BankCode') * 현금영수증 발행결과코드 : $inipay->GetResult('CSHR_ResultCode') * 현금영수증 발행구분코드 : $inipay->GetResult('CSHR_Type') * * * 5. OK CASH BAG 결제수단을 이용시에만 결제 결과 데이터 * OK Cashbag 적립 승인번호 : $inipay->GetResult('OCB_SaveApplNum') * OK Cashbag 사용 승인번호 : $inipay->GetResult('OCB_PayApplNum') * OK Cashbag 승인일시 : $inipay->GetResult('OCB_ApplDate') (YYYYMMDDHHMMSS) * OCB 카드번호 : $inipay->GetResult('OCB_Num') * * 6. 무통장 입금 결제 결과 데이터 * * 가상계좌 채번에 사용된 주민번호 : $inipay->GetResult('VACT_RegNum') * * 가상계좌 번호 : $inipay->GetResult('VACT_Num') * * 입금할 은행 코드 : $inipay->GetResult('VACT_BankCode') * * 입금예정일 : $inipay->GetResult('VACT_Date') (YYYYMMDD) * * 송금자 명 : $inipay->GetResult('VACT_InputName') * * 예금주 명 : $inipay->GetResult('VACT_Name') * * * * 7. 핸드폰, 전화 결제 결과 데이터( "실패 내역 자세히 보기"에서 필요 , 상점에서는 필요없는 정보임) * * 전화결제 사업자 코드 : $inipay->GetResult('HPP_GWCode') * * * * 8. 핸드폰 결제 결과 데이터 * * 휴대폰 번호 : $inipay->GetResult('HPP_Num') (핸드폰 결제에 사용된 휴대폰번호) * * * * 9. 전화 결제 결과 데이터 * * 전화번호 : $inipay->GetResult('ARSB_Num') (전화결제에 사용된 전화번호) * * * * 10. 문화 상품권 결제 결과 데이터 * * 컬쳐 랜드 ID : $inipay->GetResult('CULT_UserID') * * * * 11. K-merce 상품권 결제 결과 데이터 (K-merce ID, 틴캐시 아이디 공통사용) * * K-merce ID : $inipay->GetResult('CULT_UserID') * * * * 12. 모든 결제 수단에 대해 결제 실패시에만 결제 결과 데이터 * * 에러코드 : $inipay->GetResult('ResultErrorCode') * * * * 13.현금영수증 발급 결과코드 (은행계좌이체시에만 리턴) * * $inipay->GetResult('CSHR_ResultCode') * * * * 14.틴캐시 잔액 데이터 * * $inipay->GetResult('TEEN_Remains') * * 틴캐시 ID : $inipay->GetResult('CULT_UserID') * * 15.게임문화 상품권 * * 사용 카드 갯수 : $inipay->GetResult('GAMG_Cnt') * * * ****************************************************************************************************************/ /******************************************************************* * 7. DB연동 실패 시 강제취소 * * * * 지불 결과를 DB 등에 저장하거나 기타 작업을 수행하다가 실패하는 * * 경우, 아래의 코드를 참조하여 이미 지불된 거래를 취소하는 코드를 * * 작성합니다. * *******************************************************************/ /* $cancelFlag = "false"; // $cancelFlag를 "ture"로 변경하는 condition 판단은 개별적으로 // 수행하여 주십시오. if($cancelFlag == "true") { $TID = $inipay->GetResult("TID"); $inipay->SetField("type", "cancel"); // 고정 $inipay->SetField("tid", $TID); // 고정 $inipay->SetField("cancelmsg", "DB FAIL"); // 취소사유 $inipay->startAction(); if($inipay->GetResult('ResultCode') == "00") { $inipay->MakeTXErrMsg(MERCHANT_DB_ERR,"Merchant DB FAIL"); } } */ //print_r($inipay->GetResult('ResultCode')); if ($woocommerce_ver21_less) { // $return_url = add_query_arg( 'key', $order->order_key, // add_query_arg( 'order', $order_id, // get_permalink( woocommerce_get_page_id( 'thanks' ) ) ) ); $return_url = add_query_arg(array('key' => $order->order_key, 'order' => $order_id), get_permalink(woocommerce_get_page_id('thanks'))); } else { $return_url = $this->get_return_url($order); } if ($inipay->GetResult('ResultCode') == "00") { $order->add_order_note(sprintf(__('결제가 성공적으로 처리됨.<br/>결제방법: %s<br/>이니시스 TID: %s. 발생시각: %s.', 'wskl'), $this->method, '111', date('Y-m-d H:i:s'))); // Complete payment, reduce stock levels & remove cart $order->payment_complete(); $order->reduce_order_stock(); $woocommerce->cart->empty_cart(); } else { // 결제실패에 따른 상점처리부분 $res_msg = iconv('euc-kr', 'utf-8', $inipay->GetResult('ResultMsg')); $order->update_status('failed', sprintf(__('결제처리 안됨.<br/>-에러메시지 : %s<br/>-발생시각: %s.', 'wskl'), $res_msg, date('Y-m-d H-i-s'))); //$cart_url = $woocommerce->cart->get_cart_url(); // wp_redirect($cart_url); } // inicis_session_vars 제거 delete_user_meta(get_current_user_id(), wskl_get_option_name('inicis_session_vars')); ?> <body onload="pay_info.submit();"> <form name="pay_info" method="post" action="<?php echo $return_url; ?> "> <input type="hidden" name="order_id" value="<?php echo $order_id; ?> "> <input type="hidden" name="TID" value="<?php echo $inipay->GetResult('TID'); ?> "> <input type="hidden" name="ResultCode" value="<?php echo $inipay->GetResult('ResultCode'); ?> "> <input type="hidden" name="ResultMsg" value="<?php echo $inipay->GetResult('ResultMsg'); ?> "> <input type="hidden" name="PayMethod" value="<?php echo $inipay->GetResult('PayMethod'); ?> "> <input type="hidden" name="MOID" value="<?php echo $inipay->GetResult('MOID'); ?> "> <input type="hidden" name="TotPrice" value="<?php echo $inipay->GetResult('TotPrice'); ?> "> <input type="hidden" name="MID" value="<?php echo $inipay->GetResult('MID'); ?> "> <!-- 아래는 프로그램에서 값이$inipay에서 값이 넘어오지 않으므로 무시해도 됨--> <input type="hidden" name="ResultErrorCode" value="<?php echo $inipay->GetResult('ResultErrorCode'); ?> "> <input type="hidden" name="GoodName" value="<?php echo $inipay->GetResult('GoodName'); ?> "> <input type="hidden" name="BuyerName" value="<?php echo $inipay->GetResult('BuyerName'); ?> "> <input type="hidden" name="BuyerTel" value="<?php echo $inipay->GetResult('BuyerTel'); ?> "> <input type="hidden" name="BuyerEmail" value="<?php echo $inipay->GetResult('BuyerEmail'); ?> "> <input type="hidden" name="HPP_GWCode" value="<?php echo $inipay->GetResult('HPP_GWCode'); ?> "> </form> </body> <?php ///wp_redirect( $return_url); exit; }
function inicis_escrow_request_denyconfirm($posted) { global $inicis_payment; if (empty($_POST['dcnf_name']) && empty($_POST['tid']) && empty($_POST['mid'])) { return false; } require $inicis_payment->plugin_path() . "/lib/inipay50/INILib.php"; $iniescrow = new INIpay50(); $iniescrow->SetField("inipayhome", $this->settings['libfolder']); // 이니페이 홈디렉터리(상점수정 필요) $iniescrow->SetField("tid", $_POST['tid']); // 거래아이디 $iniescrow->SetField("mid", $_POST['mid']); // 상점아이디 $iniescrow->SetField("admin", "1111"); // 키패스워드(상점아이디에 따라 변경) $iniescrow->SetField("type", "escrow"); // 고정 (절대 수정 불가) $iniescrow->SetField("escrowtype", "dcnf"); // 고정 (절대 수정 불가) $iniescrow->SetField("dcnf_name", $_POST['dcnf_name']); $iniescrow->SetField("debug", "true"); // 로그모드("true"로 설정하면 상세한 로그가 생성됨) $iniescrow->startAction(); $tid = $iniescrow->GetResult("tid"); // 거래번호 $resultCode = $iniescrow->GetResult("ResultCode"); // 결과코드 ("00"이면 지불 성공) $resultMsg = $iniescrow->GetResult("ResultMsg"); // 결과내용 (지불결과에 대한 설명) $resultDate = $iniescrow->GetResult("DCNF_Date"); // 처리 날짜 $resultTime = $iniescrow->GetResult("DCNF_Time"); // 처리 시각 $postid = $_POST['postid']; $orderinfo = new WC_Order($_POST['postid']); if ($resultCode == '00') { $tmp_settings = get_option('woocommerce_' . $this->id . '_settings', TRUE); $refunded_status = $tmp_settings['order_status_after_refund']; $orderinfo->update_status($refunded_status); //취소처리완료 상태로 변경 update_post_meta($_POST['post_id'], '`_inicis_escrow_order_cancelled`', TRUE); $orderinfo->add_order_note(sprintf(__('에스크로 구매거절을 %s님께서 <font color=blue><strong>확인</strong></font>하였습니다. 에스크로 환불처리 완료하였습니다. 거래번호 : %s, 결과코드 : %s, 처리날짜 : %s, 처리시각 : %s', 'inicis_payment'), $_POST['dcnf_name'], $_POST['tid'], $resultCode, $resultDate, $resultTime)); } else { $orderinfo->add_order_note(sprintf(__('에스크로 구매거절을 %s님께서 <font color=blue><strong>확인실패</strong></font>하였습니다. 에스크로 환불처리를 실패하였습니다. 에러메시지를 확인하세요! 거래번호 : %s, 결과코드 : %s, 에러메시지 : %s, 처리날짜 : %s, 처리시각 : %s', 'inicis_payment'), $_POST['dcnf_name'], $_POST['tid'], $resultCode, mb_convert_encoding($resultMsg, "UTF-8", "EUC-KR"), $resultDate, $resultTime)); die; } }