카카오페이 (KG 이니시스) 결제모듈 수정

This commit is contained in:
thisgun
2020-07-01 11:29:15 +09:00
parent b893b9f236
commit f2516c586e
25 changed files with 1112 additions and 1345 deletions

View File

@ -1,39 +1,87 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once(G5_SHOP_PATH.'/kakaopay/incKakaopayCommon.php');
include_once(G5_SHOP_PATH.'/kakaopay/lgcns_CNSpay.php');
/*******************************************************************
* 7. DB연동 실패 시 강제취소 *
* *
* 지불 결과를 DB 등에 저장하거나 기타 작업을 수행하다가 실패하는 *
* 경우, 아래의 코드를 참조하여 이미 지불된 거래를 취소하는 코드를 *
* 작성합니다. *
*******************************************************************/
// 로그 저장 위치 지정
$connector = new CnsPayWebConnector($LogDir);
$connector->CnsActionUrl($CnsPayDealRequestUrl);
$connector->CnsPayVersion($phpVersion);
$connector->setRequestData($_REQUEST);
$connector->addRequestData("actionType", "CL0");
$connector->addRequestData("CancelPwd", $cancelPwd);
$connector->addRequestData("CancelIP", $_SERVER['REMOTE_ADDR']);
$cancelFlag = "true";
//가맹점키 셋팅 (MID 별로 틀림)
$connector->addRequestData("EncodeKey", $merchantKey);
// $cancelFlag를 "true"로 변경하는 condition 판단은 개별적으로
// 수행하여 주십시오.
// 4. CNSPAY Lite 서버 접속하여 처리
$connector->requestAction();
if($cancelFlag == "true")
{
// 5. 결과 처리
$resultCode = $connector->getResultData("ResultCode"); // 결과코드 (정상 :2001(취소성공), 2002(취소진행중), 그 외 에러)
$resultMsg = $connector->getResultData("ResultMsg"); // 결과메시지
$cancelAmt = $connector->getResultData("CancelAmt"); // 취소금액
$cancelDate = $connector->getResultData("CancelDate"); // 취소일
$cancelTime = $connector->getResultData("CancelTime"); // 취소시간
$payMethod = $connector->getResultData("PayMethod"); // 취소 결제수단
$mid = $connector->getResultData("MID"); // 가맹점 ID
$tid = $connector->getResultData("TID"); // TID
$errorCD = $connector->getResultData("ErrorCD"); // 상세 에러코드
$errorMsg = $connector->getResultData("ErrorMsg"); // 상세 에러메시지
$authDate = $cancelDate . $cancelTime; // 거래시간
$ccPartCl = $connector->getResultData("CcPartCl"); // 부분취소 가능여부 (0:부분취소불가, 1:부분취소가능)
$stateCD = $connector->getResultData("StateCD"); // 거래상태코드 (0: 승인, 1:전취소, 2:후취소)
$authDate = $connector->makeDateString($authDate);
$errorMsg = iconv("euc-kr", "utf-8", $errorMsg);
$resultMsg = iconv("euc-kr", "utf-8", $resultMsg);
if( isset($is_noti_pay) && $is_noti_pay ){
return;
}
include_once(G5_SHOP_PATH.'/settle_kakaopay.inc.php');
if( get_session('ss_order_id') && $tno ){
$ini_oid = preg_replace('/[^a-z0-9_\-]/i', '', get_session('ss_order_id'));
$tno = preg_replace('/[^a-z0-9_\-]/i', '', $tno);
$sql = "select oid from {$g5['g5_shop_inicis_log_table']} where oid = '$ini_oid' and P_TID = '$tno' ";
$exists_log = sql_fetch($sql);
if( $exists_log['oid'] ){
$sql = " update {$g5['g5_shop_inicis_log_table']}
set P_STATUS = 'cancel',
P_AUTH_DT = '".preg_replace('/[^0-9]/', '', G5_TIME_YMDHIS)."' where oid = '$ini_oid' and P_TID = '$tno' ";
} else {
$sql = " insert into {$g5['g5_shop_inicis_log_table']}
set oid = '$ini_oid',
P_TID = '$tno',
P_STATUS = 'cancel',
P_AUTH_DT = '".preg_replace('/[^0-9]/', '', G5_TIME_YMDHIS)."' ";
}
sql_query($sql, false);
}
$db_check = 1;
$cancel_msg = "DB FAIL";
if( $is_admin ){
$tmp = sql_fetch("select * from `{$g5['g5_shop_order_table']}` where od_tno = '".trim($_REQUEST['TID'])."' ");
if( $tmp['od_pg'] === 'KAKAOPAY' ){
$tno = trim($_REQUEST['TID']);
$db_check = 0;
$cancel_msg = isset($_REQUEST['CancelMsg']) ? iconv_euckr($_REQUEST['CancelMsg']) : iconv_euckr('관리자 승인 취소');
}
}
$TID = $tno;
$inipay->SetField("type", "cancel"); // 고정
if( $default['de_kakaopay_cancelpwd'] ){
$inipay->SetField("mid", $default['de_kakaopay_mid']);
$inipay->SetField("admin", $default['de_kakaopay_cancelpwd']);
}
$inipay->SetField("tid", $TID); // 고정
$inipay->SetField("cancelmsg", $cancel_msg); // 취소사유
$inipay->startAction();
if($inipay->GetResult('ResultCode') == "00" && $db_check)
{
$inipay->MakeTXErrMsg(MERCHANT_DB_ERR,"Merchant DB FAIL");
}
$res_cd = $inipay->getResult('ResultCode');
$res_msg = $inipay->getResult('ResultMsg');
if($res_cd != '00') {
$pg_res_cd = $res_cd;
$pg_res_msg = iconv_utf8($res_msg);
}
}
?>