lg u+ 결제모듈 추가

This commit is contained in:
chicpro
2014-05-26 13:47:55 +09:00
parent 11dec6a741
commit 927af6623a
68 changed files with 16519 additions and 162 deletions

2
.gitignore vendored
View File

@ -10,4 +10,4 @@ log
g5_tree
cheditor*/
ckeditor43/
lgxpay/
log/

View File

@ -150,6 +150,13 @@ if(!isset($config['cf_faq_skin'])) {
ADD `cf_mobile_faq_skin` varchar(255) NOT NULL DEFAULT '' AFTER `cf_mobile_connect_skin` ", true);
}
// LG U+ 본인확인 필드 추가
if(!isset($config['cf_lg_mid'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_lg_mid` varchar(255) NOT NULL DEFAULT '' AFTER `cf_cert_kcp_cd`,
ADD `cf_lg_mert_key` varchar(255) NOT NULL DEFAULT '' AFTER `cf_lg_mid` ", true);
}
if(!$config['cf_faq_skin']) $config['cf_faq_skin'] = "basic";
if(!$config['cf_mobile_faq_skin']) $config['cf_mobile_faq_skin'] = "basic";
@ -761,6 +768,7 @@ if ($config['cf_icode_id'] && $config['cf_icode_pw']) {
<?php echo option_selected("", $config['cf_cert_hp'], "사용안함"); ?>
<?php echo option_selected("kcb", $config['cf_cert_hp'], "코리아크레딧뷰로(KCB) 휴대폰 본인확인"); ?>
<?php echo option_selected("kcp", $config['cf_cert_hp'], "한국사이버결제(KCP) 휴대폰 본인확인"); ?>
<?php echo option_selected("lg", $config['cf_cert_hp'], "LG U+ 휴대폰 본인확인"); ?>
</select>
</td>
</tr>
@ -780,6 +788,21 @@ if ($config['cf_icode_id'] && $config['cf_icode_pw']) {
<input type="text" name="cf_cert_kcp_cd" value="<?php echo $config['cf_cert_kcp_cd'] ?>" id="cf_cert_kcp_cd" class="frm_input" size="3"> <a href="http://sir.co.kr/main/provider/p_cert.php" target="_blank" class="btn_frmline">KCP 휴대폰 본인확인 서비스 신청페이지</a>
</td>
</tr>
<tr>
<th scope="row" class="cf_cert_service"><label for="cf_lg_mid">LG U+ 상점아이디</label></th>
<td class="cf_cert_service">
<?php echo help('LG U+ 상점아이디 중 si_를 제외한 나머지 아이디만 입력해 주십시오.<br>서비스에 가입되어 있지 않다면, 본인확인 서비스 신청페이지에서 서비스 신청 후 상점아이디를 발급 받으실 수 있습니다.<br><strong>LG U+ 휴대폰본인확인은 ActiveX 설치가 필요하므로 Internet Explorer 에서만 사용할 수 있습니다.</strong>') ?>
<span class="sitecode">si_</span>
<input type="text" name="cf_lg_mid" value="<?php echo $config['cf_lg_mid'] ?>" id="cf_lg_mid" class="frm_input" size="20"> <a href="http://pgweb.dacom.net/pg/wmp/Home/application/apply_testid.jsp?cooperativecode=youngcart" target="_blank" class="btn_frmline">LG U+ 본인확인 서비스 신청페이지</a>
</td>
</tr>
<tr>
<th scope="row" class="cf_cert_service"><label for="cf_lg_mert_key">LG U+ MERT KEY</label></th>
<td class="cf_cert_service">
<?php echo help('LG U+ 상점MertKey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실 수 있습니다.') ?>
<input type="text" name="cf_lg_mert_key" value="<?php echo $config['cf_lg_mert_key'] ?>" id="cf_lg_mert_key" class="frm_input" size="40">
</td>
</tr>
<tr>
<th scope="row" class="cf_cert_service"><label for="cf_cert_limit">본인확인 이용제한</label></th>
<td class="cf_cert_service">
@ -1174,8 +1197,7 @@ $(function(){
echo '$(".cf_cert_service").addClass("cf_cert_hide");';
?>
$("#cf_cert_use").change(function(){
var cf_cert_sel = $("#cf_cert_use option:selected").val();
switch(cf_cert_sel) {
switch($(this).val()) {
case "0":
$(".cf_cert_service").addClass("cf_cert_hide");
break;
@ -1220,6 +1242,23 @@ if($config['cf_cert_use']) {
echo module_exec_check($exe, 'ct_cli');
}
// LG의 경우 log 디렉토리 체크
if($config['cf_cert_hp'] == 'lg') {
$log_path = G5_LGXPAY_PATH.'/lgdacom/log';
if(!is_dir($log_path)) {
echo '<script>'.PHP_EOL;
echo 'alert("'.str_replace(G5_PATH.'/', '', G5_LGXPAY_PATH).'/lgdacom 폴더 안에 log 폴더를 생성하신 후 쓰기권한을 부여해 주십시오.\n> mkdir log\n> chmod 707 log");'.PHP_EOL;
echo '</script>'.PHP_EOL;
} else {
if(!is_writable($log_path)) {
echo '<script>'.PHP_EOL;
echo 'alert("'.str_replace(G5_PATH.'/', '',$log_path).' 폴더에 쓰기권한을 부여해 주십시오.\n> chmod 707 log");'.PHP_EOL;
echo '</script>'.PHP_EOL;
}
}
}
}
include_once ('./admin.tail.php');

View File

@ -114,6 +114,8 @@ $sql = " update {$g5['config_table']}
cf_cert_hp = '{$_POST['cf_cert_hp']}',
cf_cert_kcb_cd = '{$_POST['cf_cert_kcb_cd']}',
cf_cert_kcp_cd = '{$_POST['cf_cert_kcp_cd']}',
cf_lg_mid = '{$_POST['cf_lg_mid']}',
cf_lg_mert_key = '{$_POST['cf_lg_mert_key']}',
cf_cert_limit = '{$_POST['cf_cert_limit']}',
cf_cert_req = '{$_POST['cf_cert_req']}',
cf_sms_use = '{$_POST['cf_sms_use']}',

View File

@ -518,8 +518,8 @@ td.td_grpset {width:160px;border-left:1px solid #e9ecee;text-align:center}
#scf_kcpreg {display:inline-block;margin:5px 0 0;padding:5px 10px;background:#ff4f91;color:#fff;font-weight:normal;text-decoration:none}
#scf_cardtest {margin:5px 0 0}
#scf_cardtest_btn {margin-left:5px;vertical-align:middle}
.scf_cardtest {margin:5px 0 0}
.scf_cardtest_btn {margin-left:5px;vertical-align:middle}
#scf_cardtest_tip {margin:10px 0 0;padding:10px;border:3px solid #ddd}
#scf_cardtest_tip strong {display:inline-block;margin:0 0 5px}
#scf_cardtest_tip dl {margin:0 0 15px;padding:0;zoom:1}
@ -527,6 +527,8 @@ td.td_grpset {width:160px;border-left:1px solid #e9ecee;text-align:center}
#scf_cardtest_tip dt {float:left;width:100px}
#scf_cardtest_tip dd {padding:0;overflow:hidden}
.scf_cardtest_tip {display:none}
.scf_cardtest_hide {display:none}
.scf_cardtest_tip_adm_hide {display:none}
.scf_img {display:none}

View File

@ -78,6 +78,12 @@ if(!isset($default['de_member_reg_coupon_minimum'])) {
sql_query(" ALTER TABLE `{$g5['g5_shop_default_table']}`
ADD `de_member_reg_coupon_minimum` int(11) NOT NULL DEFAULT '0' AFTER `de_member_reg_coupon_price` ", true);
}
// lg 결제관련 필드 추가
if(!isset($default['de_pg_service'])) {
sql_query(" ALTER TABLE `{$g5['g5_shop_default_table']}`
ADD `de_pg_service` varchar(255) NOT NULL DEFAULT '' AFTER `de_sms_hp` ", true);
}
?>
<form name="fconfig" action="./configformupdate.php" onsubmit="return fconfig_check(this)" method="post" enctype="MULTIPART/FORM-DATA">
@ -577,7 +583,17 @@ if(!isset($default['de_member_reg_coupon_minimum'])) {
주문 완료 <input type="text" name="de_point_days" value="<?php echo $default['de_point_days']; ?>" id="de_point_days" class="frm_input" size="2"> 일 이후에 포인트를 부여
</td>
</tr>
<tr class="kcp_info_fld">
<tr>
<th scope="row"><label for="de_pg_service">결제대행사</label></th>
<td>
<?php echo help('쇼핑몰에서 이용하실 결제대행사를 선택합니다.'); ?>
<select id="de_pg_service" name="de_pg_service">
<option value="kcp" <?php echo get_selected($default['de_pg_service'], 'kcp'); ?>>KCP</option>
<option value="lg" <?php echo get_selected($default['de_pg_service'], 'lg'); ?>>LG U+</option>
</select>
</td>
</tr>
<tr class="pg_info_fld kcp_info_fld">
<th scope="row">
<label for="de_kcp_mid">KCP SITE CODE</label><br>
<a href="http://sir.co.kr/main/provider/p_pg.php" target="_blank" id="scf_kcpreg">KCP서비스신청하기</a>
@ -587,13 +603,30 @@ if(!isset($default['de_member_reg_coupon_minimum'])) {
<span class="sitecode">SR</span> <input type="text" name="de_kcp_mid" value="<?php echo $default['de_kcp_mid']; ?>" id="de_kcp_mid" class="frm_input" size="2" maxlength="3" style="font:bold 15px Verdana;"> 영대문자, 숫자 혼용 3자리
</td>
</tr>
<tr class="kcp_info_fld">
<tr class="pg_info_fld kcp_info_fld">
<th scope="row"><label for="de_kcp_site_key">KCP SITE KEY</label></th>
<td>
<?php echo help("25자리 영대소문자와 숫자 - 그리고 _ 로 이루어 집니다. SITE KEY 발급 KCP 전화: 1544-8660\n예) 1Q9YRV83gz6TukH8PjH0xFf__"); ?>
<input type="text" name="de_kcp_site_key" value="<?php echo $default['de_kcp_site_key']; ?>" id="de_kcp_site_key" class="frm_input" size="32" maxlength="25">
</td>
</tr>
<tr class="pg_info_fld lg_info_fld">
<th scope="row">
<label for="cf_lg_mid">LG U+ 상점아이디</label><br>
<a href="http://pgweb.dacom.net/pg/wmp/Home/application/apply_testid.jsp?cooperativecode=youngcart" target="_blank" id="scf_kcpreg">LG U+ 서비스신청하기</a>
</th>
<td>
<?php echo help("LG U+ 에서 받은 si_ 로 시작하는 상점 ID를 입력하세요.\n만약, 상점 ID가 si_로 시작하지 않는다면 LG U+에 사이트코드 변경 요청을 하십시오. 예) si_lguplus\n<a href=\"".G5_ADMIN_URL."/config_form.php#anc_cf_cert\">기본환경설정 &gt; 본인확인</a> 설정의 LG U+ 상점아이디와 동일합니다."); ?>
<span class="sitecode">si_</span> <input type="text" name="cf_lg_mid" value="<?php echo $config['cf_lg_mid']; ?>" id="cf_lg_mid" class="frm_input" size="10" maxlength="20" style="font:bold 15px Verdana;"> 영문자, 숫자 혼용
</td>
</tr>
<tr class="pg_info_fld lg_info_fld">
<th scope="row"><label for="cf_lg_mert_key">LG U+ MERT KEY</label></th>
<td>
<?php echo help("LG U+ 상점MertKey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실 수 있습니다.\n예) 95160cce09854ef44d2edb2bfb05f9f3\n<a href=\"".G5_ADMIN_URL."/config_form.php#anc_cf_cert\">기본환경설정 &gt; 본인확인</a> 설정의 LG U+ MERT KEY와 동일합니다."); ?>
<input type="text" name="cf_lg_mert_key" value="<?php echo $config['cf_lg_mert_key']; ?>" id="cf_lg_mert_key" class="frm_input" size="32" maxlength="50">
</td>
</tr>
<tr>
<th scope="row">에스크로 사용</th>
<td>
@ -612,15 +645,20 @@ if(!isset($default['de_member_reg_coupon_minimum'])) {
<label for="de_card_test1">실결제 </label>
<input type="radio" name="de_card_test" value="1" <?php echo $default['de_card_test']==1?"checked":""; ?> id="de_card_test2">
<label for="de_card_test2">테스트결제</label>
<div id="scf_cardtest">
<div class="scf_cardtest kcp_cardtest">
<a href="https://admin8.kcp.co.kr/assist/login.LoginAction.do" target="_blank" class="btn_frmline">실결제 관리자</a>
<a href="http://testadmin8.kcp.co.kr/assist/login.LoginAction.do" target="_blank" class="btn_frmline">테스트 관리자</a></div>
<a href="http://testadmin8.kcp.co.kr/assist/login.LoginAction.do" target="_blank" class="btn_frmline">테스트 관리자</a>
</div>
<div class="scf_cardtest lg_cardtest">
<a href="https://pgweb.uplus.co.kr/" target="_blank" class="btn_frmline">실결제 관리자</a>
<a href="https://pgweb.uplus.co.kr/tmert" target="_blank" class="btn_frmline">테스트 관리자</a>
</div>
<div id="scf_cardtest_tip">
<strong>일반결제 사용시 테스트 결제</strong>
<dl>
<dt>신용카드</dt><dd>1000원 이상, 모든 카드가 테스트 되는 것은 아니므로 여러가지 카드로 결제해 보셔야 합니다.<br>(BC, 현대, 롯데, 삼성카드)</dd>
<dt>계좌이체</dt><dd>150원 이상, 계좌번호, 비밀번호는 가짜로 입력해도 되며, 주민등록번호는 공인인증서의 것과 일치해야 합니다.</dd>
<dt>가상계좌</dt><dd>1원 이상, 모든 은행이 테스트 되는 것은 아니며 "VB10 : 해당 은행 계좌 없음" 자주 발생함.<br>(광주은행, 하나은행)</dd>
<dt>가상계좌</dt><dd>1원 이상, 모든 은행이 테스트 되는 것은 아니며 "해당 은행 계좌 없음" 자주 발생함.<br>(광주은행, 하나은행)</dd>
<dt>휴대폰</dt><dd>1004원, 실결제가 되며 다음날 새벽에 일괄 취소됨</dd>
</dl>
<strong>에스크로 사용시 테스트 결제</strong><br>
@ -630,25 +668,24 @@ if(!isset($default['de_member_reg_coupon_minimum'])) {
<dt>가상계좌</dt><dd>1원 이상, 입금통보는 제대로 되지 않음.</dd>
<dt>휴대폰</dt><dd>테스트 지원되지 않음.</dd>
</dl>
<ul>
<ul id="kcp_cardtest_tip" class="scf_cardtest_tip_adm scf_cardtest_tip_adm_hide">
<li>테스트결제의 <a href="http://testadmin8.kcp.co.kr/assist/login.LoginAction.do" target="_blank">상점관리자</a> 로그인 정보는 KCP로 문의하시기 바랍니다. (기술지원 1544-8661)</li>
<li><b>일반결제</b>의 테스트 사이트코드는 <b>T0000</b> 이며, <b>에스크로 결제</b>의 테스트 사이트코드는 <b>T0007</b> 입니다.</li>
</ul>
<ul id="lg_cardtest_tip" class="scf_cardtest_tip_adm scf_cardtest_tip_adm_hide">
<li>테스트결제의 <a href="http://pgweb.dacom.net:7085/" target="_blank">상점관리자</a> 로그인 정보는 LG U+ 상점아이디 첫 글자에 t를 추가해서 로그인하시기 바랍니다. 예) tsi_lguplus</li>
</ul>
</div>
<script>
$('#scf_cardtest_tip').attr('class','scf_cardtest_tip');
$('<button type="button" id="scf_cardtest_btn" class="btn_frmline">테스트결제 팁 더보기</button>').appendTo('#scf_cardtest');
</script>
</td>
</tr>
<tr>
<th scope="row"><label for="de_tax_flag_use">복합과세 결제</label></th>
<td>
<?php echo help("복합과세(과세, 비과세) 결제를 사용하려면 체크하십시오.\n복합과세 결제를 사용하기 전 KCP에 결제 신청을 해주셔야 합니다."); ?>
<?php echo help("복합과세(과세, 비과세) 결제를 사용하려면 체크하십시오.\n복합과세 결제를 사용하기 전 PG사에 결제 신청을 해주셔야 합니다."); ?>
<input type="checkbox" name="de_tax_flag_use" value="1" id="de_tax_flag_use"<?php echo $default['de_tax_flag_use']?' checked':''; ?>> 사용
</td>
</tr>
<tr>
<tr id="kcp_common_url">
<th scope="row">공통 URL</th>
<td>
<?php echo help("가상계좌 사용시 다음 주소를 <strong>KCP 관리자 > 상점정보관리 > 정보변경 > 공통URL 정보 > 공통URL 변경후</strong>에 넣으셔야 상점에 자동으로 입금 통보됩니다."); ?>
@ -656,6 +693,17 @@ if(!isset($default['de_member_reg_coupon_minimum'])) {
</tr>
</tbody>
</table>
<script>
$('#scf_cardtest_tip').addClass('scf_cardtest_tip');
$('<button type="button" class="scf_cardtest_btn btn_frmline">테스트결제 팁 더보기</button>').appendTo('.scf_cardtest');
$(".scf_cardtest").addClass("scf_cardtest_hide");
$(".<?php echo $default['de_pg_service']; ?>_cardtest").removeClass("scf_cardtest_hide");
$("#<?php echo $default['de_pg_service']; ?>_cardtest_tip").removeClass("scf_cardtest_tip_adm_hide");
<?php if($default['de_pg_service'] != 'kcp') { ?>
$("#kcp_common_url").hide();
<?php } ?>
</script>
</div>
</section>
@ -1270,9 +1318,30 @@ function fconfig_check(f)
}
$(function() {
$("#scf_cardtest_btn").bind("click", function() {
$(".pg_info_fld").hide();
<?php if($default['de_pg_service']) { ?>
$(".<?php echo $default['de_pg_service']; ?>_info_fld").show();
<?php } else { ?>
$(".kcp_info_fld").show();
<?php } ?>
$("#de_pg_service").on("change", function() {
var pg = $(this).val();
$(".pg_info_fld:visible").hide();
$("."+pg+"_info_fld").show();
$(".scf_cardtest").addClass("scf_cardtest_hide");
$("."+pg+"_cardtest").removeClass("scf_cardtest_hide");
$(".scf_cardtest_tip_adm").addClass("scf_cardtest_tip_adm_hide");
$("#"+pg+"_cardtest_tip").removeClass("scf_cardtest_tip_adm_hide");
if(pg == 'kcp')
$("#kcp_common_url").show();
else
$("#kcp_common_url").hide();
});
$(".scf_cardtest_btn").bind("click", function() {
var $cf_cardtest_tip = $("#scf_cardtest_tip");
var $cf_cardtest_btn = $("#scf_cardtest_btn");
var $cf_cardtest_btn = $(".scf_cardtest_btn");
$cf_cardtest_tip.toggle();
@ -1288,21 +1357,41 @@ $(function() {
<?php
// 결제모듈 실행권한 체크
if($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use'] || $default['de_card_use']) {
$is_linux = true;
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
$is_linux = false;
// kcp의 경우 pp_cli 체크
if($default['de_pg_service'] == 'lg') {
$is_linux = true;
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
$is_linux = false;
$exe = '/kcp/bin/';
if($is_linux) {
if(PHP_INT_MAX == 2147483647) // 32-bit
$exe .= 'pp_cli';
else
$exe .= 'pp_cli_x64';
} else {
$exe .= 'pp_cli_exe.exe';
$exe = '/kcp/bin/';
if($is_linux) {
if(PHP_INT_MAX == 2147483647) // 32-bit
$exe .= 'pp_cli';
else
$exe .= 'pp_cli_x64';
} else {
$exe .= 'pp_cli_exe.exe';
}
echo module_exec_check(G5_SHOP_PATH.$exe, 'pp_cli');
}
echo module_exec_check(G5_SHOP_PATH.$exe, 'pp_cli');
// LG의 경우 log 디렉토리 체크
if($default['de_pg_service'] == 'lg') {
$log_path = G5_LGXPAY_PATH.'/lgdacom/log';
if(!is_dir($log_path)) {
echo '<script>'.PHP_EOL;
echo 'alert("'.str_replace(G5_PATH.'/', '', G5_LGXPAY_PATH).'/lgdacom 폴더 안에 log 폴더를 생성하신 후 쓰기권한을 부여해 주십시오.\n> mkdir log\n> chmod 707 log");'.PHP_EOL;
echo '</script>'.PHP_EOL;
} else {
if(!is_writable($log_path)) {
echo '<script>'.PHP_EOL;
echo 'alert("'.str_replace(G5_PATH.'/', '',$log_path).' 폴더에 쓰기권한을 부여해 주십시오.\n> chmod 707 log");'.PHP_EOL;
echo '</script>'.PHP_EOL;
}
}
}
}
include_once (G5_ADMIN_PATH.'/admin.tail.php');

View File

@ -136,6 +136,7 @@ $sql = " update {$g5['g5_shop_default_table']}
de_simg_height = '$de_simg_height',
de_mimg_width = '$de_mimg_width',
de_mimg_height = '$de_mimg_height',
de_pg_service = '$de_pg_service',
de_kcp_mid = '$de_kcp_mid',
de_kcp_site_key = '$de_kcp_site_key',
de_iche_use = '$de_iche_use',
@ -172,13 +173,15 @@ sql_query($sql);
// 환경설정 > 포인트 사용
sql_query(" update {$g5['config_table']} set cf_use_point = '$cf_use_point' ");
// 아이코드 설정
// LG, 아이코드 설정
$sql = " update {$g5['config_table']}
set cf_sms_use = '$cf_sms_use',
cf_icode_id = '$cf_icode_id',
cf_icode_pw = '$cf_icode_pw',
cf_icode_server_ip = '$cf_icode_server_ip',
cf_icode_server_port = '$cf_icode_server_port' ";
cf_icode_server_port = '$cf_icode_server_port',
cf_lg_mid = '$cf_lg_mid',
cf_lg_mert_key = '$cf_lg_mert_key' ";
sql_query($sql);
goto_url("./configform.php");

View File

@ -37,8 +37,10 @@ include_once(G5_PATH.'/head.sub.php');
<label for="od_send_mail">배송안내 메일</label>
<input type="checkbox" name="send_sms" value="1" id="od_send_sms" checked="checked">
<label for="od_send_sms">배송안내 SMS</label>
<?php if($default['de_pg_service'] == 'kcp') { ?>
<input type="checkbox" name="send_escrow" value="1" id="od_send_escrow">
<label for="od_send_escrow">에스크로배송등록</label>
<?php } ?>
</div>
<div class="btn_confirm01 btn_confirm">

View File

@ -77,6 +77,25 @@ if(!sql_query(" select ad_addr3 from {$g5['g5_shop_order_address_table']} limit
sql_query(" ALTER TABLE `{$g5['g5_shop_order_address_table']}`
ADD `ad_addr3` varchar(255) NOT NULL DEFAULT '' AFTER `ad_addr2` ", true);
}
// 결제 PG 필드 추가
if(!sql_query(" select od_pg from {$g5['g5_shop_order_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE `{$g5['g5_shop_order_table']}`
ADD `od_pg` varchar(255) NOT NULL DEFAULT '' AFTER `od_mobile`,
ADD `od_casseqno` varchar(255) NOT NULL DEFAULT '' AFTER `od_escrow` ", true);
// 주문 결제 PG kcp로 설정
sql_query(" update {$g5['g5_shop_order_table']} set od_pg = 'kcp' ");
}
// LG 현금영수증 JS
if($od['od_pg'] == 'lg') {
if($default['de_card_test']) {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr:7085/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
} else {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
}
}
?>
<section id="anc_sodr_list">
@ -319,6 +338,7 @@ if(!sql_query(" select ad_addr3 from {$g5['g5_shop_order_address_table']} limit
<input type="hidden" name="od_hp" value="<?php echo $od['od_hp']; ?>">
<input type="hidden" name="od_tno" value="<?php echo $od['od_tno']; ?>">
<input type="hidden" name="od_escrow" value="<?php echo $od['od_escrow']; ?>">
<input type="hidden" name="od_pg" value="<?php echo $od['od_pg']; ?>">
<div class="compare_wrap">
@ -402,16 +422,27 @@ if(!sql_query(" select ad_addr3 from {$g5['g5_shop_order_address_table']} limit
<td>
<?php
if ($od['od_settle_case'] != '무통장') {
$pg_url = 'http://admin8.kcp.co.kr';
$pg_test = 'KCP';
if ($default['de_card_test']) {
// 로그인 아이디 / 비번
// 일반 : test1234 / test12345
// 에스크로 : escrow / escrow913
$pg_url = 'http://testadmin8.kcp.co.kr';
$pg_test .= ' 테스트 ';
}
switch($od['od_pg']) {
case 'lg':
$pg_url = 'http://pgweb.uplus.co.kr';
$pg_test = 'LG eCredit';
if ($default['de_card_test']) {
$pg_url = 'http://pgweb.uplus.co.kr/tmert';
$pg_test .= ' 테스트 ';
}
break;
default:
$pg_url = 'http://admin8.kcp.co.kr';
$pg_test = 'KCP';
if ($default['de_card_test']) {
// 로그인 아이디 / 비번
// 일반 : test1234 / test12345
// 에스크로 : escrow / escrow913
$pg_url = 'http://testadmin8.kcp.co.kr';
$pg_test .= ' 테스트 ';
}
}
echo "<a href=\"{$pg_url}\" target=\"_blank\">{$pg_test}바로가기</a><br>";
}
//------------------------------------------------------------------------------
@ -487,10 +518,27 @@ if(!sql_query(" select ad_addr3 from {$g5['g5_shop_order_address_table']} limit
<td>
<?php
if ($od['od_cash']) {
require G5_SHOP_PATH.'/settle_kcp.inc.php';
if($od['od_pg'] == 'lg') {
require G5_SHOP_PATH.'/settle_lg.inc.php';
$cash = unserialize($od['od_cash_info']);
$cash_receipt_script = 'window.open(\''.G5_CASH_RECEIPT_URL.$default['de_kcp_mid'].'&orderid='.$od_id.'&bill_yn=Y&authno='.$cash['receipt_no'].'\', \'taxsave_receipt\', \'width=360,height=647,scrollbars=0,menus=0\');';
switch($od['od_settle_case']) {
case '계좌이체':
$trade_type = 'BANK';
break;
case '가상계좌':
$trade_type = 'CAS';
break;
default:
$trade_type = 'CR';
break;
}
$cash_receipt_script = 'javascript:showCashReceipts(\''.$LGD_MID.'\',\''.$od['od_id'].'\',\''.$od['od_casseqno'].'\',\''.$trade_type.'\',\''.$CST_PLATFORM.'\');';
} else {
require G5_SHOP_PATH.'/settle_kcp.inc.php';
$cash = unserialize($od['od_cash_info']);
$cash_receipt_script = 'window.open(\''.G5_CASH_RECEIPT_URL.$default['de_kcp_mid'].'&orderid='.$od_id.'&bill_yn=Y&authno='.$cash['receipt_no'].'\', \'taxsave_receipt\', \'width=360,height=647,scrollbars=0,menus=0\');';
}
?>
<a href="javascript:;" onclick="<?php echo $cash_receipt_script; ?>">현금영수증 확인</a>
<?php } else { ?>

View File

@ -130,7 +130,7 @@ include "./ordersms.inc.php";
// 에스크로 배송처리
if($_POST['od_tno'] && $_POST['od_escrow'] == 1)
if($_POST['od_pg'] == 'kcp' && $_POST['od_tno'] && $_POST['od_escrow'] == 1)
{
$escrow_tno = array();
$escrow_corp = array();

View File

@ -465,7 +465,7 @@ if(!sql_query(" select mb_id from {$g5['g5_shop_order_delete_table']} limit 1 ",
<input type="checkbox" name="send_sms" value="1" id="od_send_sms" checked="checked">
<label for="od_send_sms"><?php echo $change_status; ?>안내 SMS</label>
<?php } ?>
<?php if($od_status == '준비') { ?>
<?php if($od_status == '준비' && $default['de_pg_service'] == 'kcp') { ?>
<input type="checkbox" name="send_escrow" value="1" id="od_send_escrow">
<label for="od_send_escrow">에스크로배송등록</label>
<?php } ?>

View File

@ -46,6 +46,15 @@ $pg_anchor = '<ul class="anchor">
<li><a href="#anc_spp_info">주문 정보</a></li>
<li><a href="#anc_spp_pay">결제 정보</a></li>
</ul>';
// pg 설정 필드 추가
if(!sql_query(" select pp_pg from {$g5['g5_shop_personalpay_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE `{$g5['g5_shop_personalpay_table']}`
ADD `pp_pg` varchar(255) NOT NULL DEFAULT '' AFTER `pp_price` ", true);
// 개인결제 PG kcp로 설정
sql_query(" update {$g5['g5_shop_personalpay_table']} set pp_pg = 'kcp' ");
}
?>
<form name="fpersonalpayform" action="./personalpayformupdate.php" method="post" onsubmit="return form_check(this);">

View File

@ -52,6 +52,7 @@ define('G5_MOBILE_DIR', 'mobile');
define('G5_OKNAME_DIR', 'okname');
define('G5_KCPCERT_DIR', 'kcpcert');
define('G5_LGXPAY_DIR', 'lgxpay');
define('G5_SNS_DIR', 'sns');
define('G5_SYNDI_DIR', 'syndi');
@ -86,6 +87,7 @@ define('G5_CAPTCHA_URL', G5_PLUGIN_URL.'/'.G5_CAPTCHA_DIR);
define('G5_EDITOR_URL', G5_PLUGIN_URL.'/'.G5_EDITOR_DIR);
define('G5_OKNAME_URL', G5_PLUGIN_URL.'/'.G5_OKNAME_DIR);
define('G5_KCPCERT_URL', G5_PLUGIN_URL.'/'.G5_KCPCERT_DIR);
define('G5_LGXPAY_URL', G5_PLUGIN_URL.'/'.G5_LGXPAY_DIR);
define('G5_SNS_URL', G5_PLUGIN_URL.'/'.G5_SNS_DIR);
define('G5_SYNDI_URL', G5_PLUGIN_URL.'/'.G5_SYNDI_DIR);
define('G5_MOBILE_URL', G5_URL.'/'.G5_MOBILE_DIR);
@ -105,6 +107,7 @@ define('G5_EDITOR_PATH', G5_PLUGIN_PATH.'/'.G5_EDITOR_DIR);
define('G5_OKNAME_PATH', G5_PLUGIN_PATH.'/'.G5_OKNAME_DIR);
define('G5_KCPCERT_PATH', G5_PLUGIN_PATH.'/'.G5_KCPCERT_DIR);
define('G5_LGXPAY_PATH', G5_PLUGIN_PATH.'/'.G5_LGXPAY_DIR);
define('G5_SNS_PATH', G5_PLUGIN_PATH.'/'.G5_SNS_DIR);
define('G5_SYNDI_PATH', G5_PLUGIN_PATH.'/'.G5_SYNDI_DIR);

View File

@ -278,6 +278,8 @@ CREATE TABLE IF NOT EXISTS `g5_config` (
`cf_cert_hp` varchar(255) NOT NULL DEFAULT '',
`cf_cert_kcb_cd` varchar(255) NOT NULL DEFAULT '',
`cf_cert_kcp_cd` varchar(255) NOT NULL DEFAULT '',
`cf_lg_mid` varchar(255) NOT NULL DEFAULT '',
`cf_lg_mert_key` varchar(255) NOT NULL DEFAULT '',
`cf_cert_limit` int(11) NOT NULL DEFAULT '0',
`cf_cert_req` tinyint(4) NOT NULL DEFAULT '0',
`cf_sms_use` varchar(255) NOT NULL DEFAULT '',

View File

@ -294,6 +294,7 @@ CREATE TABLE IF NOT EXISTS `g5_shop_default` (
`de_sms_use4` tinyint(4) NOT NULL DEFAULT '0',
`de_sms_use5` tinyint(4) NOT NULL DEFAULT '0',
`de_sms_hp` varchar(255) NOT NULL DEFAULT '',
`de_pg_service` varchar(255) NOT NULL DEFAULT '',
`de_kcp_mid` varchar(255) NOT NULL DEFAULT '',
`de_kcp_site_key` varchar(255) NOT NULL DEFAULT '',
`de_iche_use` tinyint(4) NOT NULL DEFAULT '0',
@ -589,9 +590,11 @@ CREATE TABLE IF NOT EXISTS `g5_shop_order` (
`od_hope_date` date NOT NULL DEFAULT '0000-00-00',
`od_settle_case` varchar(255) NOT NULL DEFAULT '',
`od_mobile` tinyint(4) NOT NULL DEFAULT '0',
`od_pg` varchar(255) NOT NULL DEFAULT '',
`od_tno` varchar(255) NOT NULL DEFAULT '',
`od_app_no` varchar(20) NOT NULL DEFAULT '',
`od_escrow` tinyint(4) NOT NULL DEFAULT '0',
`od_casseqno` varchar(255) NOT NULL DEFAULT '',
`od_tax_flag` tinyint(4) NOT NULL DEFAULT '0',
`od_tax_mny` int(11) NOT NULL DEFAULT '0',
`od_vat_mny` int(11) NOT NULL DEFAULT '0',
@ -666,6 +669,7 @@ CREATE TABLE IF NOT EXISTS `g5_shop_personalpay` (
`pp_content` TEXT NOT NULL,
`pp_use` TINYINT(4) NOT NULL DEFAULT '0',
`pp_price` INT(11) NOT NULL DEFAULT '0',
`pp_pg` varchar(255) NOT NULL DEFAULT '',
`pp_tno` VARCHAR(255) NOT NULL DEFAULT '',
`pp_app_no` VARCHAR(20) NOT NULL DEFAULT '',
`pp_receipt_price` INT(11) NOT NULL DEFAULT '0',

View File

@ -295,6 +295,7 @@ if($g5_shop_install) {
de_cart_keep_term = '15',
de_card_point = '0',
de_point_days = '7',
de_pg_service = 'kcp',
de_kcp_mid = '',
de_send_cost_case = '차등',
de_send_cost_limit = '20000;30000;40000',

View File

@ -24,6 +24,11 @@ function certify_win_open(type, url)
var position = ",left=" + leftpos + ", top=" + toppos;
var AUTH_POP = window.open(url,'auth_popup', winopts + position);
}
else if(type == 'lg-hp')
{
var popupWindow = window.open( url, "auth_popup", "left=200, top=100, width=400, height=400, scrollbar=yes" );
popupWindow.focus();
}
}
// 인증체크

View File

@ -0,0 +1,7 @@
<?php
include_once('../../../common.php');
if (!defined('G5_USE_SHOP') || !G5_USE_SHOP)
die('<p>쇼핑몰 설치 후 이용해 주십시오.</p>');
define('_SHOP_', true);
?>

View File

@ -0,0 +1,3 @@
<!-- 해당 페이지는 사용자가 ISP{국민/BC) 카드 결제를 중단하였을 , 사용자에게 보여지는 페이지입니다. -->
사용자가 ISP(국민/BC) 카드결제을 중단하였습니다.

View File

@ -0,0 +1,22 @@
<?php
// 해당 페이지는 사용자가 ISP{국민/BC) 카드 결제를 성공하였을 때, 사용자에게 보여지는 페이지입니다.
include_once('./_common.php');
$LGD_OID = $_GET['LGD_OID'];
echo "LGD_OID = ".$LGD_OID;
// 결제성공시에만, 고객사에서 생성한 주문번호 (LGD_OID)를 해당페이지로 전송합니다.
// LGD_KVPMISPNOTEURL 에서 수신한 결제결과값과 연동하여 사용자에게 보여줄 결제완료화면을 구성하시기 바라며,
// 결제결과는 LGD_KVPMISPNOTEURL 로 먼저 전송되므로 해당건의 DB연동된 결과를 이용하여 결제완료여부를 보이도록 합니다.
////////////////////////////////////////////////////////////////////////////////////////////////////////
// 만약, 고객사에서 'App To App' 방식으로 국민, BC카드사에서 받은 결제 승인을 받고 고객사의 앱을 실행하고자 할때
// 고객사 앱은 initilize function에 응답받는 Custom URL을 호출하면 됩니다.
// ex) window.location.href = smartxpay://TID=1234567890&OID=0987654321
//
// window.location.href = "고객사 앱명://" 로 호출하시면 됩니다.
////////////////////////////////////////////////////////////////////////////////////////////////////////
?>

153
mobile/shop/lg/note_url.php Normal file
View File

@ -0,0 +1,153 @@
<?php
include_once('./_common.php');
/*
* 공통결제결과 정보
*/
$LGD_RESPCODE = ""; // 응답코드: 0000(성공) 그외 실패
$LGD_RESPMSG = ""; // 응답메세지
$LGD_MID = ""; // 상점아이디
$LGD_OID = ""; // 주문번호
$LGD_AMOUNT = ""; // 거래금액
$LGD_TID = ""; // LG유플러스에서 부여한 거래번호
$LGD_PAYTYPE = ""; // 결제수단코드
$LGD_PAYDATE = ""; // 거래일시(승인일시/이체일시)
$LGD_HASHDATA = ""; // 해쉬값
$LGD_FINANCECODE = ""; // 결제기관코드(카드종류/은행코드/이통사코드)
$LGD_FINANCENAME = ""; // 결제기관이름(카드이름/은행이름/이통사이름)
$LGD_ESCROWYN = ""; // 에스크로 적용여부
$LGD_TIMESTAMP = ""; // 타임스탬프
$LGD_FINANCEAUTHNUM = ""; // 결제기관 승인번호(신용카드, 계좌이체, 상품권)
/*
* 신용카드 결제결과 정보
*/
$LGD_CARDNUM = ""; // 카드번호(신용카드)
$LGD_CARDINSTALLMONTH = ""; // 할부개월수(신용카드)
$LGD_CARDNOINTYN = ""; // 무이자할부여부(신용카드) - '1'이면 무이자할부 '0'이면 일반할부
$LGD_TRANSAMOUNT = ""; // 환율적용금액(신용카드)
$LGD_EXCHANGERATE = ""; // 환율(신용카드)
/*
* 휴대폰
*/
$LGD_PAYTELNUM = ""; // 결제에 이용된전화번호
/*
* 계좌이체, 무통장
*/
$LGD_ACCOUNTNUM = ""; // 계좌번호(계좌이체, 무통장입금)
$LGD_CASTAMOUNT = ""; // 입금총액(무통장입금)
$LGD_CASCAMOUNT = ""; // 현입금액(무통장입금)
$LGD_CASFLAG = ""; // 무통장입금 플래그(무통장입금) - 'R':계좌할당, 'I':입금, 'C':입금취소
$LGD_CASSEQNO = ""; // 입금순서(무통장입금)
$LGD_CASHRECEIPTNUM = ""; // 현금영수증 승인번호
$LGD_CASHRECEIPTSELFYN = ""; // 현금영수증자진발급제유무 Y: 자진발급제 적용, 그외 : 미적용
$LGD_CASHRECEIPTKIND = ""; // 현금영수증 종류 0: 소득공제용 , 1: 지출증빙용
/*
* OK캐쉬백
*/
$LGD_OCBSAVEPOINT = ""; // OK캐쉬백 적립포인트
$LGD_OCBTOTALPOINT = ""; // OK캐쉬백 누적포인트
$LGD_OCBUSABLEPOINT = ""; // OK캐쉬백 사용가능 포인트
/*
* 구매정보
*/
$LGD_BUYER = ""; // 구매자
$LGD_PRODUCTINFO = ""; // 상품명
$LGD_BUYERID = ""; // 구매자 ID
$LGD_BUYERADDRESS = ""; // 구매자 주소
$LGD_BUYERPHONE = ""; // 구매자 전화번호
$LGD_BUYEREMAIL = ""; // 구매자 이메일
$LGD_BUYERSSN = ""; // 구매자 주민번호
$LGD_PRODUCTCODE = ""; // 상품코드
$LGD_RECEIVER = ""; // 수취인
$LGD_RECEIVERPHONE = ""; // 수취인 전화번호
$LGD_DELIVERYINFO = ""; // 배송지
$LGD_RESPCODE = $_POST["LGD_RESPCODE"];
$LGD_RESPMSG = $_POST["LGD_RESPMSG"];
$LGD_MID = $_POST["LGD_MID"];
$LGD_OID = $_POST["LGD_OID"];
$LGD_AMOUNT = $_POST["LGD_AMOUNT"];
$LGD_TID = $_POST["LGD_TID"];
$LGD_PAYTYPE = $_POST["LGD_PAYTYPE"];
$LGD_PAYDATE = $_POST["LGD_PAYDATE"];
$LGD_HASHDATA = $_POST["LGD_HASHDATA"];
$LGD_FINANCECODE = $_POST["LGD_FINANCECODE"];
$LGD_FINANCENAME = $_POST["LGD_FINANCENAME"];
$LGD_ESCROWYN = $_POST["LGD_ESCROWYN"];
$LGD_TRANSAMOUNT = $_POST["LGD_TRANSAMOUNT"];
$LGD_EXCHANGERATE = $_POST["LGD_EXCHANGERATE"];
$LGD_CARDNUM = $_POST["LGD_CARDNUM"];
$LGD_CARDINSTALLMONTH = $_POST["LGD_CARDINSTALLMONTH"];
$LGD_CARDNOINTYN = $_POST["LGD_CARDNOINTYN"];
$LGD_TIMESTAMP = $_POST["LGD_TIMESTAMP"];
$LGD_FINANCEAUTHNUM = $_POST["LGD_FINANCEAUTHNUM"];
$LGD_PAYTELNUM = $_POST["LGD_PAYTELNUM"];
$LGD_ACCOUNTNUM = $_POST["LGD_ACCOUNTNUM"];
$LGD_CASTAMOUNT = $_POST["LGD_CASTAMOUNT"];
$LGD_CASCAMOUNT = $_POST["LGD_CASCAMOUNT"];
$LGD_CASFLAG = $_POST["LGD_CASFLAG"];
$LGD_CASSEQNO = $_POST["LGD_CASSEQNO"];
$LGD_CASHRECEIPTNUM = $_POST["LGD_CASHRECEIPTNUM"];
$LGD_CASHRECEIPTSELFYN = $_POST["LGD_CASHRECEIPTSELFYN"];
$LGD_CASHRECEIPTKIND = $_POST["LGD_CASHRECEIPTKIND"];
$LGD_OCBSAVEPOINT = $_POST["LGD_OCBSAVEPOINT"];
$LGD_OCBTOTALPOINT = $_POST["LGD_OCBTOTALPOINT"];
$LGD_OCBUSABLEPOINT = $_POST["LGD_OCBUSABLEPOINT"];
$LGD_BUYER = $_POST["LGD_BUYER"];
$LGD_PRODUCTINFO = $_POST["LGD_PRODUCTINFO"];
$LGD_BUYERID = $_POST["LGD_BUYERID"];
$LGD_BUYERADDRESS = $_POST["LGD_BUYERADDRESS"];
$LGD_BUYERPHONE = $_POST["LGD_BUYERPHONE"];
$LGD_BUYEREMAIL = $_POST["LGD_BUYEREMAIL"];
$LGD_BUYERSSN = $_POST["LGD_BUYERSSN"];
$LGD_PRODUCTCODE = $_POST["LGD_PRODUCTCODE"];
$LGD_RECEIVER = $_POST["LGD_RECEIVER"];
$LGD_RECEIVERPHONE = $_POST["LGD_RECEIVERPHONE"];
$LGD_DELIVERYINFO = $_POST["LGD_DELIVERYINFO"];
$LGD_MERTKEY = $config['cf_lg_mert_key']; //LG유플러스에서 발급한 상점키로 변경해 주시기 바랍니다.
$LGD_HASHDATA2 = md5($LGD_MID.$LGD_OID.$LGD_AMOUNT.$LGD_RESPCODE.$LGD_TIMESTAMP.$LGD_MERTKEY);
/*
* 상점 처리결과 리턴메세지
*
* OK : 상점 처리결과 성공
* 그외 : 상점 처리결과 실패
*
* ※ 주의사항 : 성공시 'OK' 문자이외의 다른문자열이 포함되면 실패처리 되오니 주의하시기 바랍니다.
*/
$resultMSG = "결제결과 상점 DB처리(NOTE_URL) 결과값을 입력해 주시기 바랍니다.";
if ($LGD_HASHDATA2 == $LGD_HASHDATA) { //해쉬값 검증이 성공하면
if($LGD_RESPCODE == "0000"){ //결제가 성공이면
/*
* 거래성공 결과 상점 처리(DB) 부분
* 상점 결과 처리가 정상이면 "OK"
*/
//if( 결제성공 상점처리결과 성공 )
$resultMSG = "OK";
}else { //결제가 실패이면
/*
* 거래실패 결과 상점 처리(DB) 부분
* 상점결과 처리가 정상이면 "OK"
*/
//if( 결제실패 상점처리결과 성공 )
$resultMSG = "OK";
}
} else { //해쉬값 검증이 실패이면
/*
* hashdata검증 실패 로그를 처리하시기 바랍니다.
*/
$resultMSG = "결제결과 상점 DB처리(NOTE_URL) 해쉬값 검증이 실패하였습니다.";
}
echo $resultMSG;
?>

View File

@ -0,0 +1,18 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<form name="sm_form" method="POST" action="<?php echo G5_MSHOP_URL; ?>/lg/xpay_approval.php">
<input type="hidden" name="LGD_OID" id="LGD_OID" value="<?php echo $od_id; ?>"> <!-- 주문번호 -->
<input type="hidden" name="LGD_BUYER" id="LGD_BUYER" value=""> <!-- 구매자 -->
<input type="hidden" name="LGD_PRODUCTINFO" id="LGD_PRODUCTINFO" value="<?php echo $goods; ?>"> <!-- 상품정보 -->
<input type="hidden" name="LGD_AMOUNT" id="LGD_AMOUNT" value=""> <!-- 결제금액 -->
<input type="hidden" name="LGD_CUSTOM_FIRSTPAY" id="LGD_CUSTOM_FIRSTPAY" value=""> <!-- 결제수단 -->
<input type="hidden" name="LGD_BUYEREMAIL" id="LGD_BUYEREMAIL" value=""> <!-- 구매자 이메일 -->
<input type="hidden" name="LGD_TAXFREEAMOUNT" id="LGD_TAXFREEAMOUNT" value="<?php echo $comm_free_mny; ?>"> <!-- 결제금액 중 면세금액 -->
<input type="hidden" name="LGD_BUYERID" id="LGD_BUYERID" value="<?php echo $LGD_BUYERID; ?>"> <!-- 구매자ID -->
<input type="hidden" name="LGD_CASHRECEIPTYN" id="LGD_CASHRECEIPTYN" value="N"> <!-- 현금영수증 사용 설정 -->
<input type="hidden" name="LGD_BUYERPHONE" id="LGD_BUYERPHONE" value=""> <!-- 구매자 휴대폰번호 -->
<input type="hidden" name="good_mny" value="<?php echo $tot_price ?>" >
</form>

View File

@ -0,0 +1,20 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<input type="hidden" name="LGD_PAYKEY" id="LGD_PAYKEY"> <!-- LG유플러스 PAYKEY(인증후 자동셋팅)-->
<input type="hidden" name="good_mny" value="<?php echo $tot_price ?>" >
<input type="hidden" name="res_cd" 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="javascript:history.go(-1);" class="btn_cancel">취소</a>
</div>

View File

@ -0,0 +1,3 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>

View File

@ -0,0 +1,47 @@
<?php
include_once('./_common.php');
/*
xpay_approval.php 에서 세션에 저장했던 파라미터 값이 유효한지 체크
세션 유지 시간(로그인 유지시간)을 적당히 유지 하거나 세션을 사용하지 않는 경우 DB처리 하시기 바랍니다.
*/
if(!isset($_SESSION['PAYREQ_MAP'])){
alert_close('세션이 만료 되었거나 유효하지 않은 요청 입니다.');
}
$payReqMap = $_SESSION['PAYREQ_MAP']; //결제 요청시, Session에 저장했던 파라미터 MAP
$g5['title'] = 'LG 유플러스 eCredit서비스 결제';
$g5['body_script'] = 'onload="setLGDResult();"';
include_once(G5_PATH.'/head.sub.php');
$LGD_RESPCODE = $_REQUEST['LGD_RESPCODE'];
$LGD_RESPMSG = $_REQUEST['LGD_RESPMSG'];
$LGD_PAYKEY = '';
if($LGD_RESPCODE == '0000') {
$LGD_PAYKEY = $_REQUEST['LGD_PAYKEY'];
$payReqMap['LGD_RESPCODE'] = $LGD_RESPCODE;
$payReqMap['LGD_RESPMSG'] = $LGD_RESPMSG;
$payReqMap['LGD_PAYKEY'] = $LGD_PAYKEY;
} else {
alert_close('LGD_RESPCODE:' . $LGD_RESPCODE . ' ,LGD_RESPMSG:' . $LGD_RESPMSG); //인증 실패에 대한 처리 로직 추가
}
?>
<script type="text/javascript">
function setLGDResult() {
var of = window.opener.document.forderform;
of.res_cd.value = "<?php echo $LGD_RESPCODE; ?>";
of.LGD_PAYKEY.value = "<?php echo $LGD_PAYKEY; ?>";
window.opener.forderform_check();
window.close();
}
</script>
<?php
include_once(G5_PATH.'/tail.sub.php');
?>

View File

@ -0,0 +1,155 @@
<?php
include_once('./_common.php');
require_once(G5_MSHOP_PATH.'/settle_lg.inc.php');
/*
* 1. 기본결제 인증요청 정보 변경
*
* 기본정보를 변경하여 주시기 바랍니다.(파라미터 전달시 POST를 사용하세요)
*/
$LGD_OID = $_POST['LGD_OID']; //주문번호(상점정의 유니크한 주문번호를 입력하세요)
$LGD_AMOUNT = $_POST['LGD_AMOUNT']; //결제금액("," 를 제외한 결제금액을 입력하세요)
$LGD_BUYER = $_POST['LGD_BUYER']; //구매자명
$LGD_PRODUCTINFO = $_POST['LGD_PRODUCTINFO']; //상품명
$LGD_BUYEREMAIL = $_POST['LGD_BUYEREMAIL']; //구매자 이메일
$LGD_CUSTOM_FIRSTPAY = $_POST['LGD_CUSTOM_FIRSTPAY']; //상점정의 초기결제수단
$LGD_TAXFREEAMOUNT = $_POST['LGD_TAXFREEAMOUNT']; //비과세 금액
$LGD_CASHRECEIPTYN = $_POST['LGD_CASHRECEIPTYN']; //현금영수증 사용설정
$LGD_BUYERID = $_POST['LGD_BUYERID']; //구매자 ID
$LGD_BUYERPHONE = $_POST['LGD_BUYERPHONE']; //구매자 휴대폰번호
$LGD_RETURNURL = G5_MSHOP_URL.'/lg/returnurl.php';
$LGD_KVPMISPNOTEURL = G5_MSHOP_URL.'/lg/note_url.php';
$LGD_KVPMISPWAPURL = G5_MSHOP_URL.'/lg/mispwapurl.php?LGD_OID='.$LGD_OID; //ISP 카드 결제시, URL 대신 앱명 입력시, 앱호출함
$LGD_KVPMISPCANCELURL = G5_MSHOP_URL.'/lg/cancel_url.php';
/*
*************************************************
* 2. MD5 해쉬암호화 (수정하지 마세요) - BEGIN
*
* MD5 해쉬암호화는 거래 위변조를 막기위한 방법입니다.
*************************************************
*
* 해쉬 암호화 적용( LGD_MID + LGD_OID + LGD_AMOUNT + LGD_TIMESTAMP + LGD_MERTKEY )
* LGD_MID : 상점아이디
* LGD_OID : 주문번호
* LGD_AMOUNT : 금액
* LGD_TIMESTAMP : 타임스탬프
* LGD_MERTKEY : 상점MertKey (mertkey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실수 있습니다)
*
* MD5 해쉬데이터 암호화 검증을 위해
* LG유플러스에서 발급한 상점키(MertKey)를 환경설정 파일(lgdacom/conf/mall.conf)에 반드시 입력하여 주시기 바랍니다.
*/
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$LGD_HASHDATA = md5($LGD_MID.$LGD_OID.$LGD_AMOUNT.$LGD_TIMESTAMP.$xpay->config[$LGD_MID]);
$LGD_CUSTOM_PROCESSTYPE = "TWOTR";
/*
*************************************************
* 2. MD5 해쉬암호화 (수정하지 마세요) - END
*************************************************
*/
$CST_WINDOW_TYPE = "submit"; // 수정불가
$payReqMap['CST_PLATFORM'] = $CST_PLATFORM; // 테스트, 서비스 구분
$payReqMap['CST_WINDOW_TYPE'] = $CST_WINDOW_TYPE; // 수정불가
$payReqMap['CST_MID'] = $CST_MID; // 상점아이디
$payReqMap['LGD_MID'] = $LGD_MID; // 상점아이디
$payReqMap['LGD_OID'] = $LGD_OID; // 주문번호
$payReqMap['LGD_BUYER'] = $LGD_BUYER; // 구매자
$payReqMap['LGD_PRODUCTINFO'] = $LGD_PRODUCTINFO; // 상품정보
$payReqMap['LGD_AMOUNT'] = $LGD_AMOUNT; // 결제금액
$payReqMap['LGD_BUYEREMAIL'] = $LGD_BUYEREMAIL; // 구매자 이메일
$payReqMap['LGD_CUSTOM_SKIN'] = $LGD_CUSTOM_SKIN; // 결제창 SKIN
$payReqMap['LGD_CUSTOM_PROCESSTYPE'] = $LGD_CUSTOM_PROCESSTYPE; // 트랜잭션 처리방식
$payReqMap['LGD_TIMESTAMP'] = $LGD_TIMESTAMP; // 타임스탬프
$payReqMap['LGD_HASHDATA'] = $LGD_HASHDATA; // MD5 해쉬암호값
$payReqMap['LGD_RETURNURL'] = $LGD_RETURNURL; // 응답수신페이지
$payReqMap['LGD_VERSION'] = "PHP_SmartXPay_1.0"; // 버전정보 (삭제하지 마세요)
$payReqMap['LGD_CUSTOM_FIRSTPAY'] = $LGD_CUSTOM_FIRSTPAY; // 디폴트 결제수단
$payReqMap['LGD_CUSTOM_SWITCHINGTYPE'] = "SUBMIT"; // 신용카드 카드사 인증 페이지 연동 방식
$payReqMap['LGD_ENCODING'] = "UTF-8";
$payReqMap['LGD_ENCODING_NOTEURL'] = "UTF-8";
$payReqMap['LGD_ENCODING_RETURNURL'] = "UTF-8";
$payReqMap['LGD_TAXFREEAMOUNT'] = $LGD_TAXFREEAMOUNT;
$payReqMap['LGD_CASHRECEIPTYN'] = $LGD_CASHRECEIPTYN;
$payReqMap['LGD_BUYERPHONE'] = $LGD_BUYERPHONE;
$payReqMap['LGD_BUYERID'] = $LGD_BUYERID;
/*
****************************************************
* 안드로이드폰 신용카드 ISP(국민/BC)결제에만 적용 (시작)*
****************************************************
(주의)LGD_CUSTOM_ROLLBACK 의 값을 "Y"로 넘길 경우, LG U+ 전자결제에서 보낸 ISP(국민/비씨) 승인정보를 고객서버의 note_url에서 수신시 "OK" 리턴이 안되면 해당 트랜잭션은 무조건 롤백(자동취소)처리되고,
LGD_CUSTOM_ROLLBACK 의 값 을 "C"로 넘길 경우, 고객서버의 note_url에서 "ROLLBACK" 리턴이 될 때만 해당 트랜잭션은 롤백처리되며 그외의 값이 리턴되면 정상 승인완료 처리됩니다.
만일, LGD_CUSTOM_ROLLBACK 의 값이 "N" 이거나 null 인 경우, 고객서버의 note_url에서 "OK" 리턴이 안될시, "OK" 리턴이 될 때까지 3분간격으로 2시간동안 승인결과를 재전송합니다.
*/
$payReqMap['LGD_CUSTOM_ROLLBACK'] = ""; // 비동기 ISP에서 트랜잭션 처리여부
$payReqMap['LGD_KVPMISPNOTEURL'] = $LGD_KVPMISPNOTEURL; // 비동기 ISP(ex. 안드로이드) 승인결과를 받는 URL
$payReqMap['LGD_KVPMISPWAPURL'] = $LGD_KVPMISPWAPURL; // 비동기 ISP(ex. 안드로이드) 승인완료후 사용자에게 보여지는 승인완료 URL
$payReqMap['LGD_KVPMISPCANCELURL'] = $LGD_KVPMISPCANCELURL; // ISP 앱에서 취소시 사용자에게 보여지는 취소 URL
/*
****************************************************
* 안드로이드폰 신용카드 ISP(국민/BC)결제에만 적용 (끝) *
****************************************************
*/
// 안드로이드 에서 신용카드 적용 ISP(국민/BC)결제에만 적용 (선택)
// $payReqMap['LGD_KVPMISPAUTOAPPYN'] = "Y";
// Y: 안드로이드에서 ISP신용카드 결제시, 고객사에서 'App To App' 방식으로 국민, BC카드사에서 받은 결제 승인을 받고 고객사의 앱을 실행하고자 할때 사용
// 가상계좌(무통장) 결제연동을 하시는 경우 할당/입금 결과를 통보받기 위해 반드시 LGD_CASNOTEURL 정보를 LG 유플러스에 전송해야 합니다 .
$payReqMap['LGD_CASNOTEURL'] = $LGD_CASNOTEURL; // 가상계좌 NOTEURL
//Return URL에서 인증 결과 수신 시 셋팅될 파라미터 입니다.*/
$payReqMap['LGD_RESPCODE'] = "";
$payReqMap['LGD_RESPMSG'] = "";
$payReqMap['LGD_PAYKEY'] = "";
$_SESSION['PAYREQ_MAP'] = $payReqMap;
$g5['title'] = 'LG 유플러스 eCredit서비스 결제';
$g5['body_script'] = 'onload="launchCrossPlatform();"';
include_once(G5_PATH.'/head.sub.php');
?>
<script language="javascript" src="http://xpay.uplus.co.kr/xpay/js/xpay_crossplatform.js" type="text/javascript"></script>
<script type="text/javascript">
/*
* iframe으로 결제창을 호출하시기를 원하시면 iframe으로 설정 (변수명 수정 불가)
*/
var LGD_window_type = '<?php echo $CST_WINDOW_TYPE; ?>';
/*
* 수정불가
*/
function launchCrossPlatform(){
lgdwin = open_paymentwindow(document.getElementById('LGD_PAYINFO'), '<?php echo $CST_PLATFORM; ?>', LGD_window_type);
}
/*
* FORM 명만 수정 가능
*/
function getFormObject() {
return document.getElementById("LGD_PAYINFO");
}
</script>
<form method="post" name="LGD_PAYINFO" id="LGD_PAYINFO" action="">
<?
foreach ($payReqMap as $key => $value) {
echo'"<input type="hidden" name="'.$key.'" id="'.$key.'" value="'.$value.'">';
}
?>
</form>
<?php
include_once(G5_PATH.'/tail.sub.php');
?>

View File

@ -27,7 +27,7 @@ set_session('ss_order_id', $od_id);
$s_cart_id = $tmp_cart_id;
$order_action_url = G5_HTTPS_MSHOP_URL.'/orderformupdate.php';
require_once(G5_MSHOP_PATH.'/settle_kcp.inc.php');
require_once(G5_MSHOP_PATH.'/settle_'.$default['de_pg_service'].'.inc.php');
// 결제등록 요청시 사용할 입금마감일
$ipgm_date = date("Ymd", (G5_SERVER_TIME + 86400 * 5));
@ -253,7 +253,7 @@ $content = ob_get_contents();
ob_end_clean();
// 결제대행사별 코드 include (결제등록 필드)
require_once(G5_MSHOP_PATH.'/kcp/orderform.1.php');
require_once(G5_MSHOP_PATH.'/'.$default['de_pg_service'].'/orderform.1.php');
?>
</div>
@ -654,7 +654,7 @@ require_once(G5_MSHOP_PATH.'/kcp/orderform.1.php');
<?php
// 결제대행사별 코드 include (결제대행사 정보 필드 및 주분버튼)
require_once(G5_MSHOP_PATH.'/kcp/orderform.2.php');
require_once(G5_MSHOP_PATH.'/'.$default['de_pg_service'].'/orderform.2.php');
?>
<div id="show_progress" style="display:none;">
@ -666,7 +666,7 @@ require_once(G5_MSHOP_PATH.'/kcp/orderform.1.php');
<?php
if ($default['de_escrow_use']) {
// 결제대행사별 코드 include (에스크로 안내)
require_once(G5_MSHOP_PATH.'/kcp/orderform.3.php');
require_once(G5_MSHOP_PATH.'/'.$default['de_pg_service'].'/orderform.3.php');
}
?>
@ -1149,6 +1149,7 @@ function pay_approval()
f.good_mny.value = od_price + send_cost + send_cost2 - send_coupon - temp_point;
}
<?php if($default['de_pg_service'] == 'kcp') { ?>
f.buyr_name.value = pf.od_name.value;
f.buyr_mail.value = pf.od_email.value;
f.buyr_tel1.value = pf.od_tel.value;
@ -1161,6 +1162,31 @@ function pay_approval()
f.rcvr_add1.value = pf.od_b_addr1.value;
f.rcvr_add2.value = pf.od_b_addr2.value;
f.settle_method.value = settle_method;
<?php } else if($default['de_pg_service'] == 'lg') { ?>
var pay_method = "";
switch(settle_method) {
case "계좌이체":
pay_method = "SC0030";
break;
case "가상계좌":
pay_method = "SC0040";
break;
case "휴대폰":
pay_method = "SC0060";
break;
case "신용카드":
pay_method = "SC0010";
break;
}
f.LGD_CUSTOM_FIRSTPAY.value = pay_method;
f.LGD_BUYER.value = pf.od_name.value;
f.LGD_BUYEREMAIL.value = pf.od_email.value;
f.LGD_BUYERPHONE.value = pf.od_hp.value;
f.LGD_AMOUNT.value = f.good_mny.value;
<?php if($default['de_tax_flag_use']) { ?>
f.LGD_TAXFREEAMOUNT.value = pf.comm_free_mny.value;
<?php } ?>
<?php } ?>
var new_win = window.open("about:blank", "tar_opener", "scrollbars=yes,resizable=yes");
f.target = "tar_opener";

View File

@ -4,7 +4,10 @@ include_once(G5_LIB_PATH.'/mailer.lib.php');
// 결제등록 완료 체크
if($od_settle_case != '무통장') {
if($_POST['tran_cd'] == '' || $_POST['enc_info'] == '' || $_POST['enc_data'] == '')
if($default['de_pg_service'] == 'kcp' && ($_POST['tran_cd'] == '' || $_POST['enc_info'] == '' || $_POST['enc_data'] == ''))
alert('결제등록 요청 후 주문해 주십시오.');
if($default['de_pg_service'] == 'lg' && !$_POST['LGD_PAYKEY'])
alert('결제등록 요청 후 주문해 주십시오.');
}
@ -275,8 +278,15 @@ if ($od_settle_case == "무통장")
}
else if ($od_settle_case == "계좌이체")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
break;
}
$od_tno = $tno;
$od_receipt_price = $amount;
@ -292,9 +302,16 @@ else if ($od_settle_case == "계좌이체")
}
else if ($od_settle_case == "가상계좌")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
break;
}
$od_receipt_point = $i_temp_point;
$od_tno = $tno;
@ -306,7 +323,14 @@ else if ($od_settle_case == "가상계좌")
}
else if ($od_settle_case == "휴대폰")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
break;
}
$od_tno = $tno;
$od_receipt_price = $amount;
@ -320,8 +344,15 @@ else if ($od_settle_case == "휴대폰")
}
else if ($od_settle_case == "신용카드")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
break;
}
$od_tno = $tno;
$od_app_no = $app_no;
@ -343,7 +374,14 @@ else
if($tno) {
if((int)$i_price !== (int)$pg_price) {
$cancel_msg = '결제금액 불일치';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("Receipt Amount Error");
}
@ -371,6 +409,8 @@ if($default['de_tax_flag_use']) {
$od_free_mny = (int)$_POST['comm_free_mny'];
}
$od_pg = $default['de_pg_service'];
// 주문서에 입력
$sql = " insert {$g5['g5_shop_order_table']}
set od_id = '$od_id',
@ -409,6 +449,7 @@ $sql = " insert {$g5['g5_shop_order_table']}
od_bank_account = '$od_bank_account',
od_receipt_time = '$od_receipt_time',
od_misu = '$od_misu',
od_pg = '$od_pg',
od_tno = '$od_tno',
od_app_no = '$od_app_no',
od_escrow = '$od_escrow',
@ -430,14 +471,21 @@ $result = sql_query($sql, false);
if(!$result) {
if($tno) {
$cancel_msg = '주문정보 입력 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
}
// 관리자에게 오류 알림 메일발송
$error = 'order';
include G5_SHOP_PATH.'/ordererrormail.php';
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>KCP를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>'.strtoupper($default['de_pg_service']).'를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
}
// 장바구니 상태변경
@ -459,7 +507,14 @@ $result = sql_query($sql, false);
if(!$result) {
if($tno) {
$cancel_msg = '주문상태 변경 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
}
// 관리자에게 오류 알림 메일발송
@ -469,7 +524,7 @@ if(!$result) {
// 주문삭제
sql_query(" delete from {$g5['g5_shop_order_table']} where od_id = '$od_id' ");
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>KCP를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>'.strtoupper($default['de_pg_service']).'를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
}
// 회원이면서 포인트를 사용했다면 포인트 테이블에 사용을 추가

View File

@ -21,6 +21,15 @@ $settle_case = $od['od_settle_case'];
$g5['title'] = '주문상세내역';
include_once(G5_MSHOP_PATH.'/_head.php');
// LG 현금영수증 JS
if($od['od_pg'] == 'lg') {
if($default['de_card_test']) {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr:7085/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
} else {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
}
}
?>
<div id="sod_fin">
@ -300,7 +309,16 @@ include_once(G5_MSHOP_PATH.'/_head.php');
<?php
if($od['od_settle_case'] == '휴대폰')
{
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
if($od['od_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $od['od_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$hp_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $hp_receipt_script; ?>">영수증 출력</a>
<?php
@ -308,7 +326,16 @@ include_once(G5_MSHOP_PATH.'/_head.php');
if($od['od_settle_case'] == '신용카드')
{
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
if($od['od_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $od['od_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$card_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $card_receipt_script; ?>">영수증 출력</a>
<?php
@ -352,10 +379,27 @@ include_once(G5_MSHOP_PATH.'/_head.php');
<?php
if ($od['od_cash'])
{
require_once G5_MSHOP_PATH.'/settle_kcp.inc.php';
if($od['od_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$cash = unserialize($od['od_cash_info']);
$cash_receipt_script = 'window.open(\''.G5_CASH_RECEIPT_URL.$default['de_kcp_mid'].'&orderid='.$od_id.'&bill_yn=Y&authno='.$cash['receipt_no'].'\', \'taxsave_receipt\', \'width=360,height=647,scrollbars=0,menus=0\');';
switch($od['od_settle_case']) {
case '계좌이체':
$trade_type = 'BANK';
break;
case '가상계좌':
$trade_type = 'CAS';
break;
default:
$trade_type = 'CR';
break;
}
$cash_receipt_script = 'javascript:showCashReceipts(\''.$LGD_MID.'\',\''.$od['od_id'].'\',\''.$od['od_casseqno'].'\',\''.$trade_type.'\',\''.$CST_PLATFORM.'\');';
} else {
require_once G5_SHOP_PATH.'/settle_kcp.inc.php';
$cash = unserialize($od['od_cash_info']);
$cash_receipt_script = 'window.open(\''.G5_CASH_RECEIPT_URL.$default['de_kcp_mid'].'&orderid='.$od_id.'&bill_yn=Y&authno='.$cash['receipt_no'].'\', \'taxsave_receipt\', \'width=360,height=647,scrollbars=0,menus=0\');';
}
?>
<a href="javascript:;" onclick="<?php echo $cash_receipt_script; ?>">현금영수증 확인하기</a>
<?php
@ -555,8 +599,8 @@ include_once(G5_MSHOP_PATH.'/_head.php');
<?php } ?>
</section>
<?php if ($od['od_settle_case'] == '가상계좌' && $od['od_misu'] > 0 && $default['de_card_test'] && $is_admin) {
preg_match("/(\s[^\s]+\s?)/", $od['od_bank_account'], $matchs);
<?php if ($od['od_settle_case'] == '가상계좌' && $od['od_misu'] > 0 && $default['de_card_test'] && $is_admin && $od['od_pg'] == 'kcp') {
preg_match("/\s{1}([^\s]+)\s?/", $od['od_bank_account'], $matchs);
$deposit_no = trim($matchs[1]);
?>
<p>관리자가 가상계좌 테스트를 한 경우에만 보입니다.</p>

View File

@ -15,7 +15,7 @@ include_once(G5_MSHOP_PATH.'/_head.php');
$action_url = G5_HTTPS_MSHOP_URL.'/personalpayformupdate.php';
require_once(G5_MSHOP_PATH.'/settle_kcp.inc.php');
require_once(G5_MSHOP_PATH.'/settle_'.$default['de_pg_service'].'.inc.php');
// 결제등록 요청시 사용할 입금마감일
$ipgm_date = date("Ymd", (G5_SERVER_TIME + 86400 * 5));
@ -44,7 +44,7 @@ $goods = $pp['pp_name'].'님 개인결제';
<div id="sod_approval_frm">
<?php
// 결제대행사별 코드 include (결제등록 필드)
require_once(G5_MSHOP_PATH.'/kcp/orderform.1.php');
require_once(G5_MSHOP_PATH.'/'.$default['de_pg_service'].'/orderform.1.php');
?>
</div>
@ -136,7 +136,7 @@ $goods = $pp['pp_name'].'님 개인결제';
<?php
// 결제대행사별 코드 include (결제대행사 정보 필드 및 주분버튼)
require_once(G5_MSHOP_PATH.'/kcp/orderform.2.php');
require_once(G5_MSHOP_PATH.'/'.$default['de_pg_service'].'/orderform.2.php');
?>
<div id="show_progress" style="display:none;">
@ -148,7 +148,7 @@ $goods = $pp['pp_name'].'님 개인결제';
<?php
if ($default['de_escrow_use']) {
// 결제대행사별 코드 include (에스크로 안내)
require_once(G5_MSHOP_PATH.'/kcp/orderform.3.php');
require_once(G5_MSHOP_PATH.'/'.$default['de_pg_service'].'/orderform.3.php');
}
?>
</div>
@ -170,6 +170,7 @@ function pay_approval()
if(!payment_check(pf))
return false;
<?php if($default['de_pg_service'] == 'kcp') { ?>
f.buyr_name.value = pf.pp_name.value;
f.buyr_mail.value = pf.pp_email.value;
f.buyr_tel1.value = pf.pp_hp.value;
@ -179,6 +180,31 @@ function pay_approval()
f.rcvr_tel2.value = pf.pp_hp.value;
f.rcvr_mail.value = pf.pp_email.value;
f.settle_method.value = settle_method;
<?php } else if($default['de_pg_service'] == 'lg') { ?>
var pay_method = "";
switch(settle_method) {
case "계좌이체":
pay_method = "SC0030";
break;
case "가상계좌":
pay_method = "SC0040";
break;
case "휴대폰":
pay_method = "SC0060";
break;
case "신용카드":
pay_method = "SC0010";
break;
}
f.LGD_CUSTOM_FIRSTPAY.value = pay_method;
f.LGD_BUYER.value = pf.pp_name.value;
f.LGD_BUYEREMAIL.value = pf.pp_email.value;
f.LGD_BUYERPHONE.value = pf.pp_hp.value;
f.LGD_AMOUNT.value = f.good_mny.value;
<?php if($default['de_tax_flag_use']) { ?>
f.LGD_TAXFREEAMOUNT.value = pf.comm_free_mny.value;
<?php } ?>
<?php } ?>
var new_win = window.open("about:blank", "tar_opener", "scrollbars=yes,resizable=yes");
f.target = "tar_opener";

View File

@ -2,7 +2,10 @@
include_once('./_common.php');
// 결제등록 완료 체크
if($_POST['tran_cd'] == '' || $_POST['enc_info'] == '' || $_POST['enc_data'] == '')
if($default['de_pg_service'] == 'kcp' && ($_POST['tran_cd'] == '' || $_POST['enc_info'] == '' || $_POST['enc_data'] == ''))
alert('결제등록 요청 후 주문해 주십시오.');
if($default['de_pg_service'] == 'lg' && !$_POST['LGD_PAYKEY'])
alert('결제등록 요청 후 주문해 주십시오.');
// 개인결제 정보
@ -21,8 +24,15 @@ if($_POST['pp_id'] != get_session('ss_personalpay_id') || $hash_data != get_sess
if ($pp_settle_case == "계좌이체")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
break;
}
$pp_tno = $tno;
$pp_receipt_price = $amount;
@ -33,9 +43,16 @@ if ($pp_settle_case == "계좌이체")
}
else if ($pp_settle_case == "가상계좌")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
break;
}
$pp_tno = $tno;
$pp_receipt_price = 0;
@ -45,7 +62,14 @@ else if ($pp_settle_case == "가상계좌")
}
else if ($pp_settle_case == "휴대폰")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
break;
}
$pp_tno = $tno;
$pp_receipt_price = $amount;
@ -55,8 +79,15 @@ else if ($pp_settle_case == "휴대폰")
}
else if ($pp_settle_case == "신용카드")
{
include G5_MSHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
break;
}
$pp_tno = $tno;
$pp_receipt_price = $amount;
@ -72,14 +103,24 @@ else
// 주문금액과 결제금액이 일치하는지 체크
if((int)$pp['pp_price'] !== (int)$pg_price) {
$cancel_msg = '결제금액 불일치';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("Receipt Amount Error");
}
$pp_pg = $default['de_pg_service'];
// 결제정보 입력
$sql = " update {$g5['g5_shop_personalpay_table']}
set pp_tno = '$pp_tno',
set pp_pg = '$pp_pg',
pp_tno = '$pp_tno',
pp_app_no = '$app_no',
pp_receipt_price = '$pp_receipt_price',
pp_settle_case = '$pp_settle_case',
@ -93,7 +134,14 @@ $result = sql_query($sql, false);
// 결제정보 입력 오류시 결제 취소
if(!$result) {
$cancel_msg = '결제정보 입력 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}");
}
@ -107,6 +155,7 @@ if($pp_receipt_price > 0 && $pp['pp_id'] && $pp['od_id']) {
$sql = " update {$g5['g5_shop_order_table']}
set od_receipt_price = od_receipt_price + '$pp_receipt_price',
od_receipt_time = '$pp_receipt_time',
od_pg = '$pp_pg',
od_tno = '$pp_tno',
od_app_no = '$app_no',
od_escrow = '$od_escrow',
@ -120,7 +169,14 @@ if($pp_receipt_price > 0 && $pp['pp_id'] && $pp['od_id']) {
// 결제정보 입력 오류시 kcp 결제 취소
if(!$result) {
$cancel_msg = '결제정보 입력 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}");
}

View File

@ -12,6 +12,15 @@ $settle_case = $pp['pp_settle_case'];
$g5['title'] = '개인결제상세내역';
include_once(G5_MSHOP_PATH.'/_head.php');
// LG 현금영수증 JS
if($od['od_pg'] == 'lg') {
if($default['de_card_test']) {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr:7085/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
} else {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
}
}
?>
<div id="sod_fin">
@ -125,7 +134,16 @@ include_once(G5_MSHOP_PATH.'/_head.php');
<?php
if($pp['pp_settle_case'] == '휴대폰')
{
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
if($pp['pp_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $pp['pp_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$hp_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $hp_receipt_script; ?>">영수증 출력</a>
<?php
@ -133,7 +151,16 @@ include_once(G5_MSHOP_PATH.'/_head.php');
if($pp['pp_settle_case'] == '신용카드')
{
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
if($pp['pp_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $pp['pp_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$card_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $card_receipt_script; ?>">영수증 출력</a>
<?php
@ -174,8 +201,8 @@ include_once(G5_MSHOP_PATH.'/_head.php');
</ul>
</section>
<?php if ($misu_price > 0 && $pp['pp_settle_case'] == '가상계좌' && $default['de_card_test'] && $is_admin) {
preg_match("/(\s[^\s]+\s?)/", $pp['pp_bank_account'], $matchs);
<?php if ($pp['pp_settle_case'] == '가상계좌' && $default['de_card_test'] && $is_admin && $pp['pp_pg'] == 'kcp') {
preg_match("/\s{1}([^\s]+)\s?/", $pp['pp_bank_account'], $matchs);
$deposit_no = trim($matchs[1]);
?>
<p>관리자가 가상계좌 테스트를 한 경우에만 보입니다.</p>

View File

@ -0,0 +1,35 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
require_once(G5_LGXPAY_PATH.'/lgdacom/XPayClient.php');
class XPay extends XPayClient
{
public function set_config_value($key, $val)
{
$this->config[$key] = $val;
}
}
/*
* 1. 기본결제 인증요청 정보 변경
*
* 기본정보를 변경하여 주시기 바랍니다.(파라미터 전달시 POST를 사용하세요)
*/
$CST_PLATFORM = $default['de_card_test'] ? 'test' : 'service'; //LG유플러스 결제 서비스 선택(test:테스트, service:서비스)
$CST_MID = 'si_'.$config['cf_lg_mid']; //상점아이디(LG유플러스으로 부터 발급받으신 상점아이디를 입력하세요)
//테스트 아이디는 't'를 반드시 제외하고 입력하세요.
$LGD_MID = (('test' == $CST_PLATFORM) ? 't' : '').$CST_MID; //상점아이디(자동생성)
$LGD_TIMESTAMP = date('YmdHis'); //타임스탬프
$LGD_BUYERIP = $_SERVER['REMOTE_ADDR']; //구매자IP
$LGD_BUYERID = ''; //구매자ID
$LGD_CUSTOM_SKIN = 'SMART_XPAY2'; //상점정의 결제창 스킨 (red, purple, yellow)
$LGD_MERTKEY = ''; //상점MertKey(mertkey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실수 있습니다)
$configPath = G5_LGXPAY_PATH.'/lgdacom'; //LG유플러스에서 제공한 환경파일("/conf/lgdacom.conf") 위치 지정.
/*
* 가상계좌(무통장) 결제 연동을 하시는 경우 아래 LGD_CASNOTEURL 을 설정하여 주시기 바랍니다.
*/
$LGD_CASNOTEURL = G5_SHOP_URL.'/settle_lg_common.php';
?>

View File

@ -60,7 +60,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
if($config['cf_cert_use']) {
if($config['cf_cert_ipin'])
echo '<button type="button" id="win_ipin_cert" class="btn_frmline">아이핀 본인확인</button>'.PHP_EOL;
if($config['cf_cert_hp'])
if($config['cf_cert_hp'] && $config['cf_cert_hp'] != 'lg')
echo '<button type="button" id="win_hp_cert" class="btn_frmline">휴대폰 본인확인</button>'.PHP_EOL;
echo '<noscript>본인확인을 위해서는 자바스크립트 사용이 가능해야합니다.</noscript>'.PHP_EOL;

View File

@ -0,0 +1,129 @@
<?php
include_once('./_common.php');
// 금일 인증시도 회수 체크
certify_count_check($member['mb_id'], 'hp');
/*
* [본인확인 요청페이지]
*
* 샘플페이지에서는 기본 파라미터만 예시되어 있으며, 별도로 필요하신 파라미터는 연동메뉴얼을 참고하시어 추가 하시기 바랍니다.
*/
//LG유플러스 결제 서비스 선택(test:테스트, service:서비스)
if($config['cf_cert_use'] == 2)
$CST_PLATFORM = 'service';
else
$CST_PLATFORM = 'test';
$CST_MID = 'si_'.$config['cf_lg_mid']; // 상점아이디(LG유플러스으로 부터 발급받으신 상점아이디를 입력하세요)
//테스트 아이디는 't'를 반드시 제외하고 입력하세요.
$LGD_MID = (('test' == $CST_PLATFORM) ? 't':'').$CST_MID; //상점아이디(자동생성)
$LGD_BUYER = '홍길동'; // 성명 (보안을 위해 DB난 세션에서 가져오세요)
$LGD_BUYERSSN = '0000000000000'; // 주민등록번호 (보안을 위해 DB나 세션에서 가져오세요)
// 휴대폰 본인인증을 사용할 경우 주민번호는 '0' 13자리를 넘기세요. 예)0000000000000
// 기타 인증도 사용할 경우 실 주민등록번호 (보안을 위해 DB나 세션에 저장처리 권장)
$LGD_MOBILE_SUBAUTH_SITECD = ''; // 신용평가사에서 부여받은 회원사 고유 코드
// (CI값만 필요한 경우 옵션, DI값도 필요한 경우 필수)
$LGD_TIMESTAMP = date('YmdHis'); // 타임스탬프 (YYYYMMDDhhmmss)
$LGD_CUSTOM_SKIN = 'red'; // 상점정의 인증창 스킨 (red, blue, cyan, green, yellow)
/*
*************************************************
* 2. MD5 해쉬암호화 (수정하지 마세요) - BEGIN
*
* MD5 해쉬암호화는 거래 위변조를 막기위한 방법입니다.
*************************************************
*
* 해쉬 암호화 적용( LGD_MID + LGD_BUYERSSN + LGD_TIMESTAMP + LGD_MERTKEY )
* LGD_MID : 상점아이디
* LGD_BUYERSSN : 주민등록번호
* LGD_TIMESTAMP : 타임스탬프
* LGD_MERTKEY : 상점MertKey (mertkey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실수 있습니다)
*
* MD5 해쉬데이터 암호화 검증을 위해
* LG유플러스에서 발급한 상점키(MertKey)를 환경설정 파일(lgdacom/conf/mall.conf)에 반드시 입력하여 주시기 바랍니다.
*/
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_BUYERSSN.$LGD_TIMESTAMP.$LGD_MERTKEY);
/*
*************************************************
* 2. MD5 해쉬암호화 (수정하지 마세요) - END
*************************************************
*/
?>
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>LG유플러스 전자결제 본인확인서비스</title>
<!-- 고객사 사이트가 https인 경우는 아래 http://을 https:// 으로 변경하시면 됩니다. -->
<link rel="stylesheet" href="<?php echo G5_CSS_URL;?>/default.css">
<script language="javascript" src="//xpay.uplus.co.kr/xpay/js/xpay_authonly.js" type="text/javascript"></script>
<script>
function do_Authonly() {
ret = xpay_authonly_check(document.getElementById("LGD_PAYINFO"), document.getElementById("CST_PLATFORM").value);
if (ret == "00"){ //ActiveX 로딩 성공
if(dpop.getData("LGD_RESPCODE") == "0000"){
document.getElementById("LGD_AUTHONLYKEY").value = dpop.getData("LGD_AUTHONLYKEY");
document.getElementById("LGD_PAYTYPE").value = dpop.getData("LGD_PAYTYPE");
//alert("인증요청을 합니다.");
document.getElementById("LGD_PAYINFO").submit();
} else {
alert(dpop.getData("LGD_RESPMSG"));
}
} else {
alert("LG유플러스 본인확인서비스를 위한 ActiveX 설치 실패\nInternet Explorer 외의 브라우저에서는 사용할 수 없습니다.");
//window.close();
}
}
</script>
<style>
#uplus_win {}
.up_cmt {text-align:center; font-size:14px;}
.up_cmt img {display:block; margin:0 auto 20px}
.up_info {background:#eee;padding:13px;margin:28px 25px 20px;}
.up_info a {float:left; margin-right:10px}
.up_info p {padding:10px 0 0; line-height:18px;}
.up_info:after {clear:both; display:block; content:"";}
.win_btn {clear:both;}
</style>
</head>
<body>
<form method="post" id="LGD_PAYINFO" action="<?php echo G5_LGXPAY_URL; ?>/AuthOnlyRes.php">
<input type="hidden" name="CST_MID" id="CST_MID" value="<?php echo $CST_MID; ?>" />
<input type="hidden" name="LGD_MID" id="LGD_MID" value="<?php echo $LGD_MID; ?>"/>
<input type="hidden" name="CST_PLATFORM" id="CST_PLATFORM" value="<?php echo $CST_PLATFORM; ?>"/>
<input type="hidden" name="LGD_BUYERSSN" value="<?php echo $LGD_BUYERSSN; ?>"/>
<input type="hidden" name="LGD_BUYER" value="<?php echo $LGD_BUYER; ?>"/>
<input type="hidden" name="LGD_MOBILE_SUBAUTH_SITECD" value="<?php echo $LGD_MOBILE_SUBAUTH_SITECD; ?>"/>
<input type="hidden" name="LGD_TIMESTAMP" value="<?php echo $LGD_TIMESTAMP; ?>"/>
<input type="hidden" name="LGD_HASHDATA" value="<?php echo $LGD_HASHDATA; ?>"/>
<input type="hidden" name="LGD_NAMECHECKYN" value="Y">
<input type="hidden" name="LGD_HOLDCHECKYN" value="Y">
<input type="hidden" name="LGD_CUSTOM_SKIN" value="red">
<input type="hidden" name="LGD_CUSTOM_FIRSTPAY" value="ASC007">
<input type="hidden" name="LGD_CUSTOM_USABLEPAY" value="ASC007">
<input type="hidden" name="LGD_PAYTYPE" id="LGD_PAYTYPE"/>
<input type="hidden" name="LGD_AUTHONLYKEY" id="LGD_AUTHONLYKEY"/>
</form>
<div id="uplus_win" class="new_win mbskin">
<h1 id="win_title">휴대폰 본인확인</h1>
<p class="up_cmt"><img src="<?php echo G5_LGXPAY_URL; ?>/img/upluslogo.jpg" alt="">LG U+에 휴대폰 본인확인 요청 중입니다.</p>
<div class="up_info">
<a href="http://pgweb.uplus.co.kr:8080/pg/wmp/Home2009/skill/payment_error_center01.jsp" target="_blank"><img src="<?php echo G5_LGXPAY_URL; ?>/img/btn_gouplus.jpg" alt="U+ 오류 해결방법 바로가기"></a>
<p>본인확인이 진행되지 않는다면<br /> 왼쪽의 링크로 이동하여보세요.</p>
<!--[If lte IE 7]><span style="clear:both; display:block; content:'';"></span><![endif]-->
</div>
<div class="win_btn">
<button type="button" onclick="window.close();">창닫기</button>
</div>
</div>
<script>
setTimeout("do_Authonly();",300);
</script>
</body>
</html>

View File

@ -0,0 +1,195 @@
<?php
include_once('./_common.php');
$_POST = array_map_deep('conv_unescape_nl', $_POST);
/*
* [본인확인 처리 페이지]
*
* LG유플러스으로 부터 내려받은 LGD_AUTHONLYKEY(인증Key)를 가지고 최종 인증요청.(파라미터 전달시 POST를 사용하세요)
*/
/*
*************************************************
* 1.최종인증 요청 - BEGIN
*************************************************
*/
//LG유플러스 결제 서비스 선택(test:테스트, service:서비스)
if($config['cf_cert_use'] == 2)
$CST_PLATFORM = 'service';
else
$CST_PLATFORM = 'test';
$CST_MID = 'si_'.$config['cf_lg_mid']; //상점아이디(LG유플러스으로 부터 발급받으신 상점아이디를 입력하세요)
//테스트 아이디는 't'를 반드시 제외하고 입력하세요.
$LGD_MID = (('test' == $CST_PLATFORM) ? 't' : '').$CST_MID; //상점아이디(자동생성)
$LGD_AUTHONLYKEY = $_POST['LGD_AUTHONLYKEY']; //LG유플러스으로부터 부여받은 인증키
$LGD_PAYTYPE = $_POST['LGD_PAYTYPE']; //인증요청타입 (신용카드:ASC001, 휴대폰:ASC002, 계좌:ASC004)
require_once(G5_LGXPAY_PATH.'/lgdacom/XPayClient.php');
// mall.conf 설정 추가를 위한 XPayClient 확장
class XPay extends XPayClient
{
public function set_config_value($key, $val)
{
$this->config[$key] = $val;
}
}
$configPath = G5_LGXPAY_PATH.'/lgdacom'; //LG유플러스에서 제공한 환경파일("/conf/lgdacom.conf,/conf/mall.conf") 위치 지정.
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$xpay->Set("LGD_TXNAME", "AuthOnlyByKey");
$xpay->Set("LGD_AUTHONLYKEY", $LGD_AUTHONLYKEY);
$xpay->Set("LGD_PAYTYPE", $LGD_PAYTYPE);
$g5['title'] = '휴대폰인증 결과';
include_once(G5_PATH.'/head.sub.php');
/*
*************************************************
* 1.최종인증 요청(수정하지 마세요) - END
*************************************************
*/
/*
* 2. 최종인증 요청 결과처리
*
* 최종 인증요청 결과 리턴 파라미터는 연동메뉴얼을 참고하시기 바랍니다.
*/
if ($xpay->TX()) {
//1)인증결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
/*
echo "인증요청이 완료되었습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
$keys = $xpay->Response_Names();
foreach($keys as $name) {
echo $name . " = " . $xpay->Response($name, 0) . "<br>";
}
echo "<p>";
*/
// 인증내역기록
@insert_cert_history($member['mb_id'], 'lg', 'hp');
if( "0000" == $xpay->Response_Code() ) {
//인증요청 결과 성공 DB처리
//echo "인증요청 결과 성공 DB처리하시기 바랍니다.<br>";
$cert_no = $xpay->Response('LGD_TID', 0); // LG 인증처리번호
$comm_id = $xpay->Response('LGD_FINANCECODE', 0); // 이동통신사 코드
$phone_no = $xpay->Response('LGD_MOBILENUM', 0); // 전화번호
$user_name = $xpay->Response('LGD_MOBILE_SUBAUTH_NAME', 0); // 이름
$birth_day = $xpay->Response('LGD_MOBILE_SUBAUTH_BIRTH', 0); // 생년월일
$sex_code = $xpay->Response('LGD_MOBILE_SUBAUTH_SEX', 0); // 성별코드
$ci = $xpay->Response('LGD_AUTHSUB_CI', 0); // CI
$di = $xpay->Response('LGD_AUTHSUB_DI', 0); // DI 중복가입 확인값
// 내/외국인
if($sex_code > 4)
$local_code = 2; // 외국인
else
$local_code = 1; // 내국인
// 남/여구분
if($sex_code % 2 == 0)
$mb_sex = 'F';
else
$mb_sex = 'M';
// 생년월일
if($sex_code < 5) {
if($sex_code <= 2)
$birth_prefix = '19';
else
$birth_prefix = '20';
} else {
if($sex_code <= 6)
$birth_prefix = '19';
else
$birth_prefix = '20';
}
$birth_day = $birth_prefix.$birth_day;
// 정상인증인지 체크
if(!$phone_no)
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
$phone_no = hyphen_hp_number($phone_no);
$mb_dupinfo = $di;
if($mb_dupinfo) {
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}' ";
$row = sql_fetch($sql);
if ($row['mb_id']) {
alert_close("입력하신 본인학인 정보로 가입된 내역이 존재합니다.\\n회원아이디 : ".$row['mb_id']);
}
}
// hash 데이터
$cert_type = 'hp';
$md5_cert_no = md5($cert_no);
$hash_data = md5($user_name.$cert_type.$birth_day.$md5_cert_no);
// 성인인증결과
$adult_day = date("Ymd", strtotime("-19 years", G5_SERVER_TIME));
$adult = ((int)$birth_day <= (int)$adult_day) ? 1 : 0;
set_session("ss_cert_type", $cert_type);
set_session("ss_cert_no", $md5_cert_no);
set_session("ss_cert_hash", $hash_data);
set_session("ss_cert_adult", $adult);
set_session("ss_cert_birth", $birth_day);
set_session("ss_cert_sex", $mb_sex);
set_session('ss_cert_dupinfo', $mb_dupinfo);
} else {
//인증요청 결과 실패 DB처리
//echo "인증요청 결과 실패 DB처리하시기 바랍니다.<br>";
alert_close('인증요청이 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg());
exit;
}
} else {
//2)API 요청실패 화면처리
/*
echo "인증요청이 실패하였습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
//인증요청 결과 실패 DB처리
echo "인증요청 결과 실패 DB처리하시기 바랍니다.<br>";
*/
alert_close('인증요청이 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg());
exit;
}
?>
<script>
$(function() {
var $opener = window.opener;
// 인증정보
$opener.$("input[name=cert_type]").val("<?php echo $cert_type; ?>");
$opener.$("input[name=mb_name]").val("<?php echo $user_name; ?>").attr("readonly", true);
$opener.$("input[name=mb_hp]").val("<?php echo $phone_no; ?>").attr("readonly", true);
$opener.$("input[name=cert_no]").val("<?php echo $md5_cert_no; ?>");
alert("본인의 휴대폰번호로 확인 되었습니다.");
window.close();
});
</script>
<?php
include_once(G5_PATH.'/tail.sub.php');
?>

View File

@ -0,0 +1,3 @@
<?php
include_once('../../common.php');
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,806 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Converts to and from JSON format.
*
* JSON (JavaScript Object Notation) is a lightweight data-interchange
* format. It is easy for humans to read and write. It is easy for machines
* to parse and generate. It is based on a subset of the JavaScript
* Programming Language, Standard ECMA-262 3rd Edition - December 1999.
* This feature can also be found in Python. JSON is a text format that is
* completely language independent but uses conventions that are familiar
* to programmers of the C-family of languages, including C, C++, C#, Java,
* JavaScript, Perl, TCL, and many others. These properties make JSON an
* ideal data-interchange language.
*
* This package provides a simple encoder and decoder for JSON notation. It
* is intended for use with client-side Javascript applications that make
* use of HTTPRequest to perform server communication functions - data can
* be encoded into JSON notation for use in a client-side javascript, or
* decoded from incoming Javascript requests. JSON format is native to
* Javascript, and can be directly eval()'ed with no further parsing
* overhead
*
* All strings should be in ASCII or UTF-8 format!
*
* LICENSE: Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met: Redistributions of source code must retain the
* above copyright notice, this list of conditions and the following
* disclaimer. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* @category
* @package Services_JSON
* @author Michal Migurski <mike-json@teczno.com>
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
* @copyright 2005 Michal Migurski
* @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
* @license http://www.opensource.org/licenses/bsd-license.php
* @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
*/
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_SLICE', 1);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_STR', 2);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_ARR', 3);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_OBJ', 4);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_CMT', 5);
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_LOOSE_TYPE', 16);
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
/**
* Converts to and from JSON format.
*
* Brief example of use:
*
* <code>
* // create a new instance of Services_JSON
* $json = new Services_JSON();
*
* // convert a complexe value to JSON notation, and send it to the browser
* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
* $output = $json->encode($value);
*
* print($output);
* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
*
* // accept incoming POST data, assumed to be in JSON notation
* $input = file_get_contents('php://input', 1000000);
* $value = $json->decode($input);
* </code>
*/
class Services_JSON
{
/**
* constructs a new JSON instance
*
* @param int $use object behavior flags; combine with boolean-OR
*
* possible values:
* - SERVICES_JSON_LOOSE_TYPE: loose typing.
* "{...}" syntax creates associative arrays
* instead of objects in decode().
* - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
* Values which can't be encoded (e.g. resources)
* appear as NULL instead of throwing errors.
* By default, a deeply-nested resource will
* bubble up with an error, so all return values
* from encode() should be checked with isError()
*/
function Services_JSON($use = 0)
{
$this->use = $use;
}
/**
* convert a string from one UTF-16 char to one UTF-8 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf16 UTF-16 character
* @return string UTF-8 character
* @access private
*/
function utf162utf8($utf16)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
switch(true) {
case ((0x7F & $bytes) == $bytes):
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x7F & $bytes);
case (0x07FF & $bytes) == $bytes:
// return a 2-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xC0 | (($bytes >> 6) & 0x1F))
. chr(0x80 | ($bytes & 0x3F));
case (0xFFFF & $bytes) == $bytes:
// return a 3-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xE0 | (($bytes >> 12) & 0x0F))
. chr(0x80 | (($bytes >> 6) & 0x3F))
. chr(0x80 | ($bytes & 0x3F));
}
// ignoring UTF-32 for now, sorry
return '';
}
/**
* convert a string from one UTF-8 char to one UTF-16 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf8 UTF-8 character
* @return string UTF-16 character
* @access private
*/
function utf82utf16($utf8)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
}
switch(strlen($utf8)) {
case 1:
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return $utf8;
case 2:
// return a UTF-16 character from a 2-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x07 & (ord($utf8{0}) >> 2))
. chr((0xC0 & (ord($utf8{0}) << 6))
| (0x3F & ord($utf8{1})));
case 3:
// return a UTF-16 character from a 3-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr((0xF0 & (ord($utf8{0}) << 4))
| (0x0F & (ord($utf8{1}) >> 2)))
. chr((0xC0 & (ord($utf8{1}) << 6))
| (0x7F & ord($utf8{2})));
}
// ignoring UTF-32 for now, sorry
return '';
}
/**
* encodes an arbitrary variable into JSON format
*
* @param mixed $var any number, boolean, string, array, or object to be encoded.
* see argument 1 to Services_JSON() above for array-parsing behavior.
* if var is a strng, note that encode() always expects it
* to be in ASCII or UTF-8 format!
*
* @return mixed JSON string representation of input var or an error if a problem occurs
* @access public
*/
function encode($var)
{
switch (gettype($var)) {
case 'boolean':
return $var ? 'true' : 'false';
case 'NULL':
return 'null';
case 'integer':
return (int) $var;
case 'double':
case 'float':
return (float) $var;
case 'string':
// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
$ascii = '';
$strlen_var = strlen($var);
/*
* Iterate over every character in the string,
* escaping with a slash or encoding to UTF-8 where necessary
*/
for ($c = 0; $c < $strlen_var; ++$c) {
$ord_var_c = ord($var{$c});
switch (true) {
case $ord_var_c == 0x08:
$ascii .= '\b';
break;
case $ord_var_c == 0x09:
$ascii .= '\t';
break;
case $ord_var_c == 0x0A:
$ascii .= '\n';
break;
case $ord_var_c == 0x0C:
$ascii .= '\f';
break;
case $ord_var_c == 0x0D:
$ascii .= '\r';
break;
case $ord_var_c == 0x22:
case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh
$ascii .= '\\'.$var{$c};
break;
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)
$ascii .= $var{$c};
break;
case (($ord_var_c & 0xE0) == 0xC0):
// characters U-00000080 - U-000007FF, mask 110XXXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
$c += 1;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xF0) == 0xE0):
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}));
$c += 2;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xF8) == 0xF0):
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}));
$c += 3;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xFC) == 0xF8):
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}));
$c += 4;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xFE) == 0xFC):
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}),
ord($var{$c + 5}));
$c += 5;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
}
}
return '"'.$ascii.'"';
case 'array':
/*
* As per JSON spec if any array key is not an integer
* we must treat the the whole array as an object. We
* also try to catch a sparsely populated associative
* array with numeric keys here because some JS engines
* will create an array with empty indexes up to
* max_index which can cause memory issues and because
* the keys, which may be relevant, will be remapped
* otherwise.
*
* As per the ECMA and JSON specification an object may
* have any string as a property. Unfortunately due to
* a hole in the ECMA specification if the key is a
* ECMA reserved word or starts with a digit the
* parameter is only accessible using ECMAScript's
* bracket notation.
*/
// treat as a JSON object
if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
$properties = array_map(array($this, 'name_value'),
array_keys($var),
array_values($var));
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
return '{' . join(',', $properties) . '}';
}
// treat it like a regular array
$elements = array_map(array($this, 'encode'), $var);
foreach($elements as $element) {
if(Services_JSON::isError($element)) {
return $element;
}
}
return '[' . join(',', $elements) . ']';
case 'object':
$vars = get_object_vars($var);
$properties = array_map(array($this, 'name_value'),
array_keys($vars),
array_values($vars));
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
return '{' . join(',', $properties) . '}';
default:
return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
? 'null'
: new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
}
}
/**
* array-walking function for use in generating JSON-formatted name-value pairs
*
* @param string $name name of key to use
* @param mixed $value reference to an array element to be encoded
*
* @return string JSON-formatted name-value pair, like '"name":value'
* @access private
*/
function name_value($name, $value)
{
$encoded_value = $this->encode($value);
if(Services_JSON::isError($encoded_value)) {
return $encoded_value;
}
return $this->encode(strval($name)) . ':' . $encoded_value;
}
/**
* reduce a string by removing leading and trailing comments and whitespace
*
* @param $str string string value to strip of comments and whitespace
*
* @return string string value stripped of comments and whitespace
* @access private
*/
function reduce_string($str)
{
$str = preg_replace(array(
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
), '', $str);
// eliminate extraneous space
return trim($str);
}
/**
* decodes a JSON string into appropriate variable
*
* @param string $str JSON-formatted string
*
* @return mixed number, boolean, string, array, or object
* corresponding to given JSON input string.
* See argument 1 to Services_JSON() above for object-output behavior.
* Note that decode() always returns strings
* in ASCII or UTF-8 format!
* @access public
*/
function decode($str)
{
$str = $this->reduce_string($str);
switch (strtolower($str)) {
case 'true':
return true;
case 'false':
return false;
case 'null':
return null;
default:
$m = array();
if (is_numeric($str)) {
// Lookie-loo, it's a number
// This would work on its own, but I'm trying to be
// good about returning integers where appropriate:
// return (float)$str;
// Return float or int, as appropriate
return ((float)$str == (integer)$str)
? (integer)$str
: (float)$str;
} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
// STRINGS RETURNED IN UTF-8 FORMAT
$delim = substr($str, 0, 1);
$chrs = substr($str, 1, -1);
$utf8 = '';
$strlen_chrs = strlen($chrs);
for ($c = 0; $c < $strlen_chrs; ++$c) {
$substr_chrs_c_2 = substr($chrs, $c, 2);
$ord_chrs_c = ord($chrs{$c});
switch (true) {
case $substr_chrs_c_2 == '\b':
$utf8 .= chr(0x08);
++$c;
break;
case $substr_chrs_c_2 == '\t':
$utf8 .= chr(0x09);
++$c;
break;
case $substr_chrs_c_2 == '\n':
$utf8 .= chr(0x0A);
++$c;
break;
case $substr_chrs_c_2 == '\f':
$utf8 .= chr(0x0C);
++$c;
break;
case $substr_chrs_c_2 == '\r':
$utf8 .= chr(0x0D);
++$c;
break;
case $substr_chrs_c_2 == '\\"':
case $substr_chrs_c_2 == '\\\'':
case $substr_chrs_c_2 == '\\\\':
case $substr_chrs_c_2 == '\\/':
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
$utf8 .= $chrs{++$c};
}
break;
case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
// single, escaped unicode character
$utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
. chr(hexdec(substr($chrs, ($c + 4), 2)));
$utf8 .= $this->utf162utf8($utf16);
$c += 5;
break;
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
$utf8 .= $chrs{$c};
break;
case ($ord_chrs_c & 0xE0) == 0xC0:
// characters U-00000080 - U-000007FF, mask 110XXXXX
//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 2);
++$c;
break;
case ($ord_chrs_c & 0xF0) == 0xE0:
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 3);
$c += 2;
break;
case ($ord_chrs_c & 0xF8) == 0xF0:
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 4);
$c += 3;
break;
case ($ord_chrs_c & 0xFC) == 0xF8:
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 5);
$c += 4;
break;
case ($ord_chrs_c & 0xFE) == 0xFC:
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 6);
$c += 5;
break;
}
}
return $utf8;
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation
if ($str{0} == '[') {
$stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = array();
} else {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = new stdClass();
}
}
array_push($stk, array('what' => SERVICES_JSON_SLICE,
'where' => 0,
'delim' => false));
$chrs = substr($str, 1, -1);
$chrs = $this->reduce_string($chrs);
if ($chrs == '') {
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
} else {
return $obj;
}
}
//print("\nparsing {$chrs}\n");
$strlen_chrs = strlen($chrs);
for ($c = 0; $c <= $strlen_chrs; ++$c) {
$top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);
if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
// found a comma that is not inside a string, array, etc.,
// OR we've reached the end of the character list
$slice = substr($chrs, $top['where'], ($c - $top['where']));
array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
//print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
if (reset($stk) == SERVICES_JSON_IN_ARR) {
// we are in an array, so just push an element onto the stack
array_push($arr, $this->decode($slice));
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
// we are in an object, so figure
// out the property name and set an
// element in an associative array,
// for now
$parts = array();
if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// "name":value pair
$key = $this->decode($parts[1]);
$val = $this->decode($parts[2]);
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
} elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// name:value pair, where name is unquoted
$key = $parts[1];
$val = $this->decode($parts[2]);
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
}
}
} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
// found a quote, and we are not inside a string
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
//print("Found start of string at {$c}\n");
} elseif (($chrs{$c} == $top['delim']) &&
($top['what'] == SERVICES_JSON_IN_STR) &&
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
// found a quote, we're in a string, and it's not escaped
// we know that it's not escaped becase there is _not_ an
// odd number of backslashes at the end of the string so far
array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
} elseif (($chrs{$c} == '[') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-bracket, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("Found start of array at {$c}\n");
} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
// found a right-bracket, and we're in an array
array_pop($stk);
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
} elseif (($chrs{$c} == '{') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-brace, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
//print("Found start of object at {$c}\n");
} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
// found a right-brace, and we're in an object
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
} elseif (($substr_chrs_c_2 == '/*') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a comment start, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
$c++;
//print("Found start of comment at {$c}\n");
} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
// found a comment end, and we're in one now
array_pop($stk);
$c++;
for ($i = $top['where']; $i <= $c; ++$i)
$chrs = substr_replace($chrs, ' ', $i, 1);
//print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
}
}
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
return $obj;
}
}
}
}
/**
* @todo Ultimately, this should just call PEAR::isError()
*/
function isError($data, $code = null)
{
if (class_exists('pear')) {
return PEAR::isError($data, $code);
} elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
is_subclass_of($data, 'services_json_error'))) {
return true;
}
return false;
}
}
if (class_exists('PEAR_Error')) {
class Services_JSON_Error extends PEAR_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
}
}
} else {
/**
* @todo Ultimately, this class shall be descended from PEAR_Error
*/
class Services_JSON_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
}
}
}
?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
url = https://xpayclient.lgdacom.net/xpay/Gateway.do
test_url = https://xpayclient.lgdacom.net:7443/xpay/Gateway.do
aux_url = http://xpayclient.lgdacom.net:7080/xpay/Gateway.do

View File

@ -0,0 +1,40 @@
;server_id Mall <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
server_id = 01
;timeout API <20><>û timeout <20>ð<EFBFBD> (<28><><EFBFBD><EFBFBD>:<3A><>)
timeout = 60
;log_level 0: FATAL; 1: ERROR; 2: WARNING; 3: INFO; 4: DEBUG
log_level = 4
;verify_cert 1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; 0: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
verify_cert = 1
;verify_host 1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> domain name Ȯ<><C8AE>; 0: Ȯ<><C8AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (test <20>ø<EFBFBD> <20><><EFBFBD><EFBFBD>)
verify_host = 1
;report_error 1: error <20><> dacom <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> report <20><><EFBFBD><EFBFBD>; 0: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (error <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
report_error = 1
;output_UTF8 1: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UTF-8<><38> return; 0: EUC-KR<4B><52> <20><><EFBFBD><EFBFBD>
output_UTF8 = 1
;auto_rollback 0: <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1: <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
auto_rollback = 1
;log_dir log directory full path (<28>α<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> log <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݵ<EFBFBD><DDB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>αװ<CEB1> <20><><EFBFBD><EFBFBD>)
log_dir = c:\lgdacom\log
;>>>>>>>>>>>>>>>>>>>> <20>ݵ<EFBFBD><DDB5><EFBFBD> <20>Է<EFBFBD><D4B7><EFBFBD> <20>ּ<EFBFBD><D6BC><EFBFBD> <<<<<<<<<<<<<<<<<<<<
;<3B><><EFBFBD><EFBFBD> ID<49><44> LG<4C>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߱޹<DFB1><DEB9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>. (<28>߱޹<DFB1><DEB9><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20>տ<EFBFBD> "t" <20><> <20><><EFBFBD>̽ø<CCBD> <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD>̵<EFBFBD> <20>Դϴ<D4B4>.)
;MertKey<65><79> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD><DBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD>ϽǼ<CFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
;<3B><><EFBFBD><EFBFBD> ID = MertKey (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>׽<EFBFBD>Ʈ, 2<><32><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Է<EFBFBD><D4B7><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>. <20>Է½<D4B7> <20>ּ<EFBFBD>ǥ<EFBFBD><C7A5>(;)<29><> <20><><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD> <20>ȵ˴ϴ<CBB4>.)
;<3B>Է<EFBFBD> <20><>)
tlgdacomxpay = 95160cce09854ef44d2edb2bfb05f9f3
lgdacomxpay = 95160cce09854ef44d2edb2bfb05f9f3
;>>>>>>>>>>>>>>>>>>>> <20>ݵ<EFBFBD><DDB5><EFBFBD> <20>Է<EFBFBD><D4B7><EFBFBD> <20>ּ<EFBFBD><D6BC><EFBFBD> <<<<<<<<<<<<<<<<<<<<

View File

@ -0,0 +1,28 @@
<?php
$configPath = "C:/lgdacom"; //LG<4C><47><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȯ<><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>("/conf/lgdacom.conf") <20><>ġ <20><><EFBFBD><EFBFBD>.
/*
* [LG<4C><47><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> ȯ<><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UPDATE]
*
* <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LG<4C><47><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> ȯ<><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UPDATE <20>մϴ<D5B4>.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.)
*/
$CST_PLATFORM = $HTTP_POST_VARS["CST_PLATFORM"];
$CST_MID = $HTTP_POST_VARS["CST_MID"];
$LGD_MID = (("test" == $CST_PLATFORM)?"t":"").$CST_MID;
if( $CST_PLATFORM == null || $CST_PLATFORM == "" ) {
echo "[TX_PING error] <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><br>";
return;
}
if( $LGD_MID == null || $LGD_MID == "" ) {
echo "[TX_PING error] <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><br>";
return;
}
require_once("./XPayClient.php");
$xpay = &new XPayClient($configPath, $CST_PLATFORM);
$xpay->Init_TX($LGD_MID);
echo "patch result = ".$xpay->Patch("lgdacom.conf");
?>

View File

@ -0,0 +1,48 @@
<?php
$configPath = "C:/lgdacom"; //LG<4C><47><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȯ<><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>("/conf/lgdacom.conf") <20><>ġ <20><><EFBFBD><EFBFBD>.
/*
* [LG<4C><47><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LG<4C><47><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׽<EFBFBD>Ʈ <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Դϴ<D4B4>.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.)
*/
$CST_PLATFORM = $HTTP_POST_VARS["CST_PLATFORM"];
$CST_MID = $HTTP_POST_VARS["CST_MID"]; // 't'<27><> <20>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Կ<EFBFBD>û<EFBFBD><C3BB> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20>Է¹ٶ<C2B9><D9B6>ϴ<EFBFBD>.
$LGD_MID = (("test" == $CST_PLATFORM)?"t":"").$CST_MID;
if( $CST_PLATFORM == null || $CST_PLATFORM == "" ) {
echo "[TX_PING error] <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><br>";
return;
}
if( $LGD_MID == null || $LGD_MID == "" ) {
echo "[TX_PING error] <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><br>";
return;
}
require_once("./XPayClient.php");
$xpay = &new XPayClient($configPath, $CST_PLATFORM);
$xpay->Init_TX($LGD_MID);
$xpay->Set("LGD_TXNAME", "Ping");
$xpay->Set("LGD_RESULTCNT", "3");
if ($xpay->TX()) {
echo "response code = " . $xpay->Response_Code() . "<br>";
echo "response msg = " . $xpay->Response_Msg() . "<br>";
echo "response count = " . $xpay->Response_Count() . "<p>";
$keys = $xpay->Response_Names();
for ($i = 0; $i < $xpay->Response_Count(); $i++) {
echo "count = " . $i . "<br>";
foreach($keys as $name) {
echo $name . " = " . $xpay->Response($name, $i) . "<br>";
}
}
}
else {
echo "[TX_PING error] <br>";
echo "response code = " . $xpay->Response_Code() . "<br>";
echo "response msg = " . $xpay->Response_Msg() . "<p>";
}
?>

3
shop/lg/_common.php Normal file
View File

@ -0,0 +1,3 @@
<?php
include_once('../../common.php');
?>

48
shop/lg/makehashdata.php Normal file
View File

@ -0,0 +1,48 @@
<?php
include_once('./_common.php');
// LG U+ 공통 설정
require_once(G5_SHOP_PATH.'/settle_lg.inc.php');
/*
* 1. 기본결제 인증요청 정보 변경
*
* 기본정보를 변경하여 주시기 바랍니다.(파라미터 전달시 POST를 사용하세요)
*/
$LGD_OID = $_POST['LGD_OID']; //주문번호(상점정의 유니크한 주문번호를 입력하세요)
$LGD_AMOUNT = $_POST['LGD_AMOUNT']; //결제금액("," 를 제외한 결제금액을 입력하세요)
$LGD_TIMESTAMP = $_POST['LGD_TIMESTAMP']; //타임스탬프
/*
*************************************************
* 2. MD5 해쉬암호화 (수정하지 마세요) - BEGIN
*
* MD5 해쉬암호화는 거래 위변조를 막기위한 방법입니다.
*************************************************
*
* 해쉬 암호화 적용( LGD_MID + LGD_OID + LGD_AMOUNT + LGD_TIMESTAMP + LGD_MERTKEY )
* LGD_MID : 상점아이디
* LGD_OID : 주문번호
* LGD_AMOUNT : 금액
* LGD_TIMESTAMP : 타임스탬프
* LGD_MERTKEY : 상점MertKey (mertkey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실수 있습니다)
*
* MD5 해쉬데이터 암호화 검증을 위해
* LG유플러스에서 발급한 상점키(MertKey)를 환경설정 파일(lgdacom/conf/mall.conf)에 반드시 입력하여 주시기 바랍니다.
*/
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$LGD_HASHDATA = md5($LGD_MID.$LGD_OID.$LGD_AMOUNT.$LGD_TIMESTAMP.$xpay->config[$LGD_MID]);
/*
*************************************************
* 2. MD5 해쉬암호화 (수정하지 마세요) - END
*************************************************
*/
die($LGD_HASHDATA);
?>

69
shop/lg/orderform.1.php Normal file
View File

@ -0,0 +1,69 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// kcp 전자결제를 사용할 때만 실행
if($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use'] || $default['de_card_use']) {
?>
<script language = 'javascript'>
<!--
/*
* 상점결제 인증요청후 PAYKEY를 받아서 최종결제 요청.
*/
function doPay_ActiveX(){
ret = xpay_check(document.getElementById('forderform'), '<?php echo $CST_PLATFORM; ?>');
if (ret=="00"){ //ActiveX 로딩 성공
var LGD_RESPCODE = dpop.getData('LGD_RESPCODE'); //결과코드
var LGD_RESPMSG = dpop.getData('LGD_RESPMSG'); //결과메세지
if( "0000" == LGD_RESPCODE ) { //인증성공
var LGD_PAYKEY = dpop.getData('LGD_PAYKEY'); //LG유플러스 인증KEY
//var msg = "인증결과 : " + LGD_RESPMSG + "\n";
//msg += "LGD_PAYKEY : " + LGD_PAYKEY +"\n\n";
document.getElementById('LGD_PAYKEY').value = LGD_PAYKEY;
//alert(msg);
document.getElementById('display_pay_button').style.display = 'none';
document.getElementById('display_pay_process').style.display = '';
document.getElementById('forderform').submit();
} else { //인증실패
alert("인증이 실패하였습니다. " + LGD_RESPMSG);
return false;
}
} else {
alert("LG U+ 전자결제를 위한 ActiveX Control이 설치되지 않았습니다.");
xpay_showInstall(); //설치안내 팝업페이지 표시 코드 추가
}
}
function isActiveXOK(){
if(lgdacom_atx_flag == true){
document.getElementById('display_pay_button').style.display='';
}else{
document.getElementById('display_pay_button').style.display='none';
}
}
function Pay_Request(od_id, amount, timestamp)
{
$.ajax({
url: "<?php echo G5_SHOP_URL; ?>/lg/makehashdata.php",
type: "POST",
cache: false,
dataType: "html",
data: { LGD_OID : od_id, LGD_AMOUNT : amount, LGD_TIMESTAMP : timestamp },
success: function(data) {
$("#LGD_HASHDATA").val(data);
doPay_ActiveX();
}
});
}
//-->
</script>
<div id="LGD_ACTIVEX_DIV"></div> <!-- ActiveX 설치 안내 Layer 입니다. 수정하지 마세요. -->
<?php } ?>

43
shop/lg/orderform.2.php Normal file
View File

@ -0,0 +1,43 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$LGD_CUSTOM_PROCESSTYPE = 'TWOTR';
?>
<input type="hidden" name="CST_PLATFORM" id="CST_PLATFORM" value="<?php echo $CST_PLATFORM; ?>"> <!-- 테스트, 서비스 구분 -->
<input type="hidden" name="CST_MID" id="CST_MID" value="<?php echo $CST_MID; ?>"> <!-- 상점아이디 -->
<input type="hidden" name="LGD_MID" id="LGD_MID" value="<?php echo $LGD_MID; ?>"> <!-- 상점아이디 -->
<input type="hidden" name="LGD_OID" id="LGD_OID" value="<?php echo $od_id; ?>"> <!-- 주문번호 -->
<input type="hidden" name="LGD_BUYER" id="LGD_BUYER" value=""> <!-- 구매자 -->
<input type="hidden" name="LGD_PRODUCTINFO" id="LGD_PRODUCTINFO" value="<?php echo $goods; ?>"> <!-- 상품정보 -->
<input type="hidden" name="LGD_AMOUNT" id="LGD_AMOUNT" value=""> <!-- 결제금액 -->
<input type="hidden" name="LGD_CUSTOM_FIRSTPAY" id="LGD_CUSTOM_FIRSTPAY" value=""> <!-- 결제수단 -->
<input type="hidden" name="LGD_BUYEREMAIL" id="LGD_BUYEREMAIL" value=""> <!-- 구매자 이메일 -->
<input type="hidden" name="LGD_CUSTOM_SKIN" id="LGD_CUSTOM_SKIN" value="<?php echo $LGD_CUSTOM_SKIN; ?>"> <!-- 결제창 SKIN -->
<input type="hidden" name="LGD_WINDOW_VER" id="LGD_WINDOW_VER" value="<?php echo $LGD_WINDOW_VER; ?>"> <!-- 결제창버전정보 (삭제하지 마세요) -->
<input type="hidden" name="LGD_CUSTOM_PROCESSTYPE" id="LGD_CUSTOM_PROCESSTYPE" value="<?php echo $LGD_CUSTOM_PROCESSTYPE; ?>"> <!-- 트랜잭션 처리방식 -->
<input type="hidden" name="LGD_TIMESTAMP" id="LGD_TIMESTAMP" value="<?php echo $LGD_TIMESTAMP; ?>"> <!-- 타임스탬프 -->
<input type="hidden" name="LGD_HASHDATA" id="LGD_HASHDATA" value=""> <!-- MD5 해쉬암호값 -->
<input type="hidden" name="LGD_PAYKEY" id="LGD_PAYKEY"> <!-- LG유플러스 PAYKEY(인증후 자동셋팅)-->
<input type="hidden" name="LGD_VERSION" id="LGD_VERSION" value="PHP_XPay_2.5"> <!-- 버전정보 (삭제하지 마세요) -->
<input type="hidden" name="LGD_TAXFREEAMOUNT" id="LGD_TAXFREEAMOUNT" value="<?php echo $comm_free_mny; ?>"> <!-- 결제금액 중 면세금액 -->
<input type="hidden" name="LGD_BUYERIP" id="LGD_BUYERIP" value="<?php echo $LGD_BUYERIP; ?>"> <!-- 구매자IP -->
<input type="hidden" name="LGD_BUYERID" id="LGD_BUYERID" value="<?php echo $LGD_BUYERID; ?>"> <!-- 구매자ID -->
<input type="hidden" name="LGD_CUSTOM_USABLEPAY" id="LGD_CUSTOM_USABLEPAY" value="<?php echo $LGD_CUSTOM_USABLEPAY; ?>"> <!-- 결제가능수단 -->
<input type="hidden" name="LGD_CASHRECEIPTYN" id="LGD_CASHRECEIPTYN" value="N"> <!-- 현금영수증 사용 설정 -->
<input type="hidden" name="LGD_BUYERPHONE" id="LGD_BUYERPHONE" value=""> <!-- 구매자 휴대폰번호 -->
<!-- 가상계좌(무통장) 결제연동을 하시는 경우 할당/입금 결과를 통보받기 위해 반드시 LGD_CASNOTEURL 정보를 LG 유플러스에 전송해야 합니다 . -->
<input type="hidden" name="LGD_CASNOTEURL" id="LGD_CASNOTEURL" value="<?php echo $LGD_CASNOTEURL ?>"> <!-- 가상계좌 NOTEURL -->
<?php /* 주문폼 자바스크립트 에러 방지를 위해 추가함 */ ?>
<input type="hidden" name="good_mny" value="<?php echo $tot_price; ?>">
<?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
}
?>

21
shop/lg/orderform.3.php Normal file
View File

@ -0,0 +1,21 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<div id="display_pay_button" class="btn_confirm" style="display:none">
<input type="button" value="주문하기" class="btn_submit" onclick="forderform_check(this.form);"/>
<a href="javascript:history.go(-1);" class="btn01">취소</a>
</div>
<div id="display_pay_process" style="display:none">
<img src="<?php echo G5_URL; ?>/shop/img/loading.gif" alt="">
<span>주문완료 중입니다. 잠시만 기다려 주십시오.</span>
</div>
<?php
// 무통장 입금만 사용할 때는 주문하기 버튼 보이게
if(!($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use'] || $default['de_card_use'])) {
?>
<script>
document.getElementById("display_pay_button").style.display = "" ;
</script>
<?php } ?>

3
shop/lg/orderform.4.php Normal file
View File

@ -0,0 +1,3 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>

7
shop/lg/orderform.5.php Normal file
View File

@ -0,0 +1,7 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<!-- xpay.js는 반드시 body 밑에 두시기 바랍니다. -->
<!-- UTF-8 인코딩 사용 시는 xpay.js 대신 xpay_utf-8.js 을 호출하시기 바랍니다.-->
<script language="javascript" src="<?php echo $_SERVER['SERVER_PORT'] != 443 ? 'http' : 'https'; ?>://xpay.uplus.co.kr<?php echo ($CST_PLATFORM == 'test') ? ($_SERVER['SERVER_PORT'] != 443 ? ':7080' : ':7443') : ''; ?>/xpay/js/xpay_ub_utf-8.js" type="text/javascript"></script>

188
shop/lg/taxsave_form.php Normal file
View File

@ -0,0 +1,188 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<script>
// 현금영수증 MAIN FUNC
function jsf__pay_cash( form )
{
jsf__show_progress(true);
if ( jsf__chk_cash( form ) == false )
{
jsf__show_progress(false);
return;
}
form.submit();
}
// 진행 바
function jsf__show_progress( show )
{
if ( show == true )
{
window.show_pay_btn.style.display = "none";
window.show_progress.style.display = "inline";
}
else
{
window.show_pay_btn.style.display = "inline";
window.show_progress.style.display = "none";
}
}
// 포맷 체크
function jsf__chk_cash( form )
{
if ( form.tr_code[0].checked )
{
if ( form.id_info.value.length != 10 &&
form.id_info.value.length != 11 &&
form.id_info.value.length != 13 )
{
alert("주민번호 또는 휴대폰번호를 정확히 입력해 주시기 바랍니다.");
form.id_info.select();
form.id_info.focus();
return false;
}
}
else if ( form.tr_code[1].checked )
{
if ( form.id_info.value.length != 10 )
{
alert("사업자번호를 정확히 입력해 주시기 바랍니다.");
form.id_info.select();
form.id_info.focus();
return false;
}
}
return true;
}
function jsf__chk_tr_code( form )
{
var span_tr_code_0 = document.getElementById( "span_tr_code_0" );
var span_tr_code_1 = document.getElementById( "span_tr_code_1" );
if ( form.tr_code[0].checked )
{
span_tr_code_0.style.display = "block";
span_tr_code_1.style.display = "none";
}
else if (form.tr_code[1].checked )
{
span_tr_code_0.style.display = "none";
span_tr_code_1.style.display = "block";
}
}
</script>
<div id="scash" class="new_win">
<h1 id="win_title"><?php echo $g5['title']; ?></h1>
<section>
<h2>주문정보</h2>
<div class="tbl_head01 tbl_wrap">
<table>
<colgroup>
<col class="grid_3">
<col>
</colgroup>
<tbody>
<tr>
<th scope="row">주문 번호</th>
<td><?php echo $od['od_id']; ?></td>
</tr>
<tr>
<th scope="row">상품 정보</th>
<td><?php echo $goods_name; ?></td>
</tr>
<tr>
<th scope="row">주문자 이름</th>
<td><?php echo $od['od_name']; ?></td>
</tr>
<tr>
<th scope="row">주문자 E-Mail</th>
<td><?php echo $od['od_email']; ?></td>
</tr>
<tr>
<th scope="row">주문자 전화번호</th>
<td><?php echo $od['od_tel']; ?></td>
</tr>
</tbody>
</table>
</div>
</section>
<section>
<h2>현금영수증 발급 정보</h2>
<form method="post" id="LGD_PAYINFO" action="<?php echo G5_SHOP_URL; ?>/lg/taxsave_result.php">
<input type="hidden" name="od_id" value="<?php echo $od_id; ?>">
<div class="tbl_head01 tbl_wrap">
<table>
<colgroup>
<col class="grid_3">
<col>
</colgroup>
<tbody>
<tr>
<th scope="row">원 거래 시각</th>
<td><?php echo $trad_time; ?></td>
</tr>
<tr>
<th scope="row">발행 용도</th>
<td>
<input type="radio" name="tr_code" value="1" id="tr_code1" onClick="jsf__chk_tr_code( this.form )" checked>
<label for="tr_code1">소득공제용</label>
<input type="radio" name="tr_code" value="2" id="tr_code2" onClick="jsf__chk_tr_code( this.form )">
<label for="tr_code2">지출증빙용</label>
</td>
</tr>
<tr>
<th scope="row">
<label for="id_info">
<span id="span_tr_code_0" style="display:inline">주민(휴대폰)번호</span>
<span id="span_tr_code_1" style="display:none">사업자번호</span>
</label>
</th>
<td>
<input type="text" name="id_info" id="id_info" class="frm_input" size="16" maxlength="13"> ("-" 생략)
</td>
</tr>
<tr>
<th scope="row">거래금액 총합</th>
<td><?php echo number_format($amt_tot); ?>원</td>
</tr>
<tr>
<th scope="row">공급가액</th>
<td><?php echo number_format($amt_sup); ?>원<!-- ((거래금액 총합 * 10) / 11) --></td>
</tr>
<tr>
<th scope="row">봉사료</th>
<td><?php echo number_format($amt_svc); ?>원</td>
</tr>
<tr>
<th scope="row">부가가치세</th>
<td><?php echo number_format($amt_tax); ?>원<!-- 거래금액 총합 - 공급가액 - 봉사료 --></td>
</tr>
</tbody>
</table>
</div>
<div id="scash_apply">
<span id="show_pay_btn">
<button type="button" onclick="jsf__pay_cash( this.form )">등록요청</button>
</span>
<span id="show_progress" style="display:none">
<b>등록 진행중입니다. 잠시만 기다려주십시오</b>
</span>
</div>
</form>
</section>
</div>

234
shop/lg/taxsave_result.php Normal file
View File

@ -0,0 +1,234 @@
<?php
include_once('./_common.php');
require_once(G5_SHOP_PATH.'/settle_lg.inc.php');
$od = sql_fetch(" select * from {$g5['g5_shop_order_table']} where od_id = '$od_id' ");
if (!$od)
die('<p id="scash_empty">주문서가 존재하지 않습니다.</p>');
$goods = get_goods($od['od_id']);
$goods_name = $goods['full_name'];
$order_price = $od['od_receipt_price'] - $od['od_refund_price'];
switch($od['od_settle_case']) {
case '가상계좌':
$pay_type = 'SC0040';
break;
case '계좌이체':
$pay_type = 'SC0030';
break;
case '무통장':
$pay_type = 'SC0100';
break;
default:
die('<p id="scash_empty">현금영수증은 무통장, 가상계좌, 계좌이체에 한해 발급요청이 가능합니다.</p>');
break;
}
$LGD_METHOD = 'AUTH'; //메소드('AUTH':승인, 'CANCEL' 취소)
$LGD_OID = $od['od_id']; //주문번호(상점정의 유니크한 주문번호를 입력하세요)
$LGD_PAYTYPE = $pay_type; //결제수단 코드 (SC0030:계좌이체, SC0040:가상계좌, SC0100:무통장입금 단독)
$LGD_AMOUNT = $order_price; //금액("," 를 제외한 금액을 입력하세요)
$LGD_PRODUCTINFO = $goods_name; //상품명
$LGD_TID = $od['od_tno']; //LG유플러스 거래번호
$LGD_CUSTOM_MERTNAME = $default['de_admin_company_name']; //상점명
$LGD_CUSTOM_CEONAME = $default['de_admin_company_owner']; //대표자명
$LGD_CUSTOM_BUSINESSNUM = $default['de_admin_company_saupja_no']; //사업자등록번호
$LGD_CUSTOM_MERTPHONE = $default['de_admin_company_tel']; //상점 전화번호
$LGD_CASHCARDNUM = $_POST['id_info']; //발급번호(주민등록번호,현금영수증카드번호,휴대폰번호 등등)
$LGD_CASHRECEIPTUSE = $_POST['tr_code']; //현금영수증발급용도('1':소득공제, '2':지출증빙)
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$xpay->Set("LGD_TXNAME", "CashReceipt");
$xpay->Set("LGD_METHOD", $LGD_METHOD);
$xpay->Set("LGD_PAYTYPE", $LGD_PAYTYPE);
if ($LGD_METHOD == "AUTH") { // 현금영수증 발급 요청
$xpay->Set("LGD_OID", $LGD_OID);
$xpay->Set("LGD_AMOUNT", $LGD_AMOUNT);
$xpay->Set("LGD_CASHCARDNUM", $LGD_CASHCARDNUM);
$xpay->Set("LGD_CUSTOM_MERTNAME", $LGD_CUSTOM_MERTNAME);
$xpay->Set("LGD_CUSTOM_CEONAME", $LGD_CUSTOM_CEONAME);
$xpay->Set("LGD_CUSTOM_BUSINESSNUM", $LGD_CUSTOM_BUSINESSNUM);
$xpay->Set("LGD_CUSTOM_MERTPHONE", $LGD_CUSTOM_MERTPHONE);
$xpay->Set("LGD_CASHRECEIPTUSE", $LGD_CASHRECEIPTUSE);
$xpay->Set("LGD_ENCODING", "UTF-8");
if($od['od_tax_flag'] && $od['free_mny'] > 0) {
$xpay->Set("LGD_TAXFREEAMOUNT", $od['free_mny']); //비과세 금액
}
if ($LGD_PAYTYPE == "SC0030"){ //기결제된 계좌이체건 현금영수증 발급요청시 필수
$xpay->Set("LGD_TID", $LGD_TID);
}
else if ($LGD_PAYTYPE == "SC0040"){ //기결제된 가상계좌건 현금영수증 발급요청시 필수
$xpay->Set("LGD_TID", $LGD_TID);
$xpay->Set("LGD_SEQNO", $od['od_casseqno']);
}
else { //무통장입금 단독건 발급요청
$xpay->Set("LGD_PRODUCTINFO", $LGD_PRODUCTINFO);
}
}
/*
* 1. 현금영수증 발급/취소 요청 결과처리
*
* 결과 리턴 파라미터는 연동메뉴얼을 참고하시기 바랍니다.
*/
if ($xpay->TX()) {
//1)현금영수증 발급/취소결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
/*
echo "현금영수증 발급/취소 요청처리가 완료되었습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
echo "결과코드 : " . $xpay->Response("LGD_RESPCODE",0) . "<br>";
echo "결과메세지 : " . $xpay->Response("LGD_RESPMSG",0) . "<br>";
echo "거래번호 : " . $xpay->Response("LGD_TID",0) . "<p>";
$keys = $xpay->Response_Names();
foreach($keys as $name) {
echo $name . " = " . $xpay->Response($name, 0) . "<br>";
}
*/
if($xpay->Response_Code() == '0000') {
$LGD_OID = $xpay->Response("LGD_OID",0);
$cash_no = $xpay->Response("LGD_CASHRECEIPTNUM",0);
$cash = array();
$cash['LGD_TID'] = $xpay->Response("LGD_TID",0);
$cash['LGD_TIMESTAMP'] = $xpay->Response("LGD_TIMESTAMP",0);
$cash['LGD_RESPDATE'] = $xpay->Response("LGD_RESPDATE",0);
$cash_info = serialize($cash);
$sql = " update {$g5['g5_shop_order_table']}
set od_cash = '1',
od_cash_no = '$cash_no',
od_cash_info = '$cash_info'
where od_id = '$LGD_OID' ";
$result = sql_query($sql, false);
if(!$result) { // DB 정보갱신 실패시 취소
$xpay->Set("LGD_TXNAME", "CashReceipt");
$xpay->Set("LGD_METHOD", "CANCEL");
$xpay->Set("LGD_PAYTYPE", $LGD_PAYTYPE);
$xpay->Set("LGD_TID", $LGD_TID);
if ($LGD_PAYTYPE == "SC0040"){ //가상계좌건 현금영수증 발급취소시 필수
$xpay->Set("LGD_SEQNO", $od['od_casseqno']);
}
if ($xpay->TX()) {
/*
echo "현금영수증 취소 요청처리가 완료되었습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
echo "결과코드 : " . $xpay->Response("LGD_RESPCODE",0) . "<br>";
echo "결과메세지 : " . $xpay->Response("LGD_RESPMSG",0) . "<br>";
echo "거래번호 : " . $xpay->Response("LGD_TID",0) . "<p>";
*/
} else {
$msg = '현금영수증 취소 요청처리가 정상적으로 완료되지 않았습니다.';
if(!$is_admin)
$msg .= '쇼핑몰 관리자에게 문의해 주십시오.';
alert_close($msg);
}
}
}
} else {
//2)API 요청 실패 화면처리
/*
echo "현금영수증 발급/취소 요청처리가 실패되었습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
*/
$msg = '현금영수증 발급 요청처리가 정상적으로 완료되지 않았습니다.';
$msg .= '\\nTX Response_code = '.$xpay->Response_Code();
$msg .= '\\nTX Response_msg = '.$xpay->Response_Msg();
alert($msg);
}
$g5['title'] = '';
include_once(G5_PATH.'/head.sub.php');
if($default['de_card_test']) {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr:7085/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
} else {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
}
switch($LGD_PAYTYPE) {
case 'SC0030':
$trade_type = 'BANK';
break;
case 'SC0040':
$trade_type = 'CAS';
break;
default:
$trade_type = 'CR';
break;
}
?>
<div id="lg_req_tx" class="new_win">
<h1 id="win_title">현금영수증 - LG U+ eCredit</h1>
<div class="tbl_head01 tbl_wrap">
<table>
<colgroup>
<col class="grid_4">
<col>
</colgroup>
<tbody>
<tr>
<th scope="row">결과코드</th>
<td><?php echo $xpay->Response_Code(); ?></td>
</tr>
<tr>
<th scope="row">결과 메세지</th>
<td><?php echo $xpay->Response_Msg(); ?></td>
</tr>
<tr>
<th scope="row">현금영수증 거래번호</th>
<td><?php echo $xpay->Response("LGD_TID",0); ?></td>
</tr>
<tr>
<th scope="row">현금영수증 승인번호</th>
<td><?php echo $xpay->Response("LGD_CASHRECEIPTNUM",0); ?></td>
</tr>
<tr>
<th scope="row">승인시간</th>
<td><?php echo 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",$xpay->Response("LGD_RESPDATE",0)); ?></td>
</tr>
<tr>
<th scope="row">현금영수증 URL</th>
<td>
<button type="button" name="receiptView" class="btn_frmline" onClick="javascript:showCashReceipts('<?php echo $LGD_MID; ?>','<?php echo $LGD_OID; ?>','<?php echo $od['od_casseqno']; ?>','<?php echo $trade_type; ?>','<?php echo $CST_PLATFROM; ?>');">영수증 확인</button>
<p>영수증 확인은 실 등록의 경우에만 가능합니다.</p>
</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
</div>
</div>
<?php
include_once(G5_PATH.'/tail.sub.php');
?>

18
shop/lg/xpay_cancel.php Normal file
View File

@ -0,0 +1,18 @@
<?php
//최종결제요청 결과 성공 DB처리 실패시 Rollback 처리
$isDBOK = false; //DB처리 실패시 false로 변경해 주세요.
if( !$isDBOK ) {
$xpay->Rollback($cancel_msg . " [TID:" . $xpay->Response("LGD_TID",0) . ",MID:" . $xpay->Response("LGD_MID",0) . ",OID:" . $xpay->Response("LGD_OID",0) . "]");
/*
echo "TX Rollback Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Rollback Response_msg = " . $xpay->Response_Msg() . "<p>";
if( "0000" == $xpay->Response_Code() ) {
echo "자동취소가 정상적으로 완료 되었습니다.<br>";
}else{
echo "자동취소가 정상적으로 처리되지 않았습니다.<br>";
}
*/
}
?>

108
shop/lg/xpay_result.php Normal file
View File

@ -0,0 +1,108 @@
<?php
// LG U+ 공통 설정
require_once(G5_SHOP_PATH.'/settle_lg.inc.php');
/*
* [최종결제요청 페이지(STEP2-2)]
*
* LG유플러스으로 부터 내려받은 LGD_PAYKEY(인증Key)를 가지고 최종 결제요청.(파라미터 전달시 POST를 사용하세요)
*/
/* ※ 중요
* 환경설정 파일의 경우 반드시 외부에서 접근이 가능한 경로에 두시면 안됩니다.
* 해당 환경파일이 외부에 노출이 되는 경우 해킹의 위험이 존재하므로 반드시 외부에서 접근이 불가능한 경로에 두시기 바랍니다.
* 예) [Window 계열] C:\inetpub\wwwroot\lgdacom ==> 절대불가(웹 디렉토리)
*/
/*
*************************************************
* 1.최종결제 요청 - BEGIN
* (단, 최종 금액체크를 원하시는 경우 금액체크 부분 주석을 제거 하시면 됩니다.)
*************************************************
*/
$LGD_PAYKEY = $_POST['LGD_PAYKEY'];
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$xpay->Set('LGD_TXNAME', 'PaymentByKey');
$xpay->Set('LGD_PAYKEY', $LGD_PAYKEY);
//금액을 체크하시기 원하는 경우 아래 주석을 풀어서 이용하십시요.
//$DB_AMOUNT = "DB나 세션에서 가져온 금액"; //반드시 위변조가 불가능한 곳(DB나 세션)에서 금액을 가져오십시요.
//$xpay->Set('LGD_AMOUNTCHECKYN', 'Y');
//$xpay->Set('LGD_AMOUNT', $DB_AMOUNT);
/*
*************************************************
* 1.최종결제 요청(수정하지 마세요) - END
*************************************************
*/
/*
* 2. 최종결제 요청 결과처리
*
* 최종 결제요청 결과 리턴 파라미터는 연동메뉴얼을 참고하시기 바랍니다.
*/
if ($xpay->TX()) {
//1)결제결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
/*
echo "결제요청이 완료되었습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
echo "거래번호 : " . $xpay->Response("LGD_TID",0) . "<br>";
echo "상점아이디 : " . $xpay->Response("LGD_MID",0) . "<br>";
echo "상점주문번호 : " . $xpay->Response("LGD_OID",0) . "<br>";
echo "결제금액 : " . $xpay->Response("LGD_AMOUNT",0) . "<br>";
echo "결과코드 : " . $xpay->Response("LGD_RESPCODE",0) . "<br>";
echo "결과메세지 : " . $xpay->Response("LGD_RESPMSG",0) . "<p>";
$keys = $xpay->Response_Names();
foreach($keys as $name) {
echo $name . " = " . $xpay->Response($name, 0) . "<br>";
}
echo "<p>";
exit;
*/
if( '0000' == $xpay->Response_Code() ) {
//최종결제요청 결과 성공 DB처리
$tno = $xpay->Response('LGD_TID',0);
$amount = $xpay->Response('LGD_AMOUNT',0);
$app_time = $xpay->Response('LGD_PAYDATE',0);
$bank_name = $xpay->Response('LGD_FINANCENAME',0);
$depositor = $xpay->Response('LGD_PAYER',0);
$account = $xpay->Response('LGD_FINANCENAME',0).' '.$xpay->Response('LGD_ACCOUNTNUM',0).' '.$xpay->Response('LGD_SAOWNER',0);
$commid = $xpay->Response('LGD_FINANCENAME',0);
$mobile_no = $xpay->Response('LGD_TELNO',0);
$app_no = $xpay->Response('LGD_FINANCEAUTHNUM',0);
$card_name = $xpay->Response('LGD_FINANCENAME',0);
$pay_type = $xpay->Response('LGD_PAYTYPE',0);
$escw_yn = $xpay->Response('LGD_ESCROWYN',0);
} else {
//최종결제요청 결과 실패 DB처리
//echo "최종결제요청 결과 실패 DB처리하시기 바랍니다.<br>";
alert($xpay->Response_Msg().' 코드 : '.$xpay->Response_Code());
}
} else {
//2)API 요청실패 화면처리
/*
echo "결제요청이 실패하였습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
//최종결제요청 결과 실패 DB처리
echo "최종결제요청 결과 실패 DB처리하시기 바랍니다.<br>";
*/
alert($xpay->Response_Msg().' 코드 : '.$xpay->Response_Code());
}
?>

View File

@ -20,6 +20,10 @@ if (get_cart_count($tmp_cart_id) == 0)
$g5['title'] = '주문서 작성';
// LG Xpay 전자결제를 사용할 때만 실행
if($default['de_pg_service'] == 'lg' && ($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use'] || $default['de_card_use'])) {
$g5['body_script'] = 'onload="isActiveXOK();"';
}
include_once('./_head.php');
if ($default['de_hope_date_use']) {
include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php');
@ -31,10 +35,10 @@ set_session('ss_order_id', $od_id);
$s_cart_id = $tmp_cart_id;
$order_action_url = G5_HTTPS_SHOP_URL.'/orderformupdate.php';
require_once('./settle_kcp.inc.php');
require_once('./settle_'.$default['de_pg_service'].'.inc.php');
// 결제대행사별 코드 include (스크립트 등)
require_once('./kcp/orderform.1.php');
require_once('./'.$default['de_pg_service'].'/orderform.1.php');
?>
<form name="forderform" id="forderform" method="post" action="<?php echo $order_action_url; ?>" onsubmit="return forderform_check(this);" autocomplete="off">
@ -271,7 +275,7 @@ require_once('./kcp/orderform.1.php');
<?php
// 결제대행사별 코드 include (결제대행사 정보 필드)
require_once('./kcp/orderform.2.php');
require_once('./'.$default['de_pg_service'].'/orderform.2.php');
?>
<!-- 주문하시는 분 입력 시작 { -->
@ -665,14 +669,14 @@ require_once('./kcp/orderform.1.php');
<?php
// 결제대행사별 코드 include (주문버튼)
require_once('./kcp/orderform.3.php');
require_once('./'.$default['de_pg_service'].'/orderform.3.php');
?>
</form>
<?php
if ($default['de_escrow_use']) {
// 결제대행사별 코드 include (에스크로 안내)
require_once('./kcp/orderform.4.php');
require_once('./'.$default['de_pg_service'].'/orderform.4.php');
}
?>
@ -1285,6 +1289,7 @@ function forderform_check(f)
<?php } ?>
// pay_method 설정
<?php if($default['de_pg_service'] == 'kcp') { ?>
switch(settle_method)
{
case "계좌이체":
@ -1303,8 +1308,33 @@ function forderform_check(f)
f.pay_method.value = "무통장";
break;
}
<?php } else if($default['de_pg_service'] == 'lg') { ?>
switch(settle_method)
{
case "계좌이체":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0030";
f.LGD_CUSTOM_USABLEPAY.value = "SC0030";
break;
case "가상계좌":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0040";
f.LGD_CUSTOM_USABLEPAY.value = "SC0040";
break;
case "휴대폰":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0060";
f.LGD_CUSTOM_USABLEPAY.value = "SC0060";
break;
case "신용카드":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0010";
f.LGD_CUSTOM_USABLEPAY.value = "SC0010";
break;
default:
f.LGD_CUSTOM_FIRSTPAY.value = "무통장";
break;
}
<?php } ?>
// 결제정보설정
<?php if($default['de_pg_service'] == 'kcp') { ?>
f.buyr_name.value = f.od_name.value;
f.buyr_mail.value = f.od_email.value;
f.buyr_tel1.value = f.od_tel.value;
@ -1326,6 +1356,21 @@ function forderform_check(f)
} else {
return true;
}
<?php } if($default['de_pg_service'] == 'lg') { ?>
f.LGD_BUYER.value = f.od_name.value;
f.LGD_BUYEREMAIL.value = f.od_email.value;
f.LGD_BUYERPHONE.value = f.od_hp.value;
f.LGD_AMOUNT.value = f.good_mny.value;
<?php if($default['de_tax_flag_use']) { ?>
f.LGD_TAXFREEAMOUNT.value = f.comm_free_mny.value;
<?php } ?>
if(f.LGD_CUSTOM_FIRSTPAY.value != "무통장") {
Pay_Request("<?php echo $od_id; ?>", f.LGD_AMOUNT.value, f.LGD_TIMESTAMP.value);
} else {
f.submit();
}
<?php } ?>
}
// 구매자 정보와 동일합니다.
@ -1370,5 +1415,5 @@ $(function(){
include_once('./_tail.php');
// 결제대행사별 코드 include (스크립트 실행)
require_once('./kcp/orderform.5.php');
require_once('./'.$default['de_pg_service'].'/orderform.5.php');
?>

View File

@ -2,6 +2,9 @@
include_once('./_common.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
if($od_settle_case != '무통장' && $default['de_pg_service'] == 'lg' && !$_POST['LGD_PAYKEY'])
alert('결제등록 요청 후 주문해 주십시오.');
// 장바구니가 비어있는가?
if (get_session("ss_direct"))
$tmp_cart_id = get_session('ss_cart_direct');
@ -269,8 +272,15 @@ if ($od_settle_case == "무통장")
}
else if ($od_settle_case == "계좌이체")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
break;
}
$od_tno = $tno;
$od_receipt_price = $amount;
@ -286,9 +296,16 @@ else if ($od_settle_case == "계좌이체")
}
else if ($od_settle_case == "가상계좌")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
break;
}
$od_receipt_point = $i_temp_point;
$od_tno = $tno;
@ -300,7 +317,14 @@ else if ($od_settle_case == "가상계좌")
}
else if ($od_settle_case == "휴대폰")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
break;
}
$od_tno = $tno;
$od_receipt_price = $amount;
@ -314,8 +338,15 @@ else if ($od_settle_case == "휴대폰")
}
else if ($od_settle_case == "신용카드")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
break;
}
$od_tno = $tno;
$od_app_no = $app_no;
@ -337,7 +368,14 @@ else
if($tno) {
if((int)$i_price !== (int)$pg_price) {
$cancel_msg = '결제금액 불일치';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("Receipt Amount Error");
}
@ -365,6 +403,8 @@ if($default['de_tax_flag_use']) {
$od_free_mny = (int)$_POST['comm_free_mny'];
}
$od_pg = $default['de_pg_service'];
// 주문서에 입력
$sql = " insert {$g5['g5_shop_order_table']}
set od_id = '$od_id',
@ -403,6 +443,7 @@ $sql = " insert {$g5['g5_shop_order_table']}
od_bank_account = '$od_bank_account',
od_receipt_time = '$od_receipt_time',
od_misu = '$od_misu',
od_pg = '$od_pg',
od_tno = '$od_tno',
od_app_no = '$od_app_no',
od_escrow = '$od_escrow',
@ -423,14 +464,21 @@ $result = sql_query($sql, false);
if(!$result) {
if($tno) {
$cancel_msg = '주문정보 입력 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
}
// 관리자에게 오류 알림 메일발송
$error = 'order';
include G5_SHOP_PATH.'/ordererrormail.php';
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>KCP를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>'.strtoupper($default['de_pg_service']).'를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
}
// 장바구니 상태변경
@ -452,7 +500,14 @@ $result = sql_query($sql, false);
if(!$result) {
if($tno) {
$cancel_msg = '주문상태 변경 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
}
// 관리자에게 오류 알림 메일발송
@ -462,7 +517,7 @@ if(!$result) {
// 주문삭제
sql_query(" delete from {$g5['g5_shop_order_table']} where od_id = '$od_id' ");
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>KCP를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>'.strtoupper($default['de_pg_service']).'를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
}
// 회원이면서 포인트를 사용했다면 테이블에 사용을 추가

View File

@ -30,27 +30,65 @@ if($od['od_cancel_price'] > 0 || $ct['od_count1'] != $ct['od_count2']) {
// PG 결제 취소
if($od['od_tno']) {
require './settle_kcp.inc.php';
switch($od['od_pg']) {
case 'lg':
require './settle_lg.inc.php';
$LGD_TID = $od['od_tno']; //LG유플러스으로 부터 내려받은 거래번호(LGD_TID)
$_POST['tno'] = $od['od_tno'];
$_POST['req_tx'] = 'mod';
$_POST['mod_type'] = 'STSC';
if($od['od_escrow']) {
$_POST['req_tx'] = 'mod_escrow';
$_POST['mod_type'] = 'STE2';
if($od['od_settle_case'] == '가상계좌')
$_POST['mod_type'] = 'STE5';
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$xpay->Set("LGD_TXNAME", "Cancel");
$xpay->Set("LGD_TID", $LGD_TID);
if ($xpay->TX()) {
//1)결제취소결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
/*
echo "결제 취소요청이 완료되었습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
*/
} else {
//2)API 요청 실패 화면처리
$msg = "결제 취소요청이 실패하였습니다.\\n";
$msg .= "TX Response_code = " . $xpay->Response_Code() . "\\n";
$msg .= "TX Response_msg = " . $xpay->Response_Msg();
alert($msg);
}
break;
default:
require './settle_kcp.inc.php';
$_POST['tno'] = $od['od_tno'];
$_POST['req_tx'] = 'mod';
$_POST['mod_type'] = 'STSC';
if($od['od_escrow']) {
$_POST['req_tx'] = 'mod_escrow';
$_POST['mod_type'] = 'STE2';
if($od['od_settle_case'] == '가상계좌')
$_POST['mod_type'] = 'STE5';
}
$_POST['mod_desc'] = iconv("utf-8", "euc-kr", '주문자 본인 취소-'.$cancel_memo);
$_POST['site_cd'] = $default['de_kcp_mid'];
// 취소내역 한글깨짐방지
$def_locale = setlocale(LC_CTYPE, 0);
$locale_change = false;
if(preg_match("/utf[\-]?8/i", $def_locale)) {
setlocale(LC_CTYPE, 'ko_KR.euc-kr');
$locale_change = true;
}
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
if($locale_change)
setlocale(LC_CTYPE, $def_locale);
}
$_POST['mod_desc'] = iconv("utf-8", "euc-kr", '주문자 본인 취소-'.$cancel_memo);
$_POST['site_cd'] = $default['de_kcp_mid'];
// locale ko_KR.euc-kr 로 설정
setlocale(LC_CTYPE, 'ko_KR.euc-kr');
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
// locale 설정 초기화
setlocale(LC_CTYPE, '');
}
// 장바구니 자료 취소

View File

@ -26,6 +26,15 @@ $settle_case = $od['od_settle_case'];
$g5['title'] = '주문상세내역';
include_once('./_head.php');
// LG 현금영수증 JS
if($od['od_pg'] == 'lg') {
if($default['de_card_test']) {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr:7085/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
} else {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
}
}
?>
<!-- 주문상세내역 시작 { -->
@ -317,7 +326,16 @@ include_once('./_head.php');
<?php
if($od['od_settle_case'] == '휴대폰')
{
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
if($od['od_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $od['od_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$hp_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $hp_receipt_script; ?>">영수증 출력</a>
<?php
@ -325,7 +343,16 @@ include_once('./_head.php');
if($od['od_settle_case'] == '신용카드')
{
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
if($od['od_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $od['od_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$card_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$od['od_tno'].'&order_no='.$od['od_id'].'&trade_mony='.$od['od_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $card_receipt_script; ?>">영수증 출력</a>
<?php
@ -369,10 +396,27 @@ include_once('./_head.php');
<?php
if ($od['od_cash'])
{
require_once G5_SHOP_PATH.'/settle_kcp.inc.php';
if($od['od_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$cash = unserialize($od['od_cash_info']);
$cash_receipt_script = 'window.open(\''.G5_CASH_RECEIPT_URL.$default['de_kcp_mid'].'&orderid='.$od_id.'&bill_yn=Y&authno='.$cash['receipt_no'].'\', \'taxsave_receipt\', \'width=360,height=647,scrollbars=0,menus=0\');';
switch($od['od_settle_case']) {
case '계좌이체':
$trade_type = 'BANK';
break;
case '가상계좌':
$trade_type = 'CAS';
break;
default:
$trade_type = 'CR';
break;
}
$cash_receipt_script = 'javascript:showCashReceipts(\''.$LGD_MID.'\',\''.$od['od_id'].'\',\''.$od['od_casseqno'].'\',\''.$trade_type.'\',\''.$CST_PLATFORM.'\');';
} else {
require_once G5_SHOP_PATH.'/settle_kcp.inc.php';
$cash = unserialize($od['od_cash_info']);
$cash_receipt_script = 'window.open(\''.G5_CASH_RECEIPT_URL.$default['de_kcp_mid'].'&orderid='.$od_id.'&bill_yn=Y&authno='.$cash['receipt_no'].'\', \'taxsave_receipt\', \'width=360,height=647,scrollbars=0,menus=0\');';
}
?>
<a href="javascript:;" onclick="<?php echo $cash_receipt_script; ?>" class="btn_frmline">현금영수증 확인하기</a>
<?php
@ -571,7 +615,7 @@ include_once('./_head.php');
<?php } ?>
</section>
<?php if ($od['od_settle_case'] == '가상계좌' && $od['od_misu'] > 0 && $default['de_card_test'] && $is_admin) {
<?php if ($od['od_settle_case'] == '가상계좌' && $od['od_misu'] > 0 && $default['de_card_test'] && $is_admin && $od['od_pg'] == 'kcp') {
preg_match("/\s{1}([^\s]+)\s?/", $od['od_bank_account'], $matchs);
$deposit_no = trim($matchs[1]);
?>

View File

@ -16,6 +16,9 @@ if($pp['pp_tno'])
alert('이미 결제하신 개인결제 내역입니다.');
$g5['title'] = $pp['pp_name'].'님 개인결제';
if($default['de_pg_service'] == 'lg') {
$g5['body_script'] = 'onload="isActiveXOK();"';
}
include_once('./_head.php');
$action_url = G5_HTTPS_SHOP_URL.'/personalpayformupdate.php';
@ -39,10 +42,10 @@ $od_id = $pp_id;
$tot_price = $pp['pp_price'];
$goods = $pp['pp_name'].'님 개인결제';
require_once('./settle_kcp.inc.php');
require_once('./settle_'.$default['de_pg_service'].'.inc.php')
// 결제대행사별 코드 include (스크립트 등)
require_once('./kcp/orderform.1.php');
require_once('./'.$default['de_pg_service'].'/orderform.1.php');
?>
<form name="forderform" id="forderform" method="post" action="<?php echo $action_url; ?>" onsubmit="return forderform_check(this);" autocomplete="off">
@ -50,7 +53,7 @@ require_once('./kcp/orderform.1.php');
<?php
// 결제대행사별 코드 include (결제대행사 정보 필드)
require_once('./kcp/orderform.2.php');
require_once('./'.$default['de_pg_service'].'/orderform.2.php');
?>
<section id="sod_frm_pay">
@ -136,7 +139,7 @@ require_once('./kcp/orderform.1.php');
<?php
// 결제대행사별 코드 include (주문버튼)
require_once('./kcp/orderform.3.php');
require_once('./'.$default['de_pg_service'].'/orderform.3.php');
?>
</form>
@ -144,7 +147,7 @@ require_once('./kcp/orderform.1.php');
<?php
if ($default['de_escrow_use']) {
// 결제대행사별 코드 include (에스크로 안내)
require_once('./kcp/orderform.4.php');
require_once('./'.$default['de_pg_service'].'/orderform.4.php');
}
?>
@ -199,6 +202,7 @@ function forderform_check(f)
}
// pay_method 설정
<?php if($default['de_pg_service'] == 'kcp') { ?>
switch(settle_method)
{
case "계좌이체":
@ -217,8 +221,33 @@ function forderform_check(f)
f.pay_method.value = "무통장";
break;
}
<?php } else if($default['de_pg_service'] == 'lg') { ?>
switch(settle_method)
{
case "계좌이체":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0030";
f.LGD_CUSTOM_USABLEPAY.value = "SC0030";
break;
case "가상계좌":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0040";
f.LGD_CUSTOM_USABLEPAY.value = "SC0040";
break;
case "휴대폰":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0060";
f.LGD_CUSTOM_USABLEPAY.value = "SC0060";
break;
case "신용카드":
f.LGD_CUSTOM_FIRSTPAY.value = "SC0010";
f.LGD_CUSTOM_USABLEPAY.value = "SC0010";
break;
default:
f.LGD_CUSTOM_FIRSTPAY.value = "무통장";
break;
}
<?php } ?>
// kcp 결제정보설정
// 결제정보설정
<?php if($default['de_pg_service'] == 'kcp') { ?>
f.buyr_name.value = f.pp_name.value;
f.buyr_mail.value = f.pp_email.value;
f.buyr_tel1.value = f.pp_hp.value;
@ -237,6 +266,19 @@ function forderform_check(f)
} else {
return true;
}
<?php } if($default['de_pg_service'] == 'lg') { ?>
f.LGD_BUYER.value = f.pp_name.value;
f.LGD_BUYEREMAIL.value = f.pp_email.value;
f.LGD_BUYERPHONE.value = f.pp_hp.value;
f.LGD_AMOUNT.value = f.good_mny.value;
f.LGD_TAXFREEAMOUNT.value = 0;
if(f.LGD_CUSTOM_FIRSTPAY.value != "무통장") {
Pay_Request("<?php echo $pp_id; ?>", f.LGD_AMOUNT.value, f.LGD_TIMESTAMP.value);
} else {
f.submit();
}
<?php } ?>
}
</script>
@ -244,5 +286,5 @@ function forderform_check(f)
include_once('./_tail.php');
// 결제대행사별 코드 include (스크립트 실행)
require_once('./kcp/orderform.5.php');
require_once('./'.$default['de_pg_service'].'/orderform.5.php');
?>

View File

@ -1,6 +1,9 @@
<?php
include_once('./_common.php');
if($default['de_pg_service'] == 'lg' && !$_POST['LGD_PAYKEY'])
alert('결제등록 요청 후 주문해 주십시오.');
// 개인결제 정보
$pp_check = false;
$sql = " select * from {$g5['g5_shop_personalpay_table']} where pp_id = '{$_POST['pp_id']}' and pp_use = '1' ";
@ -18,8 +21,15 @@ if($_POST['pp_id'] != get_session('ss_personalpay_id') || $hash_data != get_sess
if ($pp_settle_case == "계좌이체")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bank_name = iconv("cp949", "utf-8", $bank_name);
break;
}
$pp_tno = $tno;
$pp_receipt_price = $amount;
@ -30,9 +40,16 @@ if ($pp_settle_case == "계좌이체")
}
else if ($pp_settle_case == "가상계좌")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$bankname = iconv("cp949", "utf-8", $bankname);
$depositor = iconv("cp949", "utf-8", $depositor);
break;
}
$pp_tno = $tno;
$pp_receipt_price = 0;
@ -42,7 +59,14 @@ else if ($pp_settle_case == "가상계좌")
}
else if ($pp_settle_case == "휴대폰")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
break;
}
$pp_tno = $tno;
$pp_receipt_price = $amount;
@ -52,8 +76,15 @@ else if ($pp_settle_case == "휴대폰")
}
else if ($pp_settle_case == "신용카드")
{
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_result.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
$card_name = iconv("cp949", "utf-8", $card_name);
break;
}
$pp_tno = $tno;
$pp_receipt_price = $amount;
@ -69,14 +100,24 @@ else
// 주문금액과 결제금액이 일치하는지 체크
if((int)$pp['pp_price'] !== (int)$pg_price) {
$cancel_msg = '결제금액 불일치';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("Receipt Amount Error");
}
$pp_pg = $default['de_pg_service'];
// 결제정보 입력
$sql = " update {$g5['g5_shop_personalpay_table']}
set pp_tno = '$pp_tno',
set pp_pg = '$pp_pg',
pp_tno = '$pp_tno',
pp_app_no = '$app_no',
pp_receipt_price = '$pp_receipt_price',
pp_settle_case = '$pp_settle_case',
@ -90,7 +131,14 @@ $result = sql_query($sql, false);
// 결제정보 입력 오류시 결제 취소
if(!$result) {
$cancel_msg = '결제정보 입력 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}");
}
@ -104,6 +152,7 @@ if($pp_receipt_price > 0 && $pp['pp_id'] && $pp['od_id']) {
$sql = " update {$g5['g5_shop_order_table']}
set od_receipt_price = od_receipt_price + '$pp_receipt_price',
od_receipt_time = '$pp_receipt_time',
od_pg = '$pp_pg',
od_tno = '$pp_tno',
od_app_no = '$app_no',
od_escrow = '$od_escrow',
@ -117,7 +166,14 @@ if($pp_receipt_price > 0 && $pp['pp_id'] && $pp['od_id']) {
// 결제정보 입력 오류시 결제 취소
if(!$result) {
$cancel_msg = '결제정보 입력 오류';
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
switch($default['de_pg_service']) {
case 'lg':
include G5_SHOP_PATH.'/lg/xpay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
break;
}
die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}");
}

View File

@ -17,6 +17,15 @@ $settle_case = $pp['pp_settle_case'];
$g5['title'] = '개인결제상세내역';
include_once('./_head.php');
// LG 현금영수증 JS
if($od['od_pg'] == 'lg') {
if($default['de_card_test']) {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr:7085/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
} else {
echo '<script language="JavaScript" src="http://pgweb.uplus.co.kr/WEB_SERVER/js/receipt_link.js"></script>'.PHP_EOL;
}
}
?>
<!-- 주문상세내역 시작 { -->
@ -131,7 +140,16 @@ include_once('./_head.php');
<?php
if($pp['pp_settle_case'] == '휴대폰')
{
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
if($pp['pp_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $pp['pp_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$hp_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$hp_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'mcash_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=500,height=690,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $hp_receipt_script; ?>">영수증 출력</a>
<?php
@ -139,7 +157,16 @@ include_once('./_head.php');
if($pp['pp_settle_case'] == '신용카드')
{
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
if($pp['pp_pg'] == 'lg') {
require_once G5_SHOP_PATH.'/settle_lg.inc.php';
$LGD_TID = $pp['pp_tno'];
$LGD_MERTKEY = $config['cf_lg_mert_key'];
$LGD_HASHDATA = md5($LGD_MID.$LGD_TID.$LGD_MERTKEY);
$card_receipt_script = 'showReceiptByTID(\''.$LGD_MID.'\', \''.$LGD_TID.'\', \''.$LGD_HASHDATA.'\');';
} else {
$card_receipt_script = 'window.open(\''.G5_BILL_RECEIPT_URL.'card_bill&tno='.$pp['pp_tno'].'&order_no='.$pp['pp_id'].'&trade_mony='.$pp['pp_receipt_price'].'\', \'winreceipt\', \'width=470,height=815,scrollbars=yes,resizable=yes\');';
}
?>
<a href="javascript:;" onclick="<?php echo $card_receipt_script; ?>">영수증 출력</a>
<?php
@ -180,8 +207,8 @@ include_once('./_head.php');
</ul>
</section>
<?php if ($misu_price > 0 && $pp['pp_settle_case'] == '가상계좌' && $default['de_card_test'] && $is_admin) {
preg_match("/(\s[^\s]+\s?)/", $pp['pp_bank_account'], $matchs);
<?php if ($pp['pp_settle_case'] == '가상계좌' && $default['de_card_test'] && $is_admin && $pp['pp_pg'] == 'kcp') {
preg_match("/\s{1}([^\s]+)\s?/", $pp['pp_bank_account'], $matchs);
$deposit_no = trim($matchs[1]);
?>
<div class="tbl_frm01 tbl_wrap">

50
shop/settle_lg.inc.php Normal file
View File

@ -0,0 +1,50 @@
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
require_once(G5_LGXPAY_PATH.'/lgdacom/XPayClient.php');
class XPay extends XPayClient
{
public function set_config_value($key, $val)
{
$this->config[$key] = $val;
}
}
/*
* 1. 기본결제 인증요청 정보 변경
*
* 기본정보를 변경하여 주시기 바랍니다.(파라미터 전달시 POST를 사용하세요)
*/
$CST_PLATFORM = $default['de_card_test'] ? 'test' : 'service'; //LG유플러스 결제 서비스 선택(test:테스트, service:서비스)
$CST_MID = 'si_'.$config['cf_lg_mid']; //상점아이디(LG유플러스으로 부터 발급받으신 상점아이디를 입력하세요)
//테스트 아이디는 't'를 반드시 제외하고 입력하세요.
$LGD_MID = (('test' == $CST_PLATFORM) ? 't' : '').$CST_MID; //상점아이디(자동생성)
$LGD_TIMESTAMP = date('YmdHis'); //타임스탬프
$LGD_BUYERIP = $_SERVER['REMOTE_ADDR']; //구매자IP
$LGD_BUYERID = ''; //구매자ID
$LGD_CUSTOM_SKIN = 'red'; //상점정의 결제창 스킨 (red, purple, yellow)
$LGD_WINDOW_VER = '2.5'; //결제창 버젼정보
$LGD_MERTKEY = ''; //상점MertKey(mertkey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실수 있습니다)
// 결제가능 수단
$useablepay = array();
$LGD_CUSTOM_USABLEPAY = '';
if($default['de_iche_use'])
$useablepay[] = 'SC0030';
if($default['de_vbank_use'])
$useablepay[] = 'SC0040';
if($default['de_card_use'])
$useablepay[] = 'SC0010';
if($default['de_hp_use'])
$useablepay[] = 'SC0060';
if(count($useablepay) > 0)
$LGD_CUSTOM_USABLEPAY = implode("-", $useablepay);
$configPath = G5_LGXPAY_PATH.'/lgdacom'; //LG유플러스에서 제공한 환경파일("/conf/lgdacom.conf") 위치 지정.
/*
* 가상계좌(무통장) 결제 연동을 하시는 경우 아래 LGD_CASNOTEURL 을 설정하여 주시기 바랍니다.
*/
$LGD_CASNOTEURL = G5_SHOP_URL.'/settle_lg_common.php';
?>

166
shop/settle_lg_common.php Normal file
View File

@ -0,0 +1,166 @@
<?php
include_once('./_common.php');
/*
* [상점 결제결과처리(DB) 페이지]
*
* 1) 위변조 방지를 위한 hashdata값 검증은 반드시 적용하셔야 합니다.
*
*/
$LGD_RESPCODE = $_POST["LGD_RESPCODE"]; // 응답코드: 0000(성공) 그외 실패
$LGD_RESPMSG = $_POST["LGD_RESPMSG"]; // 응답메세지
$LGD_MID = $_POST["LGD_MID"]; // 상점아이디
$LGD_OID = $_POST["LGD_OID"]; // 주문번호
$LGD_AMOUNT = $_POST["LGD_AMOUNT"]; // 거래금액
$LGD_TID = $_POST["LGD_TID"]; // LG유플러스에서 부여한 거래번호
$LGD_PAYTYPE = $_POST["LGD_PAYTYPE"]; // 결제수단코드
$LGD_PAYDATE = $_POST["LGD_PAYDATE"]; // 거래일시(승인일시/이체일시)
$LGD_HASHDATA = $_POST["LGD_HASHDATA"]; // 해쉬값
$LGD_FINANCECODE = $_POST["LGD_FINANCECODE"]; // 결제기관코드(은행코드)
$LGD_FINANCENAME = $_POST["LGD_FINANCENAME"]; // 결제기관이름(은행이름)
$LGD_ESCROWYN = $_POST["LGD_ESCROWYN"]; // 에스크로 적용여부
$LGD_TIMESTAMP = $_POST["LGD_TIMESTAMP"]; // 타임스탬프
$LGD_ACCOUNTNUM = $_POST["LGD_ACCOUNTNUM"]; // 계좌번호(무통장입금)
$LGD_CASTAMOUNT = $_POST["LGD_CASTAMOUNT"]; // 입금총액(무통장입금)
$LGD_CASCAMOUNT = $_POST["LGD_CASCAMOUNT"]; // 현입금액(무통장입금)
$LGD_CASFLAG = $_POST["LGD_CASFLAG"]; // 무통장입금 플래그(무통장입금) - 'R':계좌할당, 'I':입금, 'C':입금취소
$LGD_CASSEQNO = $_POST["LGD_CASSEQNO"]; // 입금순서(무통장입금)
$LGD_CASHRECEIPTNUM = $_POST["LGD_CASHRECEIPTNUM"]; // 현금영수증 승인번호
$LGD_CASHRECEIPTSELFYN = $_POST["LGD_CASHRECEIPTSELFYN"]; // 현금영수증자진발급제유무 Y: 자진발급제 적용, 그외 : 미적용
$LGD_CASHRECEIPTKIND = $_POST["LGD_CASHRECEIPTKIND"]; // 현금영수증 종류 0: 소득공제용 , 1: 지출증빙용
$LGD_PAYER = $_POST["LGD_PAYER"]; // 입금자명
/*
* 구매정보
*/
$LGD_BUYER = $_POST["LGD_BUYER"]; // 구매자
$LGD_PRODUCTINFO = $_POST["LGD_PRODUCTINFO"]; // 상품명
$LGD_BUYERID = $_POST["LGD_BUYERID"]; // 구매자 ID
$LGD_BUYERADDRESS = $_POST["LGD_BUYERADDRESS"]; // 구매자 주소
$LGD_BUYERPHONE = $_POST["LGD_BUYERPHONE"]; // 구매자 전화번호
$LGD_BUYEREMAIL = $_POST["LGD_BUYEREMAIL"]; // 구매자 이메일
$LGD_BUYERSSN = $_POST["LGD_BUYERSSN"]; // 구매자 주민번호
$LGD_PRODUCTCODE = $_POST["LGD_PRODUCTCODE"]; // 상품코드
$LGD_RECEIVER = $_POST["LGD_RECEIVER"]; // 수취인
$LGD_RECEIVERPHONE = $_POST["LGD_RECEIVERPHONE"]; // 수취인 전화번호
$LGD_DELIVERYINFO = $_POST["LGD_DELIVERYINFO"]; // 배송지
$LGD_MERTKEY = $config['cf_lg_mert_key']; //LG유플러스에서 발급한 상점키로 변경해 주시기 바랍니다.
$LGD_HASHDATA2 = md5($LGD_MID.$LGD_OID.$LGD_AMOUNT.$LGD_RESPCODE.$LGD_TIMESTAMP.$LGD_MERTKEY);
/*
* 상점 처리결과 리턴메세지
*
* OK : 상점 처리결과 성공
* 그외 : 상점 처리결과 실패
*
* ※ 주의사항 : 성공시 'OK' 문자이외의 다른문자열이 포함되면 실패처리 되오니 주의하시기 바랍니다.
*/
$resultMSG = "결제결과 상점 DB처리(LGD_CASNOTEURL) 결과값을 입력해 주시기 바랍니다.";
if ( $LGD_HASHDATA2 == $LGD_HASHDATA ) { //해쉬값 검증이 성공이면
if ( "0000" == $LGD_RESPCODE ){ //결제가 성공이면
if( "R" == $LGD_CASFLAG ) {
/*
* 무통장 할당 성공 결과 상점 처리(DB) 부분
* 상점 결과 처리가 정상이면 "OK"
*/
//if( 무통장 할당 성공 상점처리결과 성공 )
$resultMSG = "OK";
}else if( "I" == $LGD_CASFLAG ) {
/*
* 무통장 입금 성공 결과 상점 처리(DB) 부분
* 상점 결과 처리가 정상이면 "OK"
*/
$sql = " select pp_id, od_id from {$g5['g5_shop_personalpay_table']} where pp_id = '$LGD_OID' and pp_tno = '$LGD_TID' ";
$row = sql_fetch($sql);
if($row['pp_id']) {
// 개인결제 UPDATE
$sql = " update {$g5['g5_shop_personalpay_table']}
set pp_receipt_price = '$LGD_AMOUNT',
pp_receipt_time = '$LGD_PAYDATE'
where pp_id = '$LGD_OID'
and pp_tno = '$LGD_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", $LGD_PAYDATE);
$sql = " update {$g5['g5_shop_order_table']}
set od_receipt_price = od_receipt_price + '$LGD_AMOUNT',
od_receipt_time = '$LGD_PAYDATE',
od_casseqno = '$LGD_CASSEQNO',
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 = '$LGD_AMOUNT',
od_receipt_time = '$LGD_PAYDATE',
od_casseqno = '$LGD_CASSEQNO'
where od_id = '$LGD_OID'
and od_tno = '$LGD_TID' ";
$result = sql_query($sql, FALSE);
}
if($result) {
if($row['od_id'])
$od_id = $row['od_id'];
else
$od_id = $LGD_OID;
// 미수금 정보 업데이트
$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' ";
$result = 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( 무통장 입금 성공 상점처리결과 성공 )
if ($result)
$resultMSG = "OK";
else
$resultMSG = "DB Error";
}else if( "C" == $LGD_CASFLAG ) {
/*
* 무통장 입금취소 성공 결과 상점 처리(DB) 부분
* 상점 결과 처리가 정상이면 "OK"
*/
//if( 무통장 입금취소 성공 상점처리결과 성공 )
$resultMSG = "OK";
}
} else { //결제가 실패이면
/*
* 거래실패 결과 상점 처리(DB) 부분
* 상점결과 처리가 정상이면 "OK"
*/
//if( 결제실패 상점처리결과 성공 )
$resultMSG = "OK";
}
} else { //해쉬값이 검증이 실패이면
/*
* hashdata검증 실패 로그를 처리하시기 바랍니다.
*/
$resultMSG = "결제결과 상점 DB처리(LGD_CASNOTEURL) 해쉬값 검증이 실패하였습니다.";
}
echo $resultMSG;
?>

View File

@ -20,7 +20,12 @@ $amt_svc = 0;
$amt_tax = (int)($amt_tot - $amt_sup);
// 신청폼
include_once(G5_SHOP_PATH.'/kcp/taxsave_form.php');
if($od['od_pg'])
$dir = $od['od_pg'];
else
$dir = $default['de_pg_service'];
include_once(G5_SHOP_PATH.'/'.$dir.'/taxsave_form.php');
include_once(G5_PATH.'/tail.sub.php');
?>

View File

@ -300,6 +300,10 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
$cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';
$cert_type = 'kcp-hp';
break;
case 'lg':
$cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';
$cert_type = 'lg-hp';
break;
default:
echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';
echo 'return false;';