Files
firstgarden-web-gnu/plugin/lgxpay/AuthOnlyRes.php

225 lines
8.5 KiB
PHP

<?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>";
if( G5_IS_MOBILE ){
echo '<script>'.PHP_EOL;
echo 'window.parent.$("#cert_info").css("display", "");'.PHP_EOL;
echo 'window.parent.$("#lgu_cert" ).css("display", "none");'.PHP_EOL;
echo 'alert("인증요청이 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg().'")';
echo '</script>'.PHP_EOL;
} else {
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>";
*/
if( G5_IS_MOBILE ){
echo '<script>'.PHP_EOL;
echo 'window.parent.$("#cert_info").css("display", "");'.PHP_EOL;
echo 'window.parent.$("#lgu_cert" ).css("display", "none");'.PHP_EOL;
echo 'alert("인증요청이 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg().'")';
echo '</script>'.PHP_EOL;
} else {
alert_close('인증요청이 실패하였습니다.\\n\\n코드 : '.$xpay->Response_Code().' '.$xpay->Response_Msg());
}
exit;
}
?>
<script>
jQuery(function($) {
var $opener = window.opener;
var is_mobile = false;
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
$opener = window.parent;
is_mobile = true;
} else {
$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; ?>");
if(is_mobile) {
$opener.$("#cert_info").css("display", "");
$opener.$("#lgu_cert" ).css("display", "none");
}
alert("본인의 휴대폰번호로 확인 되었습니다.");
window.close();
});
</script>
<?php
include_once(G5_PATH.'/tail.sub.php');
?>