LG Crossplatform 모듈 적용

This commit is contained in:
chicpro
2015-10-01 09:11:58 +09:00
parent e8ae9bc29e
commit ea66722a5e
10 changed files with 206 additions and 111 deletions

View File

@ -1,48 +0,0 @@
<?php
include_once('./_common.php');
// LG유플러스 공통 설정
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);
?>

View File

@ -5,65 +5,60 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use'] || $default['de_card_use'] || $default['de_easy_pay_use']) {
?>
<script language = 'javascript'>
<!--
<script language="javascript" src="<?php echo (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 'https' : 'http'; ?>://xpay.uplus.co.kr/xpay/js/xpay_crossplatform.js" type="text/javascript"></script>
<script type="text/javascript">
/*
* 상점결제 인증요청후 PAYKEY를 받아서 최종결제 요청.
*/
function doPay_ActiveX(){
ret = xpay_check(document.getElementById('forderform'), '<?php echo $CST_PLATFORM; ?>');
* 수정불가.
*/
var LGD_window_type = "<?php echo $LGD_WINDOW_TYPE; ?>";
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유플러스 전자결제를 위한 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)
{
/*
* 수정불가
*/
function launchCrossPlatform(frm) {
$.ajax({
url: "<?php echo G5_SHOP_URL; ?>/lg/makehashdata.php",
url: g5_url+"/shop/lg/xpay_request.php",
type: "POST",
data: $("#LGD_PAYREQUEST input").serialize(),
dataType: "json",
async: false,
cache: false,
dataType: "html",
data: { LGD_OID : od_id, LGD_AMOUNT : amount, LGD_TIMESTAMP : timestamp },
success: function(data) {
$("#LGD_HASHDATA").val(data);
frm.LGD_HASHDATA.value = data.LGD_HASHDATA;
doPay_ActiveX();
lgdwin = openXpay(frm, '<?php echo $CST_PLATFORM; ?>', LGD_window_type, null, "", "");
},
error: function(data) {
console.log(data);
}
});
}
/*
* FORM 명만 수정 가능
*/
function getFormObject() {
return document.getElementById("forderform");
}
//-->
/*
* 인증결과 처리
*/
function payment_return() {
var fDoc;
fDoc = lgdwin.contentWindow || lgdwin.contentDocument;
if (fDoc.document.getElementById('LGD_RESPCODE').value == "0000") {
document.getElementById("LGD_PAYKEY").value = fDoc.document.getElementById('LGD_PAYKEY').value;
document.getElementById("forderform").target = "_self";
document.getElementById("forderform").action = "<?php echo $order_action_url; ?>";
document.getElementById("forderform").submit();
} else {
alert("LGD_RESPCODE (결과코드) : " + fDoc.document.getElementById('LGD_RESPCODE').value + "\n" + "LGD_RESPMSG (결과메시지): " + fDoc.document.getElementById('LGD_RESPMSG').value);
closeIframe();
}
}
</script>
<div id="LGD_ACTIVEX_DIV"></div> <!-- ActiveX 설치 안내 Layer 입니다. 수정하지 마세요. -->
<?php } ?>

View File

@ -4,6 +4,7 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$LGD_CUSTOM_PROCESSTYPE = 'TWOTR';
?>
<div id="LGD_PAYREQUEST">
<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; ?>"> <!-- 상점아이디 -->
@ -19,7 +20,7 @@ $LGD_CUSTOM_PROCESSTYPE = 'TWOTR';
<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_VERSION" id="LGD_VERSION" value="<?php echo $LGD_VERSION; ?>"> <!-- 버전정보 (삭제하지 마세요) -->
<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 -->
@ -41,6 +42,11 @@ $LGD_CUSTOM_PROCESSTYPE = 'TWOTR';
<!-- 가상계좌(무통장) 결제연동을 하시는 경우 할당/입금 결과를 통보받기 위해 반드시 LGD_CASNOTEURL 정보를 LG 유플러스에 전송해야 합니다 . -->
<input type="hidden" name="LGD_CASNOTEURL" id="LGD_CASNOTEURL" value="<?php echo $LGD_CASNOTEURL ?>"> <!-- 가상계좌 NOTEURL -->
<input type="hidden" name="LGD_RETURNURL" id="LGD_RETURNURL" value="<?php echo $LGD_RETURNURL; ?>"> <!-- 응답수신페이지 -->
<input type="hidden" name="LGD_ENCODING" id="LGD_ENCODING" value="UTF-8">
<input type="hidden" name="LGD_ENCODING_RETURNURL" id="LGD_ENCODING_RETURNURL" value="UTF-8">
<?php /* 주문폼 자바스크립트 에러 방지를 위해 추가함 */ ?>
<input type="hidden" name="good_mny" value="<?php echo $tot_price; ?>">
<?php
@ -51,4 +57,5 @@ if($default['de_tax_flag_use']) {
<input type="hidden" name="comm_free_mny" value="<?php echo $comm_free_mny; ?>"> <!-- 비과세 금액 -->
<?php
}
?>
?>
</div>

View File

@ -11,11 +11,6 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
<span>주문완료 중입니다. 잠시만 기다려 주십시오.</span>
</div>
<?php
// 무통장 입금만 사용할 때는 주문하기 버튼 보이게
if(!($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use'] || $default['de_card_use'] || $default['de_easy_pay_use'])) {
?>
<script>
document.getElementById("display_pay_button").style.display = "" ;
</script>
<?php } ?>

View File

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

54
shop/lg/returnurl.php Normal file
View File

@ -0,0 +1,54 @@
<?php
include_once('./_common.php');
/*
payreq_crossplatform 에서 세션에 저장했던 파라미터 값이 유효한지 체크
세션 유지 시간(로그인 유지시간)을 적당히 유지 하거나 세션을 사용하지 않는 경우 DB처리 하시기 바랍니다.
*/
if(!isset($_SESSION['PAYREQ_MAP'])){
echo '세션이 만료 되었거나 유효하지 않은 요청 입니다.';
return;
}
$payReqMap = $_SESSION['PAYREQ_MAP'];//결제 요청시, Session에 저장했던 파라미터 MAP
?>
<html>
<head>
<script type="text/javascript">
function setLGDResult() {
parent.payment_return();
try {
} catch (e) {
alert(e.message);
}
}
</script>
</head>
<body onload="setLGDResult()">
<?php
$LGD_RESPCODE = $_POST['LGD_RESPCODE'];
$LGD_RESPMSG = $_POST['LGD_RESPMSG'];
$LGD_PAYKEY = '';
$payReqMap['LGD_RESPCODE'] = $LGD_RESPCODE;
$payReqMap['LGD_RESPMSG'] = $LGD_RESPMSG;
if($LGD_RESPCODE == "0000"){
$LGD_PAYKEY = $_POST['LGD_PAYKEY'];
$payReqMap['LGD_PAYKEY'] = $LGD_PAYKEY;
}
else{
echo "LGD_RESPCODE:" + $LGD_RESPCODE + " ,LGD_RESPMSG:" + $LGD_RESPMSG; //인증 실패에 대한 처리 로직 추가
}
?>
<form method="post" name="LGD_RETURNINFO" id="LGD_RETURNINFO">
<?php
foreach ($payReqMap as $key => $value) {
echo "<input type='hidden' name='$key' id='$key' value='$value'>";
}
?>
</form>
</body>
</html>

92
shop/lg/xpay_request.php Normal file
View File

@ -0,0 +1,92 @@
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/json.lib.php');
// LG유플러스 공통 설정
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']; //타임스탬프
$LGD_BUYER = $_POST['LGD_BUYER']; //구매자명
$LGD_PRODUCTINFO = $_POST['LGD_PRODUCTINFO']; //상품명
$LGD_BUYEREMAIL = $_POST['LGD_BUYEREMAIL']; //구매자 이메일
$LGD_CUSTOM_FIRSTPAY = $_POST['LGD_CUSTOM_FIRSTPAY']; //상점정의 초기결제수단
$LGD_CUSTOM_SKIN = 'red'; //상점정의 결제창 스킨
$LGD_CUSTOM_USABLEPAY = $_POST['LGD_CUSTOM_USABLEPAY']; //디폴트 결제수단 (해당 필드를 보내지 않으면 결제수단 선택 UI 가 노출됩니다.)
$LGD_WINDOW_VER = '2.5'; //결제창 버젼정보
$LGD_WINDOW_TYPE = $LGD_WINDOW_TYPE; //결제창 호출방식 (수정불가)
$LGD_CUSTOM_SWITCHINGTYPE = $LGD_CUSTOM_SWITCHINGTYPE; //신용카드 카드사 인증 페이지 연동 방식 (수정불가)
$LGD_CUSTOM_PROCESSTYPE = 'TWOTR'; //수정불가
/*
*************************************************
* 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
*************************************************
*/
$payReqMap['CST_PLATFORM'] = $CST_PLATFORM; // 테스트, 서비스 구분
$payReqMap['LGD_WINDOW_TYPE'] = $LGD_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'] = $LGD_VERSION; // 버전정보 (삭제하지 마세요)
$payReqMap['LGD_CUSTOM_USABLEPAY'] = $LGD_CUSTOM_USABLEPAY; // 디폴트 결제수단
$payReqMap['LGD_CUSTOM_SWITCHINGTYPE'] = $LGD_CUSTOM_SWITCHINGTYPE; // 신용카드 카드사 인증 페이지 연동 방식
$payReqMap['LGD_WINDOW_VER'] = $LGD_WINDOW_VER;
$payReqMap['LGD_ENCODING'] = 'UTF-8';
$payReqMap['LGD_ENCODING_RETURNURL'] = 'UTF-8';
// 가상계좌(무통장) 결제연동을 하시는 경우 할당/입금 결과를 통보받기 위해 반드시 LGD_CASNOTEURL 정보를 LG 유플러스에 전송해야 합니다 .
$payReqMap['LGD_CASNOTEURL'] = $LGD_CASNOTEURL; // 가상계좌 NOTEURL
//Return URL에서 인증 결과 수신 시 셋팅될 파라미터 입니다.*/
$payReqMap['LGD_RESPCODE'] = '';
$payReqMap['LGD_RESPMSG'] = '';
$payReqMap['LGD_PAYKEY'] = '';
$_SESSION['PAYREQ_MAP'] = $payReqMap;
die(json_encode(array('LGD_HASHDATA' => $LGD_HASHDATA, 'error' => '')));
?>

View File

@ -34,7 +34,7 @@ if(!$is_mobile_order) {
if($default['de_iche_use'] || $default['de_vbank_use'] || $default['de_hp_use'] || $default['de_card_use'] || $default['de_easy_pay_use']) {
switch($default['de_pg_service']) {
case 'lg':
$g5['body_script'] = ' onload="isActiveXOK();"';
$g5['body_script'] = '';
break;
case 'inicis':
$g5['body_script'] = ' onload="javascript:enable_click()"';

View File

@ -1432,7 +1432,7 @@ function forderform_check(f)
<?php } ?>
if(f.LGD_CUSTOM_FIRSTPAY.value != "무통장") {
Pay_Request("<?php echo $od_id; ?>", f.LGD_AMOUNT.value, f.LGD_TIMESTAMP.value);
launchCrossPlatform(f);
} else {
f.submit();
}

View File

@ -26,6 +26,10 @@ $LGD_BUYERID = ''; //
$LGD_CUSTOM_SKIN = 'red'; //상점정의 결제창 스킨 (red, purple, yellow)
$LGD_WINDOW_VER = '2.5'; //결제창 버젼정보
$LGD_MERTKEY = ''; //상점MertKey(mertkey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실수 있습니다)
$LGD_WINDOW_TYPE = 'iframe'; //결제창 호출 방식
$LGD_CUSTOM_SWITCHINGTYPE = 'IFRAME'; //신용카드 카드사 인증 페이지 연동 방식
$LGD_RETURNURL = G5_SHOP_URL.'/lg/returnurl.php'; //LGD_RETURNURL 을 설정하여 주시기 바랍니다. 반드시 현재 페이지와 동일한 프로트콜 및 호스트이어야 합니다. 아래 부분을 반드시 수정하십시요.
$LGD_VERSION = 'PHP_Non-ActiveX_Standard'; // 버전정보 (삭제하지 마세요)
// 결제가능 수단
$useablepay = array();