PC 카카오페이 추가
This commit is contained in:
141
shop/kakaopay/getTxnId.php
Normal file
141
shop/kakaopay/getTxnId.php
Normal file
@ -0,0 +1,141 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/json.lib.php');
|
||||
|
||||
/**
|
||||
* 2014.12.02 : 인증요청 송신 전문 외 항목 제거
|
||||
*/
|
||||
|
||||
include(G5_SHOP_PATH.'/kakaopay/incKakaopayCommon.php');
|
||||
include(G5_SHOP_PATH.'/kakaopay/lgcns_KMpay.php');
|
||||
|
||||
function KMPayRequest($key) {
|
||||
return (isset($_REQUEST[$key])?$_REQUEST[$key]:"");
|
||||
}
|
||||
|
||||
// 로그 저장 위치 지정
|
||||
$kmFunc = new kmpayFunc($LogDir);
|
||||
$kmFunc->setPhpVersion($phpVersion);
|
||||
|
||||
// TXN_ID를 요청하기 위한 PARAMETERR
|
||||
$REQUESTDEALAPPROVEURL = KMPayRequest("requestDealApproveUrl"); //인증 요청 경로
|
||||
$PR_TYPE = KMPayRequest("prType"); //결제 요청 타입
|
||||
$MERCHANT_ID = KMPayRequest("MID"); //가맹점 ID
|
||||
$MERCHANT_TXN_NUM = KMPayRequest("merchantTxnNum"); //가맹점 거래번호
|
||||
$channelType = KMPayRequest("channelType");
|
||||
$PRODUCT_NAME = KMPayRequest("GoodsName"); //상품명
|
||||
$AMOUNT = KMPayRequest("Amt"); //상품금액(총거래금액) (총거래금액 = 공급가액 + 부가세 + 봉사료)
|
||||
|
||||
$CURRENCY = KMPayRequest("currency"); //거래통화(KRW/USD/JPY 등)
|
||||
$RETURN_URL = KMPayRequest("returnUrl"); //결제승인결과전송URL
|
||||
$CERTIFIED_FLAG = KMPayRequest("CERTIFIED_FLAG"); //가맹점 인증 구분값 ("N","NC")
|
||||
|
||||
$OFFER_PERIOD_FLAG = KMPayRequest("OFFER_PERIOD_FLAG"); //상품제공기간 플래그
|
||||
$OFFER_PERIOD = KMPayRequest("OFFER_PERIOD"); //상품제공기간
|
||||
|
||||
|
||||
//무이자옵션
|
||||
$NOINTYN = KMPayRequest("noIntYN"); //무이자 설정
|
||||
$NOINTOPT = KMPayRequest("noIntOpt"); //무이자 옵션
|
||||
$MAX_INT =KMPayRequest("maxInt"); //최대할부개월
|
||||
$FIXEDINT = KMPayRequest("fixedInt"); //고정할부개월
|
||||
$POINT_USE_YN = KMPayRequest("pointUseYn"); //카드사포인트사용여부
|
||||
$POSSICARD = KMPayRequest("possiCard"); //결제가능카드설정
|
||||
$BLOCK_CARD = KMPayRequest("blockCard"); //금지카드설정
|
||||
|
||||
// ENC KEY와 HASH KEY는 가맹점에서 생성한 KEY 로 SETTING 한다.
|
||||
$merchantEncKey = KMPayRequest("merchantEncKey");
|
||||
$merchantHashKey = KMPayRequest("merchantHashKey");
|
||||
$hashTarget = $MERCHANT_ID.$MERCHANT_TXN_NUM.str_pad($AMOUNT,7,"0",STR_PAD_LEFT);
|
||||
|
||||
// payHash 생성
|
||||
$payHash = strtoupper(hash("sha256", $hashTarget.$merchantHashKey, false));
|
||||
|
||||
//json string 생성
|
||||
$strJsonString = new JsonString($LogDir);
|
||||
|
||||
$strJsonString->setValue("PR_TYPE", $PR_TYPE);
|
||||
$strJsonString->setValue("channelType", $channelType);
|
||||
$strJsonString->setValue("MERCHANT_ID", $MERCHANT_ID);
|
||||
$strJsonString->setValue("MERCHANT_TXN_NUM", $MERCHANT_TXN_NUM);
|
||||
$strJsonString->setValue("PRODUCT_NAME", $PRODUCT_NAME);
|
||||
|
||||
$strJsonString->setValue("AMOUNT", $AMOUNT);
|
||||
|
||||
$strJsonString->setValue("CURRENCY", $CURRENCY);
|
||||
$strJsonString->setValue("CERTIFIED_FLAG", $CERTIFIED_FLAG);
|
||||
|
||||
$strJsonString->setValue("OFFER_PERIOD_FLAG", $OFFER_PERIOD_FLAG);
|
||||
$strJsonString->setValue("OFFER_PERIOD", $OFFER_PERIOD);
|
||||
|
||||
$strJsonString->setValue("NO_INT_YN", $NOINTYN);
|
||||
$strJsonString->setValue("NO_INT_OPT", $NOINTOPT);
|
||||
$strJsonString->setValue("MAX_INT", $MAX_INT);
|
||||
$strJsonString->setValue("FIXED_INT", $FIXEDINT);
|
||||
|
||||
$strJsonString->setValue("POINT_USE_YN", $POINT_USE_YN);
|
||||
$strJsonString->setValue("POSSI_CARD", $POSSICARD);
|
||||
$strJsonString->setValue("BLOCK_CARD", $BLOCK_CARD);
|
||||
|
||||
$strJsonString->setValue("PAYMENT_HASH", $payHash);
|
||||
|
||||
// 결과값을 담는 부분
|
||||
$resultCode = "";
|
||||
$resultMsg = "";
|
||||
$txnId = "";
|
||||
$merchantTxnNum = "";
|
||||
$prDt = "";
|
||||
$strValid = "";
|
||||
|
||||
// Data 검증
|
||||
$dataValidator = new KMPayDataValidator($strJsonString->getArrayValue());
|
||||
$strValid = $dataValidator->resultValid;
|
||||
if (strlen($strValid) > 0) {
|
||||
$arrVal = explode(",", $strValid);
|
||||
if (count($arrVal) == 3) {
|
||||
$resultCode = $arrVal[1];
|
||||
$resultMsg = $arrVal[2];
|
||||
} else {
|
||||
$resultCode = $strValid;
|
||||
$resultMsg = $strValid;
|
||||
}
|
||||
}
|
||||
|
||||
// Data에 이상 없는 경우
|
||||
if (strlen($strValid) == 0) {
|
||||
// CBC 암호화
|
||||
$paramStr = $strJsonString->getJsonString();
|
||||
$kmFunc->writeLog("Request");
|
||||
$kmFunc->writeLog($paramStr);
|
||||
$kmFunc->writeLog($strJsonString->getArrayValue());
|
||||
$encryptStr = $kmFunc->parameterEncrypt($merchantEncKey, $paramStr);
|
||||
$payReqResult = $kmFunc->connMPayDLP($REQUESTDEALAPPROVEURL, $MERCHANT_ID, $encryptStr);
|
||||
$resultString = $kmFunc->parameterDecrypt($merchantEncKey, $payReqResult);
|
||||
|
||||
$resultJSONObject = new JsonString($LogDir);
|
||||
if (substr($resultString, 0, 1) == "{") {
|
||||
$resultJSONObject->setJsonString($resultString);
|
||||
$resultCode = $resultJSONObject->getValue("RESULT_CODE");
|
||||
$resultMsg = $resultJSONObject->getValue("RESULT_MSG");
|
||||
if ($resultCode == "00") {
|
||||
$txnId = $resultJSONObject->getValue("TXN_ID");
|
||||
$merchantTxnNum = $resultJSONObject->getValue("MERCHANT_TXN_NUM");
|
||||
$prDt = $resultJSONObject->getValue("PR_DT");
|
||||
}
|
||||
}
|
||||
$kmFunc->writeLog("Result");
|
||||
$kmFunc->writeLog($resultString);
|
||||
$kmFunc->writeLog($resultJSONObject->getArrayValue());
|
||||
}
|
||||
|
||||
$result = array();
|
||||
|
||||
$result = array(
|
||||
'resultCode' => $resultCode,
|
||||
'resultMsg' => $resultMsg,
|
||||
'txnId' => $txnId,
|
||||
'prDt' => $prDt
|
||||
);
|
||||
|
||||
die(json_encode($result));
|
||||
?>
|
||||
Reference in New Issue
Block a user