키움결제 테스트
This commit is contained in:
446
src/main/webapp/WEB-INF/views/sopmal/ordr/PayKiwoomPayC.jsp
Normal file
446
src/main/webapp/WEB-INF/views/sopmal/ordr/PayKiwoomPayC.jsp
Normal file
@@ -0,0 +1,446 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
||||
|
||||
<%--
|
||||
Class Name : PayKiwoomPayC.jsp
|
||||
Description : 키움 결제창
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2026-03-18 이경숙 최초 생성
|
||||
--%>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>통합LINK(보안 결제 창)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||
<meta http-equiv="Expires" content="-1" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
|
||||
<style type="text/css">
|
||||
</style>
|
||||
<script type="text/javascript" language="javascript">
|
||||
var pf;
|
||||
|
||||
function init() {
|
||||
//alert(navigator.userAgent);
|
||||
pf = document.payForm;
|
||||
pf.ORDERNO.value = getTimeStamp();
|
||||
}
|
||||
|
||||
function pay() {
|
||||
pf = document.payForm;
|
||||
|
||||
// 입력값 가져오기
|
||||
var CPID = pf.CPID.value;
|
||||
var PAYMETHOD = pf.PAYMETHOD.value;
|
||||
var ORDERNO = pf.ORDERNO.value;
|
||||
var TYPE = pf.TYPE.value;
|
||||
var AMOUNT = pf.AMOUNT.value;
|
||||
|
||||
const url = '<c:url value="/sopmal/pay/kiwoomPayGetEnc"/>';
|
||||
|
||||
// AJAX로 kiwoom_ENC 값 요청
|
||||
$.ajax({
|
||||
url : url, // 새로 만들어줄 JSP
|
||||
type : "POST",
|
||||
dataType : "json",
|
||||
data : {
|
||||
CPID : CPID,
|
||||
PAYMETHOD : PAYMETHOD,
|
||||
ORDERNO : ORDERNO,
|
||||
TYPE : TYPE,
|
||||
AMOUNT : AMOUNT
|
||||
},
|
||||
success : function(res) {
|
||||
|
||||
console.log("response :::::",res);
|
||||
console.log("response KIWOOM_ENC :::::",JSON.parse(res.response).KIWOOM_ENC);
|
||||
|
||||
var enc = JSON.parse(res.response).KIWOOM_ENC;
|
||||
|
||||
if (enc) {
|
||||
// kiwoom_ENC 값 입력
|
||||
pf.KIWOOM_ENC.value = enc;
|
||||
|
||||
console.log("response enc :::::",enc);
|
||||
|
||||
// 결제창 URL 설정
|
||||
var PayServer = pf.SERVER.value;
|
||||
var PayType = pf.TYPE.value;
|
||||
var fileName = "";
|
||||
console.log("response PayServer :::::", PayServer);
|
||||
console.log("response PayType :::::", PayType);
|
||||
if (PayServer === "DEV") {
|
||||
fileName = "https://apitest.kiwoompay.co.kr/pay/linkEnc";
|
||||
} else if (PayServer === "LIVE") {
|
||||
fileName = "https://api.kiwoompay.co.kr/pay/linkEnc";
|
||||
}
|
||||
console.log("response fileName :::::", fileName);
|
||||
if (PayType === "P") {
|
||||
var KIWOOMPAY = window.open("", "KIWOOMPAY", "width=468,height=750");
|
||||
pf.target = "KIWOOMPAY";
|
||||
} else if (PayType === "M" || PayType === "W") {
|
||||
pf.target = "_self";
|
||||
}
|
||||
|
||||
pf.HOMEURL.value="https://sake1jan.com/sopmal/pay/kiwoomPaySuccss";
|
||||
pf.FAILURL.value="";
|
||||
|
||||
pf.action = fileName;
|
||||
pf.method = "post";
|
||||
pf.submit();
|
||||
} else {
|
||||
alert("결제 정보를 가져오지 못했습니다.");
|
||||
}
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
console.log("AJAX Error:", error);
|
||||
alert("파일을 연동바랍니다.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getTimeStamp() {
|
||||
var d = new Date();
|
||||
var month = d.getMonth() + 1
|
||||
var date = d.getDate()
|
||||
var hour = d.getHours()
|
||||
var minute = d.getMinutes()
|
||||
var second = d.getSeconds()
|
||||
|
||||
month = (month < 10 ? "0" : "") + month;
|
||||
date = (date < 10 ? "0" : "") + date;
|
||||
hour = (hour < 10 ? "0" : "") + hour;
|
||||
minute = (minute < 10 ? "0" : "") + minute;
|
||||
second = (second < 10 ? "0" : "") + second;
|
||||
|
||||
var s = d.getFullYear() + month + date + hour + minute + second
|
||||
|
||||
return s;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body onLoad="init();">
|
||||
<form name="payForm">
|
||||
<table style="width: 100%; border: 1px; cellspacing: 0; cellpadding: 0">
|
||||
<colgroup>
|
||||
<col width="160px" />
|
||||
<col width="*" />
|
||||
</colgroup>
|
||||
<tr>
|
||||
<td></td>
|
||||
<br />
|
||||
<td><input type=button value="결제하기" onClick="pay()" width="63" height="25"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
|
||||
<table style="width: 100%; border: 1px; cellspacing: 0; cellpadding: 0">
|
||||
<colgroup>
|
||||
<col width="160px" />
|
||||
<col width="180px" />
|
||||
<col width="*" />
|
||||
</colgroup>
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------공통항목(필수)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>파라미터</b></td>
|
||||
<td><b>값</b></td>
|
||||
<td><b>설명</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>서버</td>
|
||||
<td><select name="SERVER">
|
||||
<option value="DEV">개발
|
||||
<option value="LIVE">운영
|
||||
</select></td>
|
||||
<td>서버환경</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TYPE</td>
|
||||
<td><select name="TYPE">
|
||||
<option value="P">일반
|
||||
<option value="M">모바일
|
||||
<option value="W">웹뷰
|
||||
</select></td>
|
||||
<td>결제방식(P:PC/M:모바일/W:웹뷰)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PAYMETHOD</td>
|
||||
<td><input type="text" name="PAYMETHOD" placeholder="매뉴얼에 있는 결제수단별 PAYMETHOD확인"></td>
|
||||
<td>결제수단</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CPID</td>
|
||||
<td><input type="text" name="CPID" placeholder="키움페이에서 발급받은 테스트ID입력" value="CTS18056"></td>
|
||||
<td>상점아이디</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ORDERNO</td>
|
||||
<td><input type="text" name="ORDERNO" value=""></td>
|
||||
<td>주문번호</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PRODUCTTYPE</td>
|
||||
<td><input type="text" name="PRODUCTTYPE" placeholder="1"></td>
|
||||
<td>상품구분(1: 디지털, 2: 실물)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>AMOUNT</td>
|
||||
<td><input type="text" name="AMOUNT" placeholder="1004"></td>
|
||||
<td>결제금액</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PRODUCTNAME</td>
|
||||
<td><input type="text" name="PRODUCTNAME" placeholder="테스트상품"></td>
|
||||
<td>상품명</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PRODUCTCODE</td>
|
||||
<td><input type="text" name="PRODUCTCODE" placeholder="10001"></td>
|
||||
<td>상품코드</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>USERID</td>
|
||||
<td><input type="text" name="USERID" placeholder="test테스터"></td>
|
||||
<td>고객 ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------공통항목(선택)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>KIWOOM_ENC</td>
|
||||
<td><input type="text" name="KIWOOM_ENC" value=""></td>
|
||||
<td>보안 기능</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>EMAIL</td>
|
||||
<td><input type="text" name="EMAIL" value=""></td>
|
||||
<td>고객 이메일</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>USERNAME</td>
|
||||
<td><input type="text" name="USERNAME" placeholder="고객이름"></td>
|
||||
<td>고객명</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RESERVEDINDEX1</td>
|
||||
<td><input type="text" name="RESERVEDINDEX1" placeholder="예약어1"></td>
|
||||
<td>예약항목</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RESERVEDINDEX2</td>
|
||||
<td><input type="text" name="RESERVEDINDEX2" placeholder="예약어2"></td>
|
||||
<td>예약항목</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RESERVEDSTRING</td>
|
||||
<td><input type="text" name="RESERVEDSTRING" placeholder="RESERVED STRING"></td>
|
||||
<td>예약스트링</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>HOMEURL</td>
|
||||
<td><input type="text" name="HOMEURL" placeholder="https://www.naver.com"></td>
|
||||
<td>결제 성공 후, 이동할 URL(결제 창에서 이동)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>DIRECTRESULTFLAG</td>
|
||||
<td><input type="text" name="DIRECTRESULTFLAG" value=""></td>
|
||||
<td>키움페이 결제 완료 창 없이 HOMEURL로 바로 이동(Y/N)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SET_LOGO</td>
|
||||
<td><input type="text" name="SET_LOGO" value=""></td>
|
||||
<td>결제 창 하단 상점로고 URL</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------웹뷰결제창(필수)</b></td>
|
||||
<tr>
|
||||
<td>HOMEURL</td>
|
||||
<td>공통항목(선택)에 있음</td>
|
||||
<td>결제 성공 후, 이동할 URL(결제 창에서 이동)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CLOSEURL</td>
|
||||
<td><input type="text" name="CLOSEURL" placeholder="https://www.daum.net"></td>
|
||||
<td>결제 창에서 취소 누를 시 이동할 URL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FAILURL</td>
|
||||
<td><input type="text" name="FAILURL" placeholder="https://www.nate.com"></td>
|
||||
<td>결제실패 후, 확인버튼 입력 시 이동할 URL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>APPURL</td>
|
||||
<td><input type="text" name="APPURL" value=""></td>
|
||||
<td>인증완료 후 돌아갈 앱의 URL(CARD(K), BANK 필수)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------신용카드(필수)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TAXFREECD</td>
|
||||
<td><input type="text" name="TAXFREECD" placeholder="00"></td>
|
||||
<td>과세/비과세여부(00: 과세, 01: 비과세, 02: 복합과세)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TELNO2</td>
|
||||
<td><input type="text" name="TELNO2" value=""></td>
|
||||
<td>비과세 대상금액(TAXFREECD가 02인 경우에만 필수전송)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------신용카드(조건부 필수)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>BILLTYPE</td>
|
||||
<td><input type="text" name="BILLTYPE" value=""></td>
|
||||
<td>CARD(K)-SUGI, CARD(K)-BATCH, MOBILE-BATCH인 경우 필수 과금 유형(1: 일반, 2: 월자동, 14:카드월자동, 13:수기일반, 18:수기비인증)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CERTTYPE</td>
|
||||
<td><input type="text" name="CERTTYPE" value=""></td>
|
||||
<td>CARD(K)-SUGI인 경우 필수(00:카드번호/유효기간)(11:카드번호/유효기간/생년월일/비밀번호앞2자리)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>AUTOINFOFLAG</td>
|
||||
<td><input type="text" name="AUTOINFOFLAG" value=""></td>
|
||||
<td>CARD(K)-BATCH인 경우 필수 AUTOKEY 전송방식(A~D타입 메뉴얼참고)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------신용카드(선택)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CPQUOTA</td>
|
||||
<td><input type="text" name="CPQUOTA" value=""></td>
|
||||
<td>CARD, CARD-SUGI인 경우 최대 할부 개월 수(구분자 “ : “) (일시불~12개월 예: 0:2:3:4~~~:12)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CARDQUOTA</td>
|
||||
<td><input type="text" name="CARDQUOTA" value=""></td>
|
||||
<td>CARD, CARD-SUGI인 경우 카드사별 할부 개월 수(예시 : CCBC-0:2:3:4:5:6^CCNH-0:2:3)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>QUOTAOPT</td>
|
||||
<td><input type="text" name="QUOTAOPT" value=""></td>
|
||||
<td>CARDK, CARDK-SUGI인 경우 최대 할부 개월 수 (일시불~12개월 예: 12)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CARDLIST</td>
|
||||
<td><input type="text" name="CARDLIST" value=""></td>
|
||||
<td>CARD(K)인 경우 결제 창 카드사 노출 값(구분자 “ : “)(카드사코드는 매뉴얼 하단참고)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>HIDECARDLIST</td>
|
||||
<td><input type="text" name="HIDECARDLIST" value=""></td>
|
||||
<td>CARD(K)인 경우 결제 창 카드사 숨김 값(구분자 “ : “)(카드사코드는 매뉴얼 하단참고)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SKIP_YN</td>
|
||||
<td><input type="text" name="SKIP_YN" value=""></td>
|
||||
<td>카드사 인증창 바로 이동 Y/N(CARDLIST에 하나의 카드사 코드만)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ENG_FLAG</td>
|
||||
<td><input type="text" name="eng_flag" value=""></td>
|
||||
<td>CARDK인 경우 영문 결제창 사용여부 Y/N</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>OPTIONPARAMS</td>
|
||||
<td><input type="text" name="OPTIONPARAMS" value=""></td>
|
||||
<td>CARD-BATCH인 경우 CARDCODE를 값에 추가하여 AUTOKEY 전송방식 변경 (추가 옵션)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------휴대폰(선택)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MOBILECOMPANYLIST</td>
|
||||
<td><input type="text" name="MOBILECOMPANYLIST" value=""></td>
|
||||
<td>MOBILE,MOBILE-BATCH 결제 창 통신사만 노출 값(구분자 “ , “)통신사 코드: SKT/KTF/LGT/CJH/KCT</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FIXTELNO</td>
|
||||
<td><input type="text" name="FIXTELNO" value=""></td>
|
||||
<td>휴대폰 번호 고정 입력</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------가상계좌(선택)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>DEPOSITENDDATE</td>
|
||||
<td><input type="text" name="DEPOSITENDDATE" value=""></td>
|
||||
<td>입금만료일(YYYYMMDD24MISS)(미지정 기본값 7일)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VTAXFREECD</td>
|
||||
<td><input type="text" name="CASHRECEIPTFLAG" value=""></td>
|
||||
<td>과세여부(00:과세 / 01:비과세 / 02:복합) RESERVEDSTIRNG : 비과세 대상금액 ^[비과세금액] 형식, 복합일 경우에만 사용</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>BANKCODE</td>
|
||||
<td><input type="text" name="BANKCODE" value=""></td>
|
||||
<td>은행코드(제한하는 경우에만)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------현금영수증(선택)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CASHRECEIPTFLAG</td>
|
||||
<td><input type="text" name="CASHRECEIPTFLAG" value=""></td>
|
||||
<td>현금영수증 발행여부(1:발행, 0:미발행)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CASHRECEIPTUSE</td>
|
||||
<td><input type="text" name="CASHRECEIPTUSE" value=""></td>
|
||||
<td>현금영수증 발행용도(1:소득공제, 2:지출증빙, 9:미발행)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CASHRECEIPTINFO</td>
|
||||
<td><input type="text" name="CASHRECEIPTINFO" value=""></td>
|
||||
<td>현금영수증 발행정보(휴대폰번호, 사업자번호)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" style=""><b>----------카카오페이(선택)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FREE_AMT</td>
|
||||
<td><input type="text" name="FREE_AMT" value=""></td>
|
||||
<td>결제금액 중 비과세 금액</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CASHRECEIPTFLAG</td>
|
||||
<td>
|
||||
<!-- <input type="text" name="CASHRECEIPTFLAG" value=""> -->
|
||||
</td>
|
||||
<td>현금영수증 발행여부(Y:발행, N:미발행)는 카카오페이 현금영수증 발행은 구분하여 사용바랍니다.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PAYTYPE</td>
|
||||
<td><input type="text" name="PAYTYPE" value=""></td>
|
||||
<td>결제방식 CARD, MONEY(카드, 카카오머니)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>USEKAKAO</td>
|
||||
<td><input type="text" name="USEKAKAO" value=""></td>
|
||||
<td>Y/N(신용카드, 카카오 모두 사용시 신용카드 결제 창에서 카카오 표기 여부)</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user