이니시스 모바일 IOS의 경우 isp에서 리다이렉트로 인한 문제 수정
This commit is contained in:
@ -7,4 +7,7 @@ if (!defined('G5_USE_SHOP') || !G5_USE_SHOP)
|
||||
die('<p>쇼핑몰 설치 후 이용해 주십시오.</p>');
|
||||
|
||||
include_once(G5_ADMIN_PATH.'/admin.lib.php');
|
||||
include_once('./admin.shop.lib.php');
|
||||
|
||||
check_order_inicis_tmps();
|
||||
?>
|
||||
|
||||
@ -119,4 +119,64 @@ function conv_sms_contents($od_id, $contents)
|
||||
|
||||
return stripslashes($sms_contents);
|
||||
}
|
||||
|
||||
function check_order_inicis_tmps(){
|
||||
global $g5, $config, $default, $member;
|
||||
|
||||
$admin_cookie_time = get_cookie('admin_visit_time');
|
||||
|
||||
if( ! $admin_cookie_time ){
|
||||
|
||||
if( $default['de_pg_service'] === 'inicis' && empty($default['de_card_test']) ){
|
||||
$sql = " select * from {$g5['g5_shop_inicis_log_table']} where P_TID <> '' and P_TYPE in ('CARD', 'ISP', 'BANK') and P_MID <> '' and P_STATUS = '00' and is_mail_send = 0 and substr(P_AUTH_DT, 1, 14) < '".date('YmdHis', strtotime('-3 minutes', G5_SERVER_TIME))."' ";
|
||||
|
||||
$result = sql_query($sql, false);
|
||||
|
||||
if( !$result ){
|
||||
return;
|
||||
}
|
||||
|
||||
$mail_msg = '';
|
||||
|
||||
for($i=0;$row=sql_fetch_array($result);$i++){
|
||||
|
||||
$oid = $row['oid'];
|
||||
$p_tid = $row['P_TID'];
|
||||
$p_mid = strtolower($tmps['P_MID']);
|
||||
|
||||
if( in_array($p_mid, array('iniescrow0', 'inipaytest')) ) continue;
|
||||
|
||||
$sql = "update {$g5['g5_shop_inicis_log_table']} set is_mail_send = 1 where oid = '".$oid."' and P_TID = '".$p_tid."' ";
|
||||
sql_query($sql);
|
||||
|
||||
$sql = " select od_id from {$g5['g5_shop_order_table']} where od_id = '$oid' and od_tno = '$p_tid' ";
|
||||
$tmp = sql_fetch($sql);
|
||||
|
||||
if( $tmp['od_id'] ) continue;
|
||||
|
||||
$sql = " select pp_id from {$g5['g5_shop_personalpay_table']} where pp_id = '$oid' and pp_tno = '$p_tid' ";
|
||||
$tmp = sql_fetch($sql);
|
||||
|
||||
if( $tmp['pp_id'] ) continue;
|
||||
|
||||
$mail_msg .= '<a href="'.G5_ADMIN_URL.'/shop_admin/inorderform.php?od_id='.$oid.'" target="_blank" >미완료 발생 주문번호 : '.$oid.'</a><br><br>';
|
||||
|
||||
}
|
||||
|
||||
if( $mail_msg ){
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
$mails = array_unique(array($member['mb_email'], $config['cf_admin_email']));
|
||||
|
||||
foreach($mails as $mail_address){
|
||||
if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/", $mail_address)) continue;
|
||||
|
||||
mailer($member['mb_nick'], $member['mb_email'], $mail_address, $config['cf_title'].' 사이트 미완료 주문 알림', '이니시스를 통해 결제한 주문건 중에서 미완료 주문이 발생했습니다.<br><br>발생된 원인으로는 장바구니 금액와 실결제 금액이 맞지 않는 경우, 네트워크 오류, 프로그램 오류, 알수 없는 오류 등이 있습니다.<br><br>아래 내용과 실제 주문내역, 이니시스 상점 관리자 에서 결제된 내용을 확인하여 조치를 취해 주세요.<br><br>'.$mail_msg, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set_cookie('admin_visit_time', G5_SERVER_TIME, 3600); //1시간 간격으로 체크
|
||||
}
|
||||
} //end function check_order_inicis_tmps
|
||||
?>
|
||||
@ -382,6 +382,76 @@ $pg_anchor = '<ul class="anchor">
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
||||
<?php
|
||||
// 이니시스를 사용하고 있다면
|
||||
if( $default['de_pg_service'] === 'inicis' && empty($default['de_card_test']) ){
|
||||
$sql = " select * from {$g5['g5_shop_inicis_log_table']} where P_TID <> '' and P_TYPE in ('CARD', 'ISP', 'BANK') and P_MID <> '' and P_STATUS = '00' and oid = '".$od['od_id']."' ";
|
||||
$results = sql_query($sql);
|
||||
|
||||
$tmps = array();
|
||||
|
||||
while( $tmp=sql_fetch_array($results) ){
|
||||
|
||||
$sql = " select od_id from {$g5['g5_shop_order_table']} where od_id = '".$tmp['oid']."' and od_tno = '".$tmp['P_TID']."' ";
|
||||
$exist_od = sql_fetch($sql);
|
||||
|
||||
if( $exist_od['od_id'] ) continue;
|
||||
|
||||
$sql = " select pp_id from {$g5['g5_shop_personalpay_table']} where pp_id = '".$tmp['oid']."' and pp_tno = '".$tmp['P_TID']."' ";
|
||||
$exist_od = sql_fetch($sql);
|
||||
|
||||
if( $exist_od['od_id'] ) continue;
|
||||
|
||||
$tmps[] = $tmp;
|
||||
}
|
||||
|
||||
if( $tmps ) {
|
||||
?>
|
||||
<h2 class="h2_frm">이니시스 결제 로그</h2>
|
||||
<div class="local_desc01 local_desc">
|
||||
<p>실결제로 결제된 경우 반드시 이니시스 상점 관리자에서 해당 결제건을 확인 후에 주문을 처리해 주세요.</p>
|
||||
</div>
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption>이니시스 결제 로그</caption>
|
||||
<tbody>
|
||||
<?php foreach( $tmps as $tmp ){
|
||||
if( empty($tmp) ) continue;
|
||||
?>
|
||||
<tr>
|
||||
<th>주문번호</th>
|
||||
<td><?php echo $tmp['oid']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>결제 TID</th>
|
||||
<td><?php echo $tmp['P_TID']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>결제 MID</th>
|
||||
<td><?php echo $tmp['P_MID']; ?><?php echo in_array( strtolower($tmp['P_MID']), array('iniescrow0', 'inipaytest') ) ? ' ( 테스트결제 )' : ''; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>결제 시간</th>
|
||||
<td><?php echo date('Y-m-d H:i:s', strtotime(substr($tmp['P_AUTH_DT'], 0, 14))); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>결제 수단</th>
|
||||
<td><?php echo $tmp['P_TYPE'].' '.$tmp['P_FN_NM']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>결제된 금액</th>
|
||||
<td><?php echo $tmp['P_AMT'] ? number_format($tmp['P_AMT']) : 0; ?></td>
|
||||
</tr>
|
||||
<?php } //end foreach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
} //end if tmps
|
||||
} //end if inicis
|
||||
?>
|
||||
|
||||
<h2 class="h2_frm">주문자/배송지 정보</h2>
|
||||
<?php echo $pg_anchor; ?>
|
||||
|
||||
|
||||
@ -852,5 +852,7 @@ CREATE TABLE IF NOT EXISTS `g5_shop_inicis_log` (
|
||||
`P_AUTH_NO` varchar(255) NOT NULL DEFAULT '',
|
||||
`P_AMT` int(11) NOT NULL DEFAULT '0',
|
||||
`P_RMESG1` varchar(255) NOT NULL DEFAULT '',
|
||||
`post_data` text NOT NULL,
|
||||
`is_mail_send` tinyint(4) NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (`oid`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
@ -2067,6 +2067,56 @@ function update_use_avg($it_id)
|
||||
return sql_query(" update {$g5['g5_shop_item_table']} set it_use_avg = '$average' where it_id = '{$it_id}' ");
|
||||
}
|
||||
|
||||
//주문데이터 또는 개인결제 주문데이터 가져오기
|
||||
function get_shop_order_data($od_id, $type='item'){
|
||||
global $g5;
|
||||
|
||||
$od_id = clean_xss_tags($od_id);
|
||||
|
||||
if( $type == 'personal' ){
|
||||
$row = sql_fetch("select * from {$g5['g5_shop_personalpay_table']} where pp_id = $od_id ", false);
|
||||
} else {
|
||||
$row = sql_fetch("select * from {$g5['g5_shop_order_table']} where od_id = $od_id ", false);
|
||||
}
|
||||
|
||||
return $row;
|
||||
}
|
||||
|
||||
function exists_inicis_shop_order($oid, $pp=array(), $od_time='', $od_ip=''){
|
||||
|
||||
$od_ip = $od_ip ? $od_ip : $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
//개인결제
|
||||
if( $pp ) {
|
||||
$hash_data = md5($pp['pp_id'].$pp['pp_price'].$pp['pp_time']);
|
||||
if( $hash_data == get_session('ss_personalpay_hash') ){
|
||||
// 개인결제번호제거
|
||||
set_session('ss_personalpay_id', '');
|
||||
set_session('ss_personalpay_hash', '');
|
||||
|
||||
$uid = md5($pp['pp_id'].$pp['pp_time'].$od_ip);
|
||||
set_session('ss_personalpay_uid', $uid);
|
||||
|
||||
goto_url(G5_SHOP_URL.'/personalpayresult.php?pp_id='.$pp['pp_id'].'&uid='.$uid.'&ini_noti=1');
|
||||
} else {
|
||||
goto_url(G5_SHOP_URL.'/personalpayresult.php?pp_id='.$pp['pp_id'].'&ini_noti=1');
|
||||
}
|
||||
} else { //그렇지 않으면
|
||||
if (!$od_time){
|
||||
$od_time = G5_TIME_YMDHIS;
|
||||
}
|
||||
|
||||
if( $oid == get_session('ss_order_id') ){
|
||||
// orderview 에서 사용하기 위해 session에 넣고
|
||||
$uid = md5($oid.$od_time.$od_ip);
|
||||
set_session('ss_orderview_uid', $uid);
|
||||
goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$oid.'&uid='.$uid.'&ini_noti=1');
|
||||
} else {
|
||||
goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$oid.'&ini_noti=1');
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 주문포인트를 적립한다.
|
||||
|
||||
@ -1,5 +1,35 @@
|
||||
<?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">
|
||||
@ -14,8 +44,8 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||
<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="bank_receipt=N&twotrs_isp=Y&block_isp=Y<?php echo $useescrow.$inicis_cardpoint; ?>">
|
||||
<input type="hidden" name="DEF_RESERVED" value="bank_receipt=N&twotrs_isp=Y&block_isp=Y<?php echo $useescrow; ?>">
|
||||
<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="">
|
||||
|
||||
@ -10,6 +10,20 @@ set_session('P_HASH', '');
|
||||
$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']) {
|
||||
|
||||
@ -17,7 +17,6 @@ $PGIP = $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
if($PGIP == "211.219.96.165" || $PGIP == "118.129.210.25" || $PGIP == "183.109.71.153") //PG에서 보냈는지 IP로 체크
|
||||
{
|
||||
|
||||
// 이니시스 NOTI 서버에서 받은 Value
|
||||
$P_TID; // 거래번호
|
||||
$P_MID; // 상점아이디
|
||||
@ -54,6 +53,185 @@ if($PGIP == "211.219.96.165" || $PGIP == "118.129.210.25" || $PGIP == "183.109.7
|
||||
$P_AUTH_NO = $_POST['P_AUTH_NO'];
|
||||
$P_SRC_CODE = $_POST['P_SRC_CODE'];
|
||||
|
||||
// 결과 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 합니다.
|
||||
|
||||
include_once(G5_MSHOP_PATH.'/settle_inicis.inc.php');
|
||||
|
||||
$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));
|
||||
}
|
||||
}
|
||||
|
||||
extract($params);
|
||||
|
||||
$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('-3 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'];
|
||||
|
||||
extract($params);
|
||||
|
||||
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('-3 month', G5_SERVER_TIME))."' ";
|
||||
sql_query( $sql , false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//WEB 방식의 경우 가상계좌 채번 결과 무시 처리
|
||||
//(APP 방식의 경우 해당 내용을 삭제 또는 주석 처리 하시기 바랍니다.)
|
||||
@ -166,23 +344,6 @@ if($PGIP == "211.219.96.165" || $PGIP == "118.129.210.25" || $PGIP == "183.109.7
|
||||
"P_SRC_CODE" => $P_SRC_CODE
|
||||
);
|
||||
|
||||
// 결과 incis log 테이블 기록
|
||||
if($P_TYPE == 'BANK' || $P_SRC_CODE == 'A') {
|
||||
$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)."' ";
|
||||
@sql_query($sql);
|
||||
}
|
||||
|
||||
// 결제처리에 관한 로그 기록
|
||||
//writeLog($value);
|
||||
|
||||
|
||||
@ -7,6 +7,15 @@ if( $od_settle_case == '삼성페이' && !empty($_POST['P_HASH']) ){
|
||||
$default['de_pg_service'] = 'inicis';
|
||||
}
|
||||
|
||||
if( $default['de_pg_service'] == 'inicis' && get_session('ss_order_id') ){
|
||||
if( $exist_order = get_shop_order_data(get_session('ss_order_id')) ){ //이미 상품이 주문되었다면 리다이렉트
|
||||
if($exist_order['od_tno']){
|
||||
exists_inicis_shop_order(get_session('ss_order_id'), array(), $exist_order['od_time'], $exist_order['od_ip']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$page_return_url = G5_SHOP_URL.'/orderform.php';
|
||||
if(get_session('ss_direct'))
|
||||
$page_return_url .= '?sw_direct=1';
|
||||
@ -497,6 +506,10 @@ else
|
||||
// 주문번호를 얻는다.
|
||||
$od_id = get_session('ss_order_id');
|
||||
|
||||
if( !$od_id ){
|
||||
die("주문번호가 없습니다.");
|
||||
}
|
||||
|
||||
$od_escrow = 0;
|
||||
if($escw_yn == 'Y')
|
||||
$od_escrow = 1;
|
||||
@ -618,6 +631,9 @@ if(!$result) {
|
||||
$error = 'order';
|
||||
include G5_SHOP_PATH.'/ordererrormail.php';
|
||||
|
||||
// 주문삭제
|
||||
sql_query(" delete from {$g5['g5_shop_order_table']} where od_id = '$od_id' ", false);
|
||||
|
||||
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>'.strtoupper($od_pg).'를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
|
||||
}
|
||||
|
||||
@ -854,6 +870,12 @@ set_session('ss_orderview_uid', $uid);
|
||||
$sql = " delete from {$g5['g5_shop_order_data_table']} where od_id = '$od_id' and dt_pg = '$od_pg' ";
|
||||
sql_query($sql);
|
||||
|
||||
if( $od_pg == 'inicis' && $od_tno ){
|
||||
$sql = "delete from {$g5['g5_shop_inicis_log_table']} where oid = '$od_id' and P_TID = '$od_tno' ";
|
||||
sql_query($sql, false);
|
||||
}
|
||||
|
||||
|
||||
// 주문번호제거
|
||||
set_session('ss_order_id', '');
|
||||
|
||||
@ -911,5 +933,12 @@ if($is_member) {
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
$is_noti_pay = isset($is_noti_pay) ? $is_noti_pay : false;
|
||||
|
||||
if( $is_noti_pay ){
|
||||
$order_id = $od_id;
|
||||
return;
|
||||
}
|
||||
|
||||
goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$od_id.'&uid='.$uid);
|
||||
?>
|
||||
|
||||
@ -237,5 +237,12 @@ set_session('ss_personalpay_hash', '');
|
||||
$uid = md5($pp['pp_id'].$pp['pp_time'].$_SERVER['REMOTE_ADDR']);
|
||||
set_session('ss_personalpay_uid', $uid);
|
||||
|
||||
$is_noti_pay = isset($is_noti_pay) ? $is_noti_pay : false;
|
||||
|
||||
if( $is_noti_pay ){
|
||||
$order_id = $pp['pp_id'];
|
||||
return;
|
||||
}
|
||||
|
||||
goto_url(G5_SHOP_URL.'/personalpayresult.php?pp_id='.$pp['pp_id'].'&uid='.$uid);
|
||||
?>
|
||||
|
||||
@ -4,7 +4,11 @@ include_once('./_common.php');
|
||||
$sql = "select * from {$g5['g5_shop_personalpay_table']} where pp_id = '$pp_id' ";
|
||||
$pp = sql_fetch($sql);
|
||||
if (!$pp['pp_id'] || (md5($pp['pp_id'].$pp['pp_time'].$_SERVER['REMOTE_ADDR']) != get_session('ss_personalpay_uid'))) {
|
||||
alert("조회하실 개인결제 내역이 없습니다.", G5_SHOP_URL);
|
||||
if( isset($_GET['ini_noti']) && $pp['pp_tno'] ){
|
||||
alert("해당 개인결제는 정상적으로 결제되었습니다.", G5_SHOP_URL."/personalpay.php");
|
||||
} else {
|
||||
alert("조회하실 개인결제 내역이 없습니다.", G5_SHOP_URL."/personalpay.php");
|
||||
}
|
||||
}
|
||||
|
||||
// 결제방법
|
||||
|
||||
@ -88,6 +88,13 @@ if(!sql_query(" select P_AUTH_NO from {$g5['g5_shop_inicis_log_table']} limit 1
|
||||
ADD `P_AUTH_NO` varchar(255) NOT NULL DEFAULT '' AFTER `P_FN_NM` ", true);
|
||||
}
|
||||
|
||||
// 모바일 이니시스 noti 받는 테이블 필드 추가
|
||||
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` ", true);
|
||||
}
|
||||
|
||||
// 테스트 주문필드 추가
|
||||
if(!sql_query(" select od_test from {$g5['g5_shop_order_table']} limit 1 ", false)) {
|
||||
sql_query(" ALTER TABLE `{$g5['g5_shop_order_table']}`
|
||||
|
||||
@ -14,6 +14,16 @@ sql_query($sql);
|
||||
if(isset($_POST['pp_id']) && $_POST['pp_id']) {
|
||||
$od_id = get_session('ss_personalpay_id');
|
||||
$cart_id = 0;
|
||||
|
||||
$sql = "select pp_use, pp_tno from {$g5['g5_shop_personalpay_table']} where pp_id = '$od_id' ";
|
||||
$pp_row = sql_fetch($sql);
|
||||
|
||||
if( $pp_row['pp_tno'] ){
|
||||
die('해당 개인결제는 이미 결제되었습니다.');
|
||||
} else if( ! $pp_row['pp_use'] ){
|
||||
die('해당 개인결제는 사용이 금지되어 있습니다.');
|
||||
}
|
||||
|
||||
} else {
|
||||
$od_id = get_session('ss_order_id');
|
||||
$_POST['sw_direct'] = get_session('ss_direct');
|
||||
@ -26,6 +36,10 @@ if(isset($_POST['pp_id']) && $_POST['pp_id']) {
|
||||
else {
|
||||
$cart_id = get_session('ss_cart_id');
|
||||
}
|
||||
|
||||
if( G5_IS_MOBILE && $default['de_pg_service'] == 'inicis' ){
|
||||
$_POST['post_cart_id'] = $cart_id;
|
||||
}
|
||||
}
|
||||
|
||||
$dt_data = base64_encode(serialize($_POST));
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if( isset($_GET['ini_noti']) && !isset($_GET['uid']) ){
|
||||
goto_url(G5_SHOP_URL.'/orderinquiry.php');
|
||||
}
|
||||
|
||||
// 불법접속을 할 수 없도록 세션에 아무값이나 저장하여 hidden 으로 넘겨서 다음 페이지에서 비교함
|
||||
$token = md5(uniqid(rand(), true));
|
||||
set_session("ss_token", $token);
|
||||
|
||||
Reference in New Issue
Block a user