Files
firstgarden-web-gnu/shop/kakaopay/getTxnId.php
2015-09-21 17:28:35 +09:00

155 lines
6.0 KiB
PHP

<?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"); //금지카드설정
// 복합과세
if($default['de_tax_flag_use']) {
$SUPPLY_AMT = KMPayRequest("SupplyAmt"); // 공급가액
$GOODS_VAT = KMPayRequest("GoodsVat"); // 부가가치세
$SERVICE_AMT = KMPayRequest("ServiceAmt"); // 봉사료
}
// 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);
// 복합과세
if($default['de_tax_flag_use']) {
$strJsonString->setValue("SUPPLY_AMT", $SUPPLY_AMT);
$strJsonString->setValue("GOODS_VAT", $GOODS_VAT);
$strJsonString->setValue("SERVICE_AMT", $SERVICE_AMT);
}
$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));
?>