결제관련 수정
This commit is contained in:
@@ -639,19 +639,26 @@ public class PayController {
|
|||||||
* @author 이경숙
|
* @author 이경숙
|
||||||
*/
|
*/
|
||||||
@Policy(AuthPolicy.RESTRICTED)
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
@RequestMapping(value="/selectKiwoomSimple")
|
@RequestMapping(value="/selectKiwoomSample")
|
||||||
public String selectKiwoonPay(ModelMap model) throws Exception {
|
public String selectKiwoonPay(ModelMap model) throws Exception {
|
||||||
log.debug("selectKiwoonPay = {}");
|
log.debug("selectKiwoonPay = {}");
|
||||||
return "sopmal/ordr/PayKiwoomPayC";
|
return "sopmal/ordr/PayKiwoomPayC";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Policy(AuthPolicy.RESTRICTED)
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
@RequestMapping(value="/selectKiwoomSimple2")
|
@RequestMapping(value="/selectKiwoomSample2")
|
||||||
public String selectKiwoonPay2(ModelMap model) throws Exception {
|
public String selectKiwoonPay2(ModelMap model) throws Exception {
|
||||||
log.debug("selectKiwoonPay = {}");
|
log.debug("selectKiwoonPay = {}");
|
||||||
return "sopmal/ordr/PayKiwoomPay2C";
|
return "sopmal/ordr/PayKiwoomPay2C";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@RequestMapping(value="/selectKiwoomTotalSample")
|
||||||
|
public String selectKiwoonPayTotal(ModelMap model) throws Exception {
|
||||||
|
log.debug("selectKiwoonPay = {}");
|
||||||
|
return "sopmal/ordr/PayKiwoomPayTotalC";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 키움 결제 연계 전 getEnc 값 받아오기
|
* 키움 결제 연계 전 getEnc 값 받아오기
|
||||||
@@ -667,6 +674,10 @@ public class PayController {
|
|||||||
|
|
||||||
log.debug("kiwoomPayGetEnc = {}");
|
log.debug("kiwoomPayGetEnc = {}");
|
||||||
|
|
||||||
|
//String eucKrStr = new String(utf8Str.getBytes("UTF-8"), "EUC-KR");
|
||||||
|
//String utf8Str = new String(eucKrStr.getBytes("EUC-KR"), "UTF-8");
|
||||||
|
//request.setCharacterEncoding("EUC-KR");
|
||||||
|
|
||||||
payVO.setCpId(request.getParameter("CPID"));
|
payVO.setCpId(request.getParameter("CPID"));
|
||||||
payVO.setPayMethod(request.getParameter("PAYMETHOD"));
|
payVO.setPayMethod(request.getParameter("PAYMETHOD"));
|
||||||
payVO.setOrderId(request.getParameter("ORDERNO"));
|
payVO.setOrderId(request.getParameter("ORDERNO"));
|
||||||
|
|||||||
@@ -0,0 +1,161 @@
|
|||||||
|
<%@ 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>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<!-- <meta charset="UTF-8"> -->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<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 src="<c:url value='/pc/vendor/jquery-3.7.1.min.js'/>"></script>
|
||||||
|
|
||||||
|
<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=window.location.origin+"/sopmal/pay/kiwoomPaySuccss";
|
||||||
|
|
||||||
|
console.log(pf.HOMEURL.value);
|
||||||
|
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>
|
||||||
|
<form name="order_info" id="order_info" accept-charset="euc-kr">
|
||||||
|
<input type="hidden" name="sopmalCd" class="sopmalCd" value="${data.setle.sopmalCd}"/>
|
||||||
|
<input type="hidden" name="ordrInnb" class="ordrInnb" value="${data.setle.ordrInnb}"/>
|
||||||
|
<input type="hidden" name="pgCmpnyNm" class="pgCmpnyNm" value="${data.setle.pgCmpnyNm}"/>
|
||||||
|
<input type="hidden" name="setleTyCd" class="setleTyCd" value="${data.setle.setleTyCd}"/>
|
||||||
|
|
||||||
|
<input type="hidden" name="SERVER" class="SERVER" value="DEV"/> <!-- 서버환경 : LIVE -->
|
||||||
|
<input type="hidden" name="TYPE" class="TYPE" value="${data.setle.setleAmt}"/> <!-- 결제방식(P:PC/M:모바일/W:웹뷰) -->
|
||||||
|
<input type="hidden" name="PAYMETHOD" class="PAYMETHOD" value="${data.ordr.ordrrNm}"/> <!-- 결제수단 -->
|
||||||
|
<input type="hidden" name="TAXFREECD" class="TAXFREECD" value="00"/> <!-- 과세 비과세 여부(00: 과세, 01: 비과세, 02: 복합과세) -->
|
||||||
|
<input type="hidden" name="BILLTYPE" class="BILLTYPE" value="1"/> <!-- 과금 유형(1: 일반) -->
|
||||||
|
<input type="hidden" name="KIWOOM_ENC" class="KIWOOM_ENC" value="${data.ordr.ordrrNm}"/> <!-- 보안 기능 -->
|
||||||
|
|
||||||
|
<input type="hidden" name="CPID" class="CPID" value="${data.ordr.ordrrEmail}"/> <!-- 상점아이디 -->
|
||||||
|
<input type="hidden" name="ORDERNO" class="ORDERNO" value="${data.ordr.ordrrMbtlnb}"/> <!-- 주문번호 -->
|
||||||
|
<input type="hidden" name="PRODUCTTYPE" class="PRODUCTTYPE" value="${data.ordr.mbrId}"/> <!-- 상품구분(1: 디지털, 2: 실물) -->
|
||||||
|
<input type="hidden" name="AMOUNT" class="AMOUNT" value="${data.ordr.mbrInnb}" /><!-- 결제금액 -->
|
||||||
|
<input type="hidden" name="PRODUCTNAME" class="PRODUCTNAME" value="${data.ordr.sesionId}" /><!-- 상품명 -->
|
||||||
|
<input type="hidden" name="USERID" class="USERID" value="${data.setle.dueDt}" /> <!-- 고객 ID -->
|
||||||
|
|
||||||
|
<input type="hidden" name="HOMEURL" class="HOMEURL" value="${data.setle.dueDt}" /> <!-- 결제 성공 후, 이동할 URL(결제 창에서 이동) -->
|
||||||
|
<input type="hidden" name="FAILURL" class="FAILURL" value="${data.setle.dueDt}" /> <!-- 결제실패 후, 확인버튼 입력 시 이동할 URL -->
|
||||||
|
<input type="hidden" name="FAILURL" class="FAILURL" value="${data.setle.dueDt}" /> <!-- 결제실패 후, 확인버튼 입력 시 이동할 URL -->
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -93,7 +93,9 @@
|
|||||||
pf.target = "_self";
|
pf.target = "_self";
|
||||||
}
|
}
|
||||||
|
|
||||||
pf.HOMEURL.value="https://sake1jan.com/sopmal/pay/kiwoomPaySuccss";
|
pf.HOMEURL.value=window.location.origin+"/sopmal/pay/kiwoomPaySuccss";
|
||||||
|
|
||||||
|
console.log(pf.HOMEURL.value);
|
||||||
pf.FAILURL.value="";
|
pf.FAILURL.value="";
|
||||||
|
|
||||||
pf.action = fileName;
|
pf.action = fileName;
|
||||||
@@ -134,7 +136,7 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body onLoad="init();">
|
<body onLoad="init();">
|
||||||
<form name="payForm">
|
<form name="payForm" accept-charset="euc-kr">
|
||||||
<table style="width: 100%; border: 1px; cellspacing: 0; cellpadding: 0">
|
<table style="width: 100%; border: 1px; cellspacing: 0; cellpadding: 0">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col width="160px" />
|
<col width="160px" />
|
||||||
|
|||||||
@@ -0,0 +1,99 @@
|
|||||||
|
<%@ 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 이경숙 최초 생성
|
||||||
|
--%>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>통합 API 샘플페이지</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
|
||||||
|
<meta http-equiv="Cache-Control" content="no-cache">
|
||||||
|
<meta http-equiv="Expires" content="0">
|
||||||
|
<meta http-equiv="Pragma" content="no-cache">
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var pf;
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
//alert(navigator.userAgent);
|
||||||
|
pf = document.frmConfirm;
|
||||||
|
pf.ORDERNO.value = getTimeStamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
function fnSubmit() {
|
||||||
|
var fileName;
|
||||||
|
fileName = "./sample.jsp";
|
||||||
|
pf = document.frmConfirm;
|
||||||
|
pf.contentType = 'application/json',
|
||||||
|
pf.action = fileName;
|
||||||
|
pf.method = "post";
|
||||||
|
pf.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
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="frmConfirm">
|
||||||
|
서버설정 : <select name="SERVER"><option value="DEV">개발<option value="LIVE">운영</select><br>
|
||||||
|
AUTHKEY : <input type="text" id="AUTHKEY" name="AUTHKEY" value="상점관리자 고객지원>연동정보설정에 연동키 확인" style="width:80%;"/><br>
|
||||||
|
상점아이디 : <input type="text" id="CPID" name="CPID" value="키움페이에서 발급받은 테스트ID입력" style="width:80%;"/><br>
|
||||||
|
PAYMETHOD : <input type="text" id="PAYMETHOD" name="PAYMETHOD" value="매뉴얼에 있는 결제수단별 PAYMETHOD확인" style="width:80%;"/><br>
|
||||||
|
ORDERNO : <input type="text" id="ORDERNO" name="ORDERNO" value="orderno" style="width:80%;"/> <br>
|
||||||
|
PRODUCTTYPE : <input type="text" id="PRODUCTTYPE" name="PRODUCTTYPE" value="1" style="width:80%;"/> <br>
|
||||||
|
BILLTYPE : <input type="text" id="BILLTYPE" name="BILLTYPE" value="13" style="width:80%;"/> <br>
|
||||||
|
AMOUNT : <input type="text" id="AMOUNT" name="AMOUNT" value="1004" style="width:80%;"/> <br>
|
||||||
|
PRODUCTNAME : <input type="text" id="PRODUCTNAME" name="PRODUCTNAME" value="테스트 상품" style="width:80%;"/> <br>
|
||||||
|
IPADDRESS : <input type="text" id="IPADDRESS" name="IPADDRESS" value="211.111.222.333" style="width:80%;"/> <br>
|
||||||
|
USERID : <input type="text" id="USERID" name="USERID" value="고객ID" style="width:80%;"/> <br>
|
||||||
|
PRODUCTCODE : <input type="text" id="PRODUCTCODE" name="PRODUCTCODE" value="상품코드" style="width:80%;"/> <br>
|
||||||
|
EMAIL : <input type="text" id="EMAIL" name="EMAIL" value="" style="width:80%;"/> <br>
|
||||||
|
USERNAME : <input type="text" id="USERNAME" name="USERNAME" value="고객명" style="width:80%;"/> <br>
|
||||||
|
RESERVEDINDEX1 : <input type="text" id="RESERVEDINDEX1" name="RESERVEDINDEX1" value="예약어1" style="width:80%;"/> <br>
|
||||||
|
RESERVEDINDEX2 : <input type="text" id="RESERVEDINDEX2" name="RESERVEDINDEX2" value="예약어2" style="width:80%;"/> <br>
|
||||||
|
RESERVEDSTRING : <input type="text" id="RESERVEDSTRING" name="RESERVEDSTRING" value="예약스트링" style="width:80%;"/> <br>
|
||||||
|
CARDNO : <input type="text" id="CARDNO" name="CARDNO" value="" style="width:80%;"/> <br>
|
||||||
|
EXPIREDT : <input type="text" id="EXPIREDT" name="EXPIREDT" value="" style="width:80%;"/> <br>
|
||||||
|
CARDAUTH : <input type="text" id="CARDAUTH" name="CARDAUTH" value="" style="width:80%;"/> <br>
|
||||||
|
CARDPASSWORD : <input type="text" id="CARDPASSWORD" name="CARDPASSWORD" value="" style="width:80%;"/> <br>
|
||||||
|
QUOTA : <input type="text" id="QUOTA" name="QUOTA" value="00" style="width:80%;"/> <br>
|
||||||
|
TAXFREECD : <input type="text" id="TAXFREECD" name="TAXFREECD" value="00" style="width:80%;"/> <br>
|
||||||
|
TELNO2 : <input type="text" id="TELNO2" name="TELNO2" value="" style="width:80%;"/> <br>
|
||||||
|
DIRECT_YN : <input type="text" id="DIRECT_YN" name="DIRECT_YN" value="Y" style="width:80%;"/> <br>
|
||||||
|
AUTOKEY : <input type="text" id="AUTOKEY" name="AUTOKEY" value="" style="width:80%;"/> <br>
|
||||||
|
<input name="btnSubmit" type="button" value="결제요청" onclick="fnSubmit()" ><br>
|
||||||
|
</form>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
||||||
Reference in New Issue
Block a user