카카오페이 모바일 결제 추가

This commit is contained in:
chicpro
2015-09-16 10:44:36 +09:00
parent 3562596484
commit bce9370deb
10 changed files with 183 additions and 38 deletions

View File

@ -0,0 +1,39 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once(G5_SHOP_PATH.'/kakaopay/incKakaopayCommon.php');
include_once(G5_SHOP_PATH.'/kakaopay/lgcns_CNSpay.php');
// 로그 저장 위치 지정
$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']);
//가맹점키 셋팅 (MID 별로 틀림)
$connector->addRequestData("EncodeKey", $merchantKey);
// 4. CNSPAY Lite 서버 접속하여 처리
$connector->requestAction();
// 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);
?>

View File

@ -1,8 +1,8 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include(G5_SHOP_PATH.'/kakaopay/incKakaopayCommon.php');
include(G5_SHOP_PATH.'/kakaopay/lgcns_CNSpay.php');
include_once(G5_SHOP_PATH.'/kakaopay/incKakaopayCommon.php');
include_once(G5_SHOP_PATH.'/kakaopay/lgcns_CNSpay.php');
// 로그 저장 위치 지정
$connector = new CnsPayWebConnector($LogDir);

View File

@ -28,6 +28,9 @@
public function setRequestData($request) {
try {
foreach (array_keys($request) as $key) {
if(is_array($request[$key]))
continue;
$this->requestData[$key] = iconv("UTF-8", "EUC-KR", $request[$key]);
}
return "_TRUE_";
@ -62,7 +65,7 @@
return "_FAIL_";
}
}
// 2014.12.02 추가 (check key in array)
private function getRequestData($key) {
if (array_key_exists($key, $this->requestData)) {
@ -71,7 +74,7 @@
return "";
}
}
public function requestAction() {
$encodeKey = $this->requestData["EncodeKey"];
unset($this->requestData["EncodeKey"]);
@ -92,7 +95,7 @@
$requestMessage = $this->makeRequestText($this->requestData);
$resultMessage = $this->connectToServer($serviceUrl, $requestMessage);
$this->writeLog("Result");
// 2014.12.02 수신 전문 로깅 처리 제외
// 2014.12.02 수신 전문 로깅 처리 제외
//$this->writeLog($resultMessage);
if ($resultMessage == "_FAIL_" || substr($resultMessage, 0, 4) == "FAIL") {
$resultCode = "";
@ -124,7 +127,7 @@
return "_FAIL_";
}
}
// 2014.12.02 결과 배열 마스킹
private function resultDataMask($strLogText) {
$arrMask = array();
@ -138,14 +141,14 @@
return str_replace("\n", "", trim($strLogText));
}
}
// 2014.12.02 주요 정보 마스킹
private function requestMask ($name, $text) {
$value = str_replace("\n", "", trim($text));
if ($value == null || strlen(trim($value)) == 0) return "";
if ($name == "X_CARDNO" || $name == "realPan" || $name == "cardNo"
if ($name == "X_CARDNO" || $name == "realPan" || $name == "cardNo"
|| $name == "CardBin" || $name == "CardNo") {
return $this->masking($value, 6, true, false);
} else if ($name == "BuyerName" || $name == "buyerName") {
@ -164,20 +167,20 @@
return $value;
}
}
// 2014.12.02 마스킹 처리
private function masking($string, $num, $isLeftOrder, $beginMasking) {
if ( $string == null )
return "";
$res = "";
$res2 = "";
$sleng = 0;
$str = iconv('euc-kr','utf-8',$string);
$n = mb_strlen($str, 'utf-8');
if ( $num >= 1 ) {
if ( $n < $num ) {
$res = $str;
@ -205,10 +208,10 @@
} else {
$res = $str;
}
return iconv('utf-8','euc-kr',$res);
}
private function requestNetCancel() {
try {
// 예기치 못한 오류인경우 망상취소 시도.
@ -441,10 +444,10 @@
return "_FAIL_";
}
}
public function makeHashInputString($salt) {
$result = "";
for($count = 0;$count < strlen($salt)/2;$count++) {
@ -452,14 +455,14 @@
$temp1 = hexdec($temp0);
$temp3 = reset(unpack("l", pack("l", $temp1 +0xffffff00)));
$temp4 = pack('C*', $temp3);
$result = $result.$temp4;
}
return $result;
}
}
?>

View File

@ -13,13 +13,13 @@ if($is_kakaopay_use) {
<input type="hidden" name="GoodsCnt" value="<?php echo ($goods_count + 1); ?>">
<input type="hidden" name="BuyerEmail" value="">
<input type="hidden" name="BuyerName" value="">
<input type="hidden" name="prType" value="WPM">
<input type="hidden" name="prType" value="<?php echo (is_mobile() ? 'MPM' : 'WPM'); ?>">
<input type="hidden" name="channelType" value="4">
<input type="hidden" name="TransType" value="0">
<input type="hidden" name="resultCode" value="" id="resultCode">
<input type="hidden" name="resultMsg" value="" id="resultMsg">
<input type="hidden" name="txnId" value="" id="txnId">
<input type="hidden" name="prDt" value=""id="prDt">
<input type="hidden" name="prDt" value="" id="prDt">
<input type="hidden" name="SPU" value="">
<input type="hidden" name="SPU_SIGN_TOKEN" value="">
<input type="hidden" name="MPAY_PUB" value="">

View File

@ -439,6 +439,11 @@ if($tno) {
include G5_SHOP_PATH.'/inicis/inipay_cancel.php';
break;
case 'KAKAOPAY':
$_REQUEST['TID'] = $tno;
$_REQUEST['Amt'] = $amount;
$_REQUEST['CancelMsg'] = $cancel_msg;
$_REQUEST['PartialCancelCode'] = 0;
include G5_SHOP_PATH.'/kakaopay/kakaopay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
@ -559,6 +564,11 @@ if(!$result) {
include G5_SHOP_PATH.'/inicis/inipay_cancel.php';
break;
case 'KAKAOPAY':
$_REQUEST['TID'] = $tno;
$_REQUEST['Amt'] = $amount;
$_REQUEST['CancelMsg'] = $cancel_msg;
$_REQUEST['PartialCancelCode'] = 0;
include G5_SHOP_PATH.'/kakaopay/kakaopay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';
@ -600,6 +610,11 @@ if(!$result) {
include G5_SHOP_PATH.'/inicis/inipay_cancel.php';
break;
case 'KAKAOPAY':
$_REQUEST['TID'] = $tno;
$_REQUEST['Amt'] = $amount;
$_REQUEST['CancelMsg'] = $cancel_msg;
$_REQUEST['PartialCancelCode'] = 0;
include G5_SHOP_PATH.'/kakaopay/kakaopay_cancel.php';
break;
default:
include G5_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php';

View File

@ -257,7 +257,7 @@ if($od['od_pg'] == 'lg') {
$app_no_subj = '';
$disp_bank = true;
$disp_receipt = false;
if($od['od_settle_case'] == '신용카드') {
if($od['od_settle_case'] == '신용카드' || $od['od_settle_case'] == 'KAKAOPAY') {
$app_no_subj = '승인번호';
$app_no = $od['od_app_no'];
$disp_bank = false;
@ -396,6 +396,14 @@ if($od['od_pg'] == 'lg') {
<a href="javascript:;" onclick="<?php echo $card_receipt_script; ?>">영수증 출력</a>
<?php
}
if($od['od_settle_case'] == 'KAKAOPAY')
{
$card_receipt_script = 'window.open(\'https://mms.cnspay.co.kr/trans/retrieveIssueLoader.do?TID='.$od['od_tno'].'&type=0\', \'popupIssue\', \'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=420,height=540\');';
?>
<a href="javascript:;" onclick="<?php echo $card_receipt_script; ?>">영수증 출력</a>
<?php
}
?>
<td>
</td>