first commit 2

This commit is contained in:
hmw1001
2026-06-11 18:47:38 +09:00
parent c768729ce6
commit 6f534e33a6
11095 changed files with 1595758 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
<?php
include_once('../../../common.php');
if (!defined('G5_USE_SHOP') || !G5_USE_SHOP)
die('<p>쇼핑몰 설치 후 이용해 주십시오.</p>');
define('_SHOP_', true);
+59
View File
@@ -0,0 +1,59 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if(!function_exists('get_inicis_app_scheme')){
function get_inicis_app_scheme(){
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$iPod = stripos($user_agent,"iPod");
$iPhone = stripos($user_agent,"iPhone");
$iPad = stripos($user_agent,"iPad");
if( $iPod || $iPhone || $iPad ){ //IOS 의 앱브라우저에서 ISP결제시 리다이렉트 safari로 돌아가는 문제가 있음
if( preg_match('/NAVER\(inapp;/', $user_agent) ){ //네이버
return 'app_scheme=naversearchapp://&';
}
else if( preg_match('/CriOS/', $user_agent) ){ //크롬
return 'app_scheme=googlechromes://&';
}
else if( preg_match('/DaumDevice/', $user_agent) ){ //다음
return 'app_scheme=daumapps://&';
}
else if( preg_match('/KAKAOTALK/', $user_agent) ){ //카카오톡
return 'app_scheme=kakaotalk://&';
}
else if( preg_match('/(FBAN|FBAV)/', $user_agent) ){ //페이스북
return 'app_scheme=fb://&';
}
}
return '';
}
}
?>
<form name="sm_form" method="POST" action="" accept-charset="euc-kr">
<input type="hidden" name="P_OID" value="<?php echo $od_id; ?>">
<input type="hidden" name="P_GOODS" value="<?php echo $goods; ?>">
<input type="hidden" name="P_AMT" value="<?php echo $tot_price; ?>">
<input type="hidden" name="P_UNAME" value="">
<input type="hidden" name="P_MOBILE" value="">
<input type="hidden" name="P_EMAIL" value="">
<input type="hidden" name="P_MID" value="<?php echo $default['de_inicis_mid']; ?>">
<input type="hidden" name="P_NEXT_URL" value="<?php echo $next_url; ?>">
<input type="hidden" name="P_NOTI_URL" value="<?php echo $noti_url; ?>">
<input type="hidden" name="P_RETURN_URL" value="">
<input type="hidden" name="P_HPP_METHOD" value="2">
<input type="hidden" name="P_RESERVED" value="<?php echo get_inicis_app_scheme(); ?>bank_receipt=N&twotrs_isp=Y&block_isp=Y<?php echo $useescrow.$inicis_cardpoint; ?>">
<input type="hidden" name="DEF_RESERVED" value="<?php echo get_inicis_app_scheme(); ?>bank_receipt=N&twotrs_isp=Y&block_isp=Y<?php echo $useescrow.$inicis_cardpoint; ?>">
<input type="hidden" name="P_NOTI" value="<?php echo $od_id; ?>">
<input type="hidden" name="P_QUOTABASE" value="01:02:03:04:05:06:07:08:09:10:11:12"> <!-- 할부기간 설정 01은 일시불 -->
<input type="hidden" name="P_SKIP_TERMS" value="">
<input type="hidden" name="good_mny" value="<?php echo $tot_price; ?>" >
<?php if($default['de_tax_flag_use']) { ?>
<input type="hidden" name="P_TAX" value="">
<input type="hidden" name="P_TAXFREE" value="">
<?php } ?>
</form>
+30
View File
@@ -0,0 +1,30 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<input type="hidden" name="good_mny" value="<?php echo $tot_price ?>" >
<input type="hidden" name="res_cd" value=""> <!-- 결과 코드 -->
<input type="hidden" name="P_HASH" value="">
<input type="hidden" name="P_TYPE" value="">
<input type="hidden" name="P_UNAME" value="">
<input type="hidden" name="P_AUTH_DT" value="">
<input type="hidden" name="P_AUTH_NO" value="">
<input type="hidden" name="P_HPP_CORP" value="">
<input type="hidden" name="P_APPL_NUM" value="">
<input type="hidden" name="P_VACT_NUM" value="">
<input type="hidden" name="P_VACT_NAME" value="">
<input type="hidden" name="P_VACT_BANK" value="">
<input type="hidden" name="P_CARD_ISSUER" value="">
<?php if($default['de_tax_flag_use']) { ?>
<input type="hidden" name="comm_tax_mny" value="<?php echo $comm_tax_mny; ?>"> <!-- 과세금액 -->
<input type="hidden" name="comm_vat_mny" value="<?php echo $comm_vat_mny; ?>"> <!-- 부가세 -->
<input type="hidden" name="comm_free_mny" value="<?php echo $comm_free_mny; ?>"> <!-- 비과세 금액 -->
<?php } ?>
<div id="display_pay_button" class="btn_confirm">
<span id="show_req_btn"><input type="button" name="submitChecked" onClick="pay_approval();" value="결제등록" class="btn_submit"></span>
<span id="show_pay_btn" style="display:none;"><input type="button" onClick="forderform_check();" value="주문하기" class="btn_submit"></span>
<a href="<?php echo G5_SHOP_URL; ?>" class="btn_cancel">취소</a>
</div>
+2
View File
@@ -0,0 +1,2 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가;
+201
View File
@@ -0,0 +1,201 @@
<?php
include_once('./_common.php');
include_once(G5_MSHOP_PATH.'/settle_inicis.inc.php');
// 세션 초기화
set_session('P_TID', '');
set_session('P_AMT', '');
set_session('P_HASH', '');
$oid = isset($_REQUEST['P_NOTI']) ? trim($_REQUEST['P_NOTI']) : '';
$p_req_url = isset($_REQUEST['P_REQ_URL']) ? is_inicis_url_return(trim($_REQUEST['P_REQ_URL'])) : '';
$p_status = isset($_REQUEST['P_STATUS']) ? trim($_REQUEST['P_STATUS']) : '';
$p_tid = isset($_REQUEST['P_TID']) ? trim($_REQUEST['P_TID']) : '';
$p_rmesg1 = isset($_REQUEST['P_RMESG1']) ? trim($_REQUEST['P_RMESG1']) : '';
if( ! $p_req_url || !preg_match('/^https\:\/\//i', $p_req_url)){
alert("잘못된 요청 URL 입니다.");
}
$sql = " select * from {$g5['g5_shop_order_data_table']} where od_id = '$oid' ";
$row = sql_fetch($sql);
$data = isset($row['dt_data']) ? unserialize(base64_decode($row['dt_data'])) : array();
if(isset($data['pp_id']) && $data['pp_id']) {
$order_action_url = G5_HTTPS_MSHOP_URL.'/personalpayformupdate.php';
$page_return_url = G5_SHOP_URL.'/personalpayform.php?pp_id='.$data['pp_id'];
} else {
$order_action_url = G5_HTTPS_MSHOP_URL.'/orderformupdate.php';
$page_return_url = G5_SHOP_URL.'/orderform.php';
if(get_session('ss_direct'))
$page_return_url .= '?sw_direct=1';
// 장바구니가 비어있는가?
if (get_session('ss_direct'))
$tmp_cart_id = get_session('ss_cart_direct');
else
$tmp_cart_id = get_session('ss_cart_id');
if (get_cart_count($tmp_cart_id) == 0)// 장바구니에 담기
alert('세션을 잃거나 다른 브라우저에서 데이터가 변경된 경우입니다. 장바구니 상태를 확인후에 다시 시도해 주세요.', G5_SHOP_URL.'/cart.php');
$error = "";
// 장바구니 상품 재고 검사
$sql = " select it_id,
ct_qty,
it_name,
io_id,
io_type,
ct_option
from {$g5['g5_shop_cart_table']}
where od_id = '$tmp_cart_id'
and ct_select = '1' ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
// 상품에 대한 현재고수량
if($row['io_id']) {
$it_stock_qty = (int)get_option_stock_qty($row['it_id'], $row['io_id'], $row['io_type']);
} else {
$it_stock_qty = (int)get_it_stock_qty($row['it_id']);
}
// 장바구니 수량이 재고수량보다 많다면 오류
if ($row['ct_qty'] > $it_stock_qty)
$error .= "{$row['ct_option']} 의 재고수량이 부족합니다. 현재고수량 : $it_stock_qty\\n\\n";
}
if($i == 0)
alert('장바구니가 비어 있습니다.', G5_SHOP_URL.'/cart.php');
if ($error != "")
{
$error .= "결제진행이 중단 되었습니다.";
alert($error, G5_SHOP_URL.'/cart.php');
}
}
if($p_status !== '00') {
alert('오류 : '.iconv_utf8($p_rmesg1).' 코드 : '.$p_status, $page_return_url);
} else {
$post_data = array(
'P_MID' => $default['de_inicis_mid'],
'P_TID' => $p_tid
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_URL, $p_req_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
if(!$return)
alert('KG이니시스와 통신 오류로 결제등록 요청을 완료하지 못했습니다.\\n결제등록 요청을 다시 시도해 주십시오.', $page_return_url);
// 결과를 배열로 변환
parse_str($return, $ret);
$PAY = array_map('trim', $ret);
$PAY = array_map('strip_tags', $PAY);
$PAY = array_map('get_search_string', $PAY);
if($PAY['P_STATUS'] != '00')
alert('오류 : '.iconv_utf8($PAY['P_RMESG1']).' 코드 : '.$PAY['P_STATUS'], $page_return_url);
// TID, AMT 를 세션으로 주문완료 페이지 전달
$hash = md5($PAY['P_TID'].$PAY['P_MID'].$PAY['P_AMT']);
set_session('P_TID', $PAY['P_TID']);
set_session('P_AMT', $PAY['P_AMT']);
set_session('P_HASH', $hash);
}
$params = array();
//개인결제
if(isset($data['pp_id']) && !empty($data['pp_id'])) {
// 개인결제 정보
$pp_check = false;
$sql = " select * from {$g5['g5_shop_personalpay_table']} where pp_id = '{$PAY['P_OID']}' and pp_tno = '{$PAY['P_TID']}' and pp_use = '1' ";
$pp = sql_fetch($sql);
if( !$pp['pp_tno'] && $data['pp_id'] == $oid ){
$res_cd = $PAY['P_STATUS'];
$pp_id = $oid;
$exclude = array('res_cd', 'P_HASH', 'P_TYPE', 'P_AUTH_DT', 'P_VACT_BANK', 'LGD_PAYKEY', 'pp_id', 'good_mny', 'pp_name', 'pp_email', 'pp_hp', 'pp_settle_case');
foreach($data as $key=>$v) {
if( !in_array($key, $exclude) ){
$_POST[$key] = $params[$key] = clean_xss_tags(strip_tags($v));
}
}
$good_mny = isset($PAY['P_AMT']) ? $PAY['P_AMT'] : 0;
$pp_name = clean_xss_tags($data['pp_name']);
$pp_email = clean_xss_tags($data['pp_email']);
$pp_hp = clean_xss_tags($data['pp_hp']);
$pp_settle_case = clean_xss_tags($data['pp_settle_case']);
$_POST['P_HASH'] = $hash;
$_POST['P_AUTH_NO'] = isset($PAY['P_AUTH_NO']) ? $PAY['P_AUTH_NO'] : '';
$_POST['pp_id'] = isset($PAY['P_OID']) ? $PAY['P_OID'] : '';
$_POST['good_mny'] = isset($PAY['P_AMT']) ? $PAY['P_AMT'] : 0;
$_POST['P_TYPE'] = isset($PAY['P_TYPE']) ? $PAY['P_TYPE'] : '';
$_POST['P_AUTH_DT'] = isset($PAY['P_AUTH_DT']) ? $PAY['P_AUTH_DT'] : '';
$_POST['P_HPP_CORP'] = isset($PAY['P_HPP_CORP']) ? $PAY['P_HPP_CORP'] : '';
$_POST['P_APPL_NUM'] = isset($PAY['P_APPL_NUM']) ? $PAY['P_APPL_NUM'] : '';
$_POST['P_VACT_NUM'] = isset($PAY['P_VACT_NUM']) ? $PAY['P_VACT_NUM'] : '';
$_POST['P_VACT_NAME'] = isset($PAY['P_VACT_NAME']) ? iconv_utf8($PAY['P_VACT_NAME']) : '';
$_POST['P_VACT_BANK'] = (isset($PAY['P_VACT_BANK_CODE']) && isset($BANK_CODE[$PAY['P_VACT_BANK_CODE']])) ? $BANK_CODE[$PAY['P_VACT_BANK_CODE']] : '';
$_POST['P_CARD_ISSUER'] = isset($CARD_CODE[$PAY['P_CARD_ISSUER_CODE']]) ? $CARD_CODE[$PAY['P_CARD_ISSUER_CODE']] : '';
$_POST['P_UNAME'] = isset($PAY['P_UNAME']) ? iconv_utf8($PAY['P_UNAME']) : '';
include_once( G5_MSHOP_PATH.'/personalpayformupdate.php' );
}
} else {
// 상점 결제
$exclude = array('res_cd', 'P_HASH', 'P_TYPE', 'P_AUTH_DT', 'P_VACT_BANK', 'P_AUTH_NO');
foreach($data as $key=>$value) {
if(!empty($exclude) && in_array($key, $exclude))
continue;
if(is_array($value)) {
foreach($value as $k=>$v) {
$_POST[$key][$k] = $params[$key][$k] = clean_xss_tags(strip_tags($v));
}
} else {
if(in_array($key, array('od_memo'))){
$_POST[$key] = $params[$key] = clean_xss_tags(strip_tags($value), 0, 0, 0, 0);
} else {
$_POST[$key] = $params[$key] = clean_xss_tags(strip_tags($value));
}
}
}
$res_cd = $_POST['res_cd'] = isset($PAY['P_STATUS']) ? $PAY['P_STATUS'] : '';
$P_HASH = $_POST['P_HASH'] = $hash;
$P_TYPE = $_POST['P_TYPE'] = isset($PAY['P_TYPE']) ? $PAY['P_TYPE'] : '';
$P_AUTH_DT = $_POST['P_AUTH_DT'] = isset($PAY['P_AUTH_DT']) ? $PAY['P_AUTH_DT'] : '';
$P_AUTH_NO = $_POST['P_AUTH_NO'] = isset($PAY['P_AUTH_NO']) ? $PAY['P_AUTH_NO'] : '';
$P_HPP_CORP = $_POST['P_HPP_CORP'] = isset($PAY['P_HPP_CORP']) ? $PAY['P_HPP_CORP'] : '';
$P_APPL_NUM = $_POST['P_APPL_NUM'] = isset($PAY['P_APPL_NUM']) ? $PAY['P_APPL_NUM'] : '';
$P_VACT_NUM = $_POST['P_VACT_NUM'] = isset($PAY['P_VACT_NUM']) ? $PAY['P_VACT_NUM'] : '';
$P_VACT_NAME = $_POST['P_VACT_NAME'] = isset($PAY['P_VACT_NAME']) ? iconv_utf8($PAY['P_VACT_NAME']) : '';
$P_VACT_BANK = $_POST['P_VACT_BANK'] = (isset($PAY['P_VACT_BANK_CODE']) && isset($BANK_CODE[$PAY['P_VACT_BANK_CODE']])) ? $BANK_CODE[$PAY['P_VACT_BANK_CODE']] : '';
// $P_CARD_ISSUER = $_POST['P_CARD_ISSUER'] = isset($CARD_CODE[$PAY['P_CARD_ISSUER_CODE']]) ? $CARD_CODE[$PAY['P_CARD_ISSUER_CODE']] : '';
$P_CARD_ISSUER = $_POST['P_CARD_ISSUER'] = isset($CARD_CODE[$PAY['P_FN_CD1']]) ? $CARD_CODE[$PAY['P_FN_CD1']] : '';
$P_UNAME = $_POST['P_UNAME'] = isset($PAY['P_UNAME']) ? iconv_utf8($PAY['P_UNAME']) : '';
$check_keys = array('od_name', 'od_tel', 'od_pwd', 'od_hp', 'od_zip', 'od_addr1', 'od_addr2', 'od_addr3', 'od_addr_jibeon', 'od_email', 'ad_default', 'ad_subject', 'od_hope_date', 'od_b_name', 'od_b_tel', 'od_b_hp', 'od_b_zip', 'od_b_addr1', 'od_b_addr2', 'od_b_addr3', 'od_b_addr_jibeon', 'od_memo', 'od_settle_case', 'max_temp_point', 'od_temp_point', 'od_send_cost', 'od_send_cost2', 'od_bank_account', 'od_deposit_name', 'od_test', 'od_ip');
foreach($check_keys as $key){
$$key = isset($params[$key]) ? $params[$key] : '';
}
include_once( G5_MSHOP_PATH.'/orderformupdate.php' );
}
exit;
+50
View File
@@ -0,0 +1,50 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once(G5_MSHOP_PATH.'/settle_inicis.inc.php');
$post_p_hash = isset($_POST['P_HASH']) ? $_POST['P_HASH'] : '';
// 세션비교
$hash = md5(get_session('P_TID').$default['de_inicis_mid'].get_session('P_AMT'));
if($hash !== $post_p_hash)
alert('결제 정보가 일치하지 않습니다. 올바른 방법으로 이용해 주십시오.');
//최종결제요청 결과 성공 DB처리
$tno = get_session('P_TID');
$amount = get_session('P_AMT');
$app_time = isset($_POST['P_AUTH_DT']) ? $_POST['P_AUTH_DT'] : '';
$pay_method = isset($_POST['P_TYPE']) ? $_POST['P_TYPE'] : '';
$pay_type = isset($PAY_METHOD[$pay_method]) ? $PAY_METHOD[$pay_method] : '';
$depositor = isset($_POST['P_UNAME']) ? $_POST['P_UNAME'] : '';
$commid = isset($_POST['P_HPP_CORP']) ? $_POST['P_HPP_CORP'] : '';
$mobile_no = isset($_POST['P_APPL_NUM']) ? $_POST['P_APPL_NUM'] : '';
$app_no = isset($_POST['P_AUTH_NO']) ? $_POST['P_AUTH_NO'] : '';
$card_name = isset($_POST['P_CARD_ISSUER']) ? $_POST['P_CARD_ISSUER'] : '';
if ($default['de_escrow_use'] == 1) {
$escw_yn = 'Y';
}
$post_p_vact_bank = isset($_POST['P_VACT_BANK']) ? $_POST['P_VACT_BANK'] : '';
$post_p_vact_num = isset($_POST['P_VACT_NUM']) ? $_POST['P_VACT_NUM'] : '';
$post_p_vact_name = isset($_POST['P_VACT_NAME']) ? $_POST['P_VACT_NAME'] : '';
switch($pay_type) {
case '계좌이체':
$bank_name = $post_p_vact_bank;
break;
case '가상계좌':
$bankname = $post_p_vact_bank;
$account = $post_p_vact_num.' '.$post_p_vact_name;
$app_no = $post_p_vact_num;
break;
default:
break;
}
// 세션 초기화
set_session('P_TID', '');
set_session('P_AMT', '');
set_session('P_HASH', '');
+95
View File
@@ -0,0 +1,95 @@
<?php
include_once('./_common.php');
include_once(G5_MSHOP_PATH.'/settle_inicis.inc.php');
// 세션 초기화
set_session('P_TID', '');
set_session('P_AMT', '');
set_session('P_HASH', '');
$oid = isset($_REQUEST['oid']) ? preg_replace('/[^0-9a-z_\-]/i', '', $_REQUEST['oid']) : '';
$sql = " select * from {$g5['g5_shop_order_data_table']} where od_id = '$oid' ";
$row = sql_fetch($sql);
if( empty($row) ){ //이미 결제가 완료 되었다면
if( $exist_order = get_shop_order_data($oid) ){ //상품주문
if($exist_order['od_tno']){
exists_inicis_shop_order($oid, array(), $exist_order['od_time'], $exist_order['od_ip']);
exit;
}
} else if( $pp = get_shop_order_data($oid, 'personal') ){ //개인결제
if($pp['pp_tno']){ //이미 결제가 완료되었다면
exists_inicis_shop_order($oid, $pp, $pp['pp_time'], $pp['pp_ip']);
exit;
}
}
}
$data = unserialize(base64_decode($row['dt_data']));
if(isset($data['pp_id']) && $data['pp_id']) {
$order_action_url = G5_HTTPS_MSHOP_URL.'/personalpayformupdate.php';
$page_return_url = G5_SHOP_URL.'/personalpayform.php?pp_id='.$data['pp_id'];
} else {
$order_action_url = G5_HTTPS_MSHOP_URL.'/orderformupdate.php';
$page_return_url = G5_SHOP_URL.'/orderform.php';
if($_SESSION['ss_direct'])
$page_return_url .= '?sw_direct=1';
}
$sql = " select * from {$g5['g5_shop_inicis_log_table']} where oid = '$oid' ";
$row = sql_fetch($sql);
if(! (isset($row['oid']) && $row['oid']))
alert('결제 정보가 존재하지 않습니다.\\n\\n올바른 방법으로 이용해 주십시오.', $page_return_url);
if($row['P_STATUS'] != '00')
alert('오류 : '.$row['P_RMESG1'].' 코드 : '.$row['P_STATUS'], $page_return_url);
$PAY = array_map('trim', $row);
// TID, AMT 를 세션으로 주문완료 페이지 전달
$hash = md5($PAY['P_TID'].$PAY['P_MID'].$PAY['P_AMT']);
set_session('P_TID', $PAY['P_TID']);
set_session('P_AMT', $PAY['P_AMT']);
set_session('P_HASH', $hash);
// 로그 삭제
@sql_query(" delete from {$g5['g5_shop_inicis_log_table']} where oid = '$oid' ");
$g5['title'] = 'KG 이니시스 결제';
$g5['body_script'] = ' onload="setPAYResult();"';
include_once(G5_PATH.'/head.sub.php');
$exclude = array('res_cd', 'P_HASH', 'P_TYPE', 'P_AUTH_DT', 'P_VACT_BANK', 'P_AUTH_NO');
echo '<form name="forderform" method="post" action="'.$order_action_url.'" autocomplete="off">'.PHP_EOL;
echo make_order_field($data, $exclude);
echo '<input type="hidden" name="res_cd" value="'.$PAY['P_STATUS'].'">'.PHP_EOL;
echo '<input type="hidden" name="P_HASH" value="'.$hash.'">'.PHP_EOL;
echo '<input type="hidden" name="P_TYPE" value="'.$PAY['P_TYPE'].'">'.PHP_EOL;
echo '<input type="hidden" name="P_AUTH_DT" value="'.$PAY['P_AUTH_DT'].'">'.PHP_EOL;
echo '<input type="hidden" name="P_VACT_BANK" value="'.$PAY['P_FN_NM'].'">'.PHP_EOL;
echo '<input type="hidden" name="P_AUTH_NO" value="'.$PAY['P_AUTH_NO'].'">'.PHP_EOL;
echo '</form>'.PHP_EOL;
?>
<div id="pay_working" style="display:none;">
<span style="display:block; text-align:center;margin-top:120px"><img src="<?php echo G5_MOBILE_URL; ?>/shop/img/loading.gif" alt=""></span>
<span style="display:block; text-align:center;margin-top:10px; font-size:14px">주문완료 중입니다. 잠시만 기다려 주십시오.</span>
</div>
<script type="text/javascript">
function setPAYResult() {
setTimeout( function() {
document.forderform.submit();
}, 300);
}
</script>
<?php
include_once(G5_PATH.'/tail.sub.php');
+391
View File
@@ -0,0 +1,391 @@
<?php
include_once('./_common.php');
//*******************************************************************************
// FILE NAME : mx_rnoti.php
// FILE DESCRIPTION :
// 이니시스 smart phone 결제 결과 수신 페이지 샘플
// 기술문의 : ts@inicis.com
// HISTORY
// 2010. 02. 25 최초작성
// 2010 06. 23 WEB 방식의 가상계좌 사용시 가상계좌 채번 결과 무시 처리 추가(APP 방식은 해당 없음!!)
// WEB 방식일 경우 이미 P_NEXT_URL 에서 채번 결과를 전달 하였으므로,
// 이니시스에서 전달하는 가상계좌 채번 결과 내용을 무시 하시기 바랍니다.
//*******************************************************************************
$PGIP = $_SERVER['REMOTE_ADDR'];
// 2019-01-28 노티 아이피 203.238.37.15 추가
if($PGIP == "211.219.96.165" || $PGIP == "118.129.210.25" || $PGIP == "183.109.71.153" || $PGIP == "203.238.37.15") //PG에서 보냈는지 IP로 체크
{
// 이니시스 NOTI 서버에서 받은 Value
$P_TID; // 거래번호
$P_MID; // 상점아이디
$P_AUTH_DT; // 승인일자
$P_STATUS; // 거래상태 (00:성공, 01:실패)
$P_TYPE; // 지불수단
$P_OID; // 상점주문번호
$P_FN_CD1; // 금융사코드1
$P_FN_CD2; // 금융사코드2
$P_FN_NM; // 금융사명 (은행명, 카드사명, 이통사명)
$P_AMT; // 거래금액
$P_UNAME; // 결제고객성명
$P_RMESG1; // 결과코드
$P_RMESG2; // 결과메시지
$P_NOTI; // 노티메시지(상점에서 올린 메시지)
$P_AUTH_NO; // 승인번호
$P_SRC_CODE; // 앱연동 결제구분
$P_TID = isset($_POST['P_TID']) ? $_POST['P_TID'] : '';
$P_MID = isset($_POST['P_MID']) ? $_POST['P_MID'] : '';
$P_AUTH_DT = isset($_POST['P_AUTH_DT']) ? $_POST['P_AUTH_DT'] : '';
$P_STATUS = isset($_POST['P_STATUS']) ? $_POST['P_STATUS'] : '';
$P_TYPE = isset($_POST['P_TYPE']) ? $_POST['P_TYPE'] : '';
$P_OID = isset($_POST['P_OID']) ? preg_replace("/[ #\&\+%@=\/\\\:;,\.'\"\^`~|\!\?\*$#<>()\[\]\{\}]/i", "", $_POST['P_OID']) : '';
$P_FN_CD1 = isset($_POST['P_FN_CD1']) ? $_POST['P_FN_CD1'] : '';
$P_FN_CD2 = isset($_POST['P_FN_CD2']) ? $_POST['P_FN_CD2'] : '';
$P_FN_NM = isset($_POST['P_FN_NM']) ? $_POST['P_FN_NM'] : '';
$P_AMT = isset($_POST['P_AMT']) ? $_POST['P_AMT'] : '';
$P_UNAME = isset($_POST['P_UNAME']) ? $_POST['P_UNAME'] : '';
$P_RMESG1 = isset($_POST['P_RMESG1']) ? $_POST['P_RMESG1'] : '';
$P_RMESG2 = isset($_POST['P_RMESG2']) ? $_POST['P_RMESG2'] : '';
$P_NOTI = isset($_POST['P_NOTI']) ? $_POST['P_NOTI'] : '';
$P_AUTH_NO = isset($_POST['P_AUTH_NO']) ? $_POST['P_AUTH_NO'] : '';
$P_SRC_CODE = isset($_POST['P_SRC_CODE']) ? $_POST['P_SRC_CODE'] : '';
include_once(G5_MSHOP_PATH.'/settle_inicis.inc.php');
if(! ($default['de_pg_service'] === 'inicis' && $default['de_inicis_mid'] === $P_MID)){
echo "FAIL";
return;
}
// 결과 incis log 테이블 기록
if($P_TYPE == 'BANK' || $P_SRC_CODE == 'A') {
if(!sql_query(" select post_data from {$g5['g5_shop_inicis_log_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE `{$g5['g5_shop_inicis_log_table']}`
ADD `post_data` text NOT NULL AFTER `P_RMESG1`,
ADD `is_mail_send` tinyint(4) NOT NULL DEFAULT '1' AFTER `post_data` ", false);
}
$sql = " insert into {$g5['g5_shop_inicis_log_table']}
set oid = '$P_OID',
P_TID = '$P_TID',
P_MID = '$P_MID',
P_AUTH_DT = '$P_AUTH_DT',
P_STATUS = '$P_STATUS',
P_TYPE = '$P_TYPE',
P_OID = '$P_OID',
P_FN_NM = '".iconv_utf8($P_FN_NM)."',
P_AUTH_NO = '$P_AUTH_NO',
P_AMT = '$P_AMT',
P_RMESG1 = '".iconv_utf8($P_RMESG1)."',
post_data = '".base64_encode(serialize($_POST))."',
is_mail_send = 0 ";
sql_query($sql, false);
}
if( $P_STATUS == "00" && $P_TID && $P_MID && $P_TYPE != "VBANK" ){
// 주문이 있는지 체크
$sql = "select count(od_id) as cnt from {$g5['g5_shop_order_table']} where od_id = '$P_OID' and od_tno = '$P_TID' ";
$exist_order = sql_fetch($sql);
if( !$exist_order['cnt'] ){
//주문정보를 insert 합니다.
$sql = " select * from {$g5['g5_shop_order_data_table']} where od_id = '$P_OID' ";
$od = sql_fetch($sql);
$data = unserialize(base64_decode($od['dt_data']));
//개인결제
if(isset($data['pp_id']) && !empty($data['pp_id'])) {
// 개인결제 정보
$pp_check = false;
$sql = " select * from {$g5['g5_shop_personalpay_table']} where pp_id = '$P_OID' and pp_tno = '$P_TID' and pp_use = '1' ";
$pp = sql_fetch($sql);
if( !$pp['pp_tno'] && $data['pp_id'] == $P_OID ){
$res_cd = $P_STATUS;
$pp_id = $P_OID;
$exclude = array('res_cd', 'P_HASH', 'P_TYPE', 'P_AUTH_DT', 'P_VACT_BANK', 'LGD_PAYKEY', 'pp_id', 'good_mny', 'pp_name', 'pp_email', 'pp_hp', 'pp_settle_case');
$params = array();
foreach($data as $key=>$v) {
if( !in_array($key, $exclude) ){
$_POST[$key] = $params[$key] = clean_xss_tags(strip_tags($v));
}
}
$good_mny = $P_AMT;
$pp_name = clean_xss_tags($data['pp_name']);
$pp_email = clean_xss_tags($data['pp_email']);
$pp_hp = clean_xss_tags($data['pp_hp']);
$pp_settle_case = clean_xss_tags($data['pp_settle_case']);
set_session('P_TID', $P_TID);
set_session('P_AMT', $P_AMT);
$_POST['P_HASH'] = md5(get_session('P_TID').$default['de_inicis_mid'].$P_AMT);
$_POST['P_AUTH_NO'] = $P_AUTH_NO;
$_POST['pp_id'] = $P_OID;
$_POST['good_mny'] = $P_AMT;
$is_noti_pay = true;
$sql = " select pp_time from {$g5['g5_shop_personalpay_table']} where pp_id = '$P_OID' and pp_use = '1' ";
$pp_time = sql_fetch($sql);
set_session('ss_personalpay_id', $P_OID);
set_session('ss_personalpay_hash', md5($P_OID.$P_AMT.$pp_time['pp_time']));
include_once( G5_MSHOP_PATH.'/personalpayformupdate.php' );
if( !$order_id ){
echo "FAIL";
} else {
$sql = " delete from {$g5['g5_shop_inicis_log_table']} where (oid = '$P_OID' and P_TID = '$P_TID') OR substr(P_AUTH_DT, 1, 8) < '".date('Ymd', strtotime('-1 month', G5_SERVER_TIME))."' ";
sql_query( $sql , false);
}
}
//상품주문
} else {
if($od && isset($data['it_id']) && !empty($data['it_id'])) {
$PAY = array(
'oid' => $P_OID,
'P_TID' => $P_TID,
'P_MID' => $P_MID,
'P_AUTH_DT' => $P_AUTH_DT,
'P_STATUS' => $P_STATUS,
'P_TYPE' => $P_TYPE,
'P_OID' => $P_OID,
'P_FN_NM' => iconv_utf8($P_FN_NM),
'P_AUTH_NO' => $P_AUTH_NO,
'P_AMT' => $P_AMT,
'P_RMESG1' => iconv_utf8($P_RMESG1)
);
// TID, AMT 를 세션으로 주문완료 페이지 전달
$hash = md5($PAY['P_TID'].$PAY['P_MID'].$PAY['P_AMT']);
set_session('P_TID', $PAY['P_TID']);
set_session('P_AMT', $PAY['P_AMT']);
set_session('P_HASH', $hash);
set_session('ss_order_id', $P_OID);
$params = array();
$exclude = array('res_cd', 'P_HASH', 'P_TYPE', 'P_AUTH_DT', 'P_VACT_BANK', 'P_AUTH_NO');
foreach($data as $key=>$value) {
if(!empty($exclude) && in_array($key, $exclude))
continue;
if(is_array($value)) {
foreach($value as $k=>$v) {
$_POST[$key][$k] = $params[$key][$k] = clean_xss_tags(strip_tags($v));
}
} else {
$_POST[$key] = $params[$key] = clean_xss_tags(strip_tags($value));
}
}
if( !empty($params['sw_direct']) && !empty($params['post_cart_id']) ){
set_session('ss_direct', $params['sw_direct']);
set_session('ss_cart_direct', $params['post_cart_id']);
} else if ( $params['post_cart_id'] ){
set_session('ss_cart_id', $params['post_cart_id']);
}
try {
unset($params['sw_direct']);
unset($params['post_cart_id']);
} catch (Exception $e) {
}
$_POST['res_cd'] = $params['res_cd'] = $PAY['P_STATUS'];
$_POST['P_HASH'] = $params['P_HASH'] = $hash;
$_POST['P_TYPE'] = $params['P_TYPE'] = $PAY['P_TYPE'];
$_POST['P_AUTH_DT'] = $params['P_AUTH_DT'] = $PAY['P_AUTH_DT'];
$_POST['P_VACT_BANK'] = $params['P_VACT_BANK'] = $PAY['P_FN_NM'];
$_POST['P_AUTH_NO'] = $params['P_AUTH_NO'] = $PAY['P_AUTH_NO'];
$check_keys = array('od_name', 'od_tel', 'od_pwd', 'od_hp', 'od_zip', 'od_addr1', 'od_addr2', 'od_addr3', 'od_addr_jibeon', 'od_email', 'ad_default', 'ad_subject', 'od_hope_date', 'od_b_name', 'od_b_tel', 'od_b_hp', 'od_b_zip', 'od_b_addr1', 'od_b_addr2', 'od_b_addr3', 'od_b_addr_jibeon', 'od_memo', 'od_settle_case', 'max_temp_point', 'od_temp_point', 'od_send_cost', 'od_send_cost2', 'od_bank_account', 'od_deposit_name', 'od_test', 'od_ip');
foreach($check_keys as $key){
$$key = isset($params[$key]) ? $params[$key] : '';
}
$od_send_cost = (int) $od_send_cost;
$od_send_cost2 = (int) $od_send_cost2;
$ad_default = (int) $ad_default;
if( $od['mb_id'] ){
$is_member = true;
$member = get_member($od['mb_id']);
}
$is_noti_pay = true;
include_once( G5_MSHOP_PATH.'/orderformupdate.php' );
if( !$order_id ){
echo "FAIL";
} else {
$sql = " delete from {$g5['g5_shop_inicis_log_table']} where (oid = '$P_OID' and P_TID = '$P_TID') OR substr(P_AUTH_DT, 1, 8) < '".date('Ymd', strtotime('-1 month', G5_SERVER_TIME))."' ";
sql_query( $sql , false);
}
}
}
}
}
//WEB 방식의 경우 가상계좌 채번 결과 무시 처리
//(APP 방식의 경우 해당 내용을 삭제 또는 주석 처리 하시기 바랍니다.)
if($P_TYPE == "VBANK") //결제수단이 가상계좌이며
{
if($P_STATUS != "02") //입금통보 "02" 가 아니면(가상계좌 채번 : 00 또는 01 경우)
{
echo "OK";
return;
}
// 입금결과 처리
$sql = " select pp_id, od_id from {$g5['g5_shop_personalpay_table']} where pp_id = '$P_OID' and pp_tno = '$P_TID' ";
$row = sql_fetch($sql);
$result = false;
$receipt_time = $P_AUTH_DT;
if($row['pp_id']) {
// 개인결제 UPDATE
$sql = " update {$g5['g5_shop_personalpay_table']}
set pp_receipt_price = '$P_AMT',
pp_receipt_time = '$receipt_time'
where pp_id = '$P_OID'
and pp_tno = '$P_TID' ";
sql_query($sql, false);
if($row['od_id']) {
// 주문서 UPDATE
$receipt_time = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/", "\\1-\\2-\\3 \\4:\\5:\\6", $receipt_time);
$sql = " update {$g5['g5_shop_order_table']}
set od_receipt_price = od_receipt_price + '$P_AMT',
od_receipt_time = '$receipt_time',
od_shop_memo = concat(od_shop_memo, \"\\n개인결제 ".$row['pp_id']." 로 결제완료 - ".$receipt_time."\")
where od_id = '{$row['od_id']}' ";
$result = sql_query($sql, FALSE);
}
} else {
// 주문서 UPDATE
$sql = " update {$g5['g5_shop_order_table']}
set od_receipt_price = '$P_AMT',
od_receipt_time = '$receipt_time'
where od_id = '$P_OID'
and od_tno = '$P_TID' ";
$result = sql_query($sql, FALSE);
}
if($result) {
if($row['od_id'])
$od_id = $row['od_id'];
else
$od_id = $P_OID;
// 주문정보 체크
$sql = " select count(od_id) as cnt
from {$g5['g5_shop_order_table']}
where od_id = '$od_id'
and od_status = '주문' ";
$row = sql_fetch($sql);
if($row['cnt'] == 1) {
// 미수금 정보 업데이트
$info = get_order_info($od_id);
$sql = " update {$g5['g5_shop_order_table']}
set od_misu = '{$info['od_misu']}' ";
if($info['od_misu'] == 0)
$sql .= " , od_status = '입금' ";
$sql .= " where od_id = '$od_id' ";
sql_query($sql, FALSE);
// 장바구니 상태변경
if($info['od_misu'] == 0) {
$sql = " update {$g5['g5_shop_cart_table']}
set ct_status = '입금'
where od_id = '$od_id' ";
sql_query($sql, FALSE);
}
}
}
if($result) {
echo "OK";
return;
} else {
echo "FAIL";
return;
}
}
$PageCall_time = date("H:i:s");
$value = array(
"PageCall time" => $PageCall_time,
"P_TID" => $P_TID,
"P_MID" => $P_MID,
"P_AUTH_DT" => $P_AUTH_DT,
"P_STATUS" => $P_STATUS,
"P_TYPE" => $P_TYPE,
"P_OID" => $P_OID,
"P_FN_CD1" => $P_FN_CD1,
"P_FN_CD2" => $P_FN_CD2,
"P_FN_NM" => $P_FN_NM,
"P_AMT" => $P_AMT,
"P_UNAME" => $P_UNAME,
"P_RMESG1" => $P_RMESG1,
"P_RMESG2" => $P_RMESG2,
"P_NOTI" => $P_NOTI,
"P_AUTH_NO" => $P_AUTH_NO,
"P_SRC_CODE" => $P_SRC_CODE
);
// 결제처리에 관한 로그 기록
//writeLog($value);
/***********************************************************************************
' 위에서 상점 데이터베이스에 등록 성공유무에 따라서 성공시에는 "OK"를 이니시스로 실패시는 "FAIL" 을
' 리턴하셔야합니다. 아래 조건에 데이터베이스 성공시 받는 FLAG 변수를 넣으세요
' (주의) OK를 리턴하지 않으시면 이니시스 지불 서버는 "OK"를 수신할때까지 계속 재전송을 시도합니다
' 기타 다른 형태의 echo "" 는 하지 않으시기 바랍니다
'***********************************************************************************/
echo 'OK';
}
function writeLog($msg)
{
$file = G5_SHOP_PATH."/inicis/log/noti_input_".date("Ymd").".log";
if(!($fp = fopen($path.$file, "a+"))) return 0;
ob_start();
print_r($msg);
$ob_msg = ob_get_contents();
ob_clean();
if(fwrite($fp, " ".$ob_msg."\n") === FALSE)
{
fclose($fp);
return 0;
}
fclose($fp);
return 1;
}