결제 - 키움결제 네이버페이 관련 처리

This commit is contained in:
이경숙
2026-04-10 18:44:41 +09:00
parent 87b9da9475
commit 308c515038
8 changed files with 77 additions and 12 deletions

View File

@@ -1564,13 +1564,13 @@ public class BOPayService{
String amount = payVO.getCancelAmount(); //취소금액 //todo :: db연결해서 가져와야 함 nullCheck(request.getParameter("AUTHKEY")); String amount = payVO.getCancelAmount(); //취소금액 //todo :: db연결해서 가져와야 함 nullCheck(request.getParameter("AUTHKEY"));
String trxId = payVO.getTno(); //거래번호 String trxId = payVO.getTno(); //거래번호
String cancelReason = payVO.getCancelReason(); //취소사유 String cancelReason = payVO.getCancelReason(); //취소사유
String payMethod = ""; //취소결제수단 String payMethod = payVO.getPayMethod(); //취소결제수단
String cancelReq = "Y"; //취소URL 요청여부 String cancelReq = "Y"; //취소URL 요청여부
//String TAXFREEAMT = nullCheck(request.getParameter("TAXFREEAMT")); //비과세 취소금액 //String TAXFREEAMT = nullCheck(request.getParameter("TAXFREEAMT")); //비과세 취소금액
if(payVO.getSetleTyCd().equals("01")) { /*if(payVO.getSetleTyCd().equals("01")) {
payMethod = "CARD"; payMethod = "CARD";
} }*/
//1차 요청코드 //1차 요청코드
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();

View File

@@ -844,8 +844,8 @@ public class BORtngudrefndService {
} else { // 일반결제 } else { // 일반결제
// 토스페이 // 토스페이 || "naverpay".equals(setle.getPgCmpnyNm()) >> 네이버페이는 토스에서 분리해서 키움으로 이동
if ("tosspay".equals(setle.getPgCmpnyNm()) || "gcpay".equals(setle.getPgCmpnyNm()) || "toss".equals(setle.getPgCmpnyNm()) || "naverpay".equals(setle.getPgCmpnyNm()) || "kakaopay".equals(setle.getPgCmpnyNm())) { if ("tosspay".equals(setle.getPgCmpnyNm()) || "gcpay".equals(setle.getPgCmpnyNm()) || "toss".equals(setle.getPgCmpnyNm()) || "kakaopay".equals(setle.getPgCmpnyNm())) {
log.debug("toss 취소 진입"); log.debug("toss 취소 진입");
BOPayVO payVO = new BOPayVO(); BOPayVO payVO = new BOPayVO();
payVO.setOrderId(ordrInnb); // 주문 고유번호 payVO.setOrderId(ordrInnb); // 주문 고유번호
@@ -1105,7 +1105,7 @@ public class BORtngudrefndService {
} }
// kiwoom // kiwoom
} else if ("kiwoom".equals(setle.getPgCmpnyNm())) { } else if ("kiwoom".equals(setle.getPgCmpnyNm()) || "naverpay".equals(setle.getPgCmpnyNm())) {
log.debug("kiwoom 취소 진입"); log.debug("kiwoom 취소 진입");
BOPayVO payVO = new BOPayVO(); BOPayVO payVO = new BOPayVO();
@@ -1124,6 +1124,12 @@ public class BORtngudrefndService {
payVO.setMemorSetleAt("Y"); payVO.setMemorSetleAt("Y");
} }
if ("kiwoom".equals(setle.getPgCmpnyNm())) {
payVO.setPayMethod("CARD");
} else if ("naverpay".equals(setle.getPgCmpnyNm())) {
payVO.setPayMethod("NAVERPAY");
}
log.info("kiwoom api 전달 파라미터 확인 : {}", payVO); log.info("kiwoom api 전달 파라미터 확인 : {}", payVO);
setleCancelResultMessage = payService.cancelKiwoomPay(payVO); setleCancelResultMessage = payService.cancelKiwoomPay(payVO);
log.info("결제 취소 API 결과 확인 : {}", setleCancelResultMessage); log.info("결제 취소 API 결과 확인 : {}", setleCancelResultMessage);

View File

@@ -839,7 +839,7 @@ public class OrdrController {
String pgCmpnyNm = setle.getPgCmpnyNm(); String pgCmpnyNm = setle.getPgCmpnyNm();
String setleTyCd = setle.getSetleTyCd(); String setleTyCd = setle.getSetleTyCd();
if ("kiwoom".equals(pgCmpnyNm)) { if ("kiwoom".equals(pgCmpnyNm)||"naverpay".equals(pgCmpnyNm)) {
url = "sopmal/ordr/OrdrReqstKiwoomPayR"; url = "sopmal/ordr/OrdrReqstKiwoomPayR";
} else if ("gcpay".equals(pgCmpnyNm)) { } else if ("gcpay".equals(pgCmpnyNm)) {
url = "sopmal/ordr/OrdrReqstGcpayPayR"; url = "sopmal/ordr/OrdrReqstGcpayPayR";
@@ -851,7 +851,7 @@ public class OrdrController {
} }
} else if ("toss".equals(pgCmpnyNm)) { } else if ("toss".equals(pgCmpnyNm)) {
url = "sopmal/ordr/OrdrReqstTossPayR"; url = "sopmal/ordr/OrdrReqstTossPayR";
} else if ("tosspay".equals(pgCmpnyNm)||"naverpay".equals(pgCmpnyNm)||"kakaopay".equals(pgCmpnyNm)) { } else if ("tosspay".equals(pgCmpnyNm)||"kakaopay".equals(pgCmpnyNm)) { //||"naverpay".equals(pgCmpnyNm) 키움으로 이동
url = "sopmal/ordr/OrdrReqstTosspayPayR"; url = "sopmal/ordr/OrdrReqstTosspayPayR";
} else if ("02".equals(setleTyCd)||"08".equals(setleTyCd)||"12".equals(setleTyCd)) { // 무통장, 마일리지, 충전형마일리지 } else if ("02".equals(setleTyCd)||"08".equals(setleTyCd)||"12".equals(setleTyCd)) { // 무통장, 마일리지, 충전형마일리지
url = "sopmal/ordr/OrdrReqstPayR"; url = "sopmal/ordr/OrdrReqstPayR";
@@ -1440,6 +1440,18 @@ public class OrdrController {
return "sopmal/ordr/OrdrReqstKiwoomPreR"; return "sopmal/ordr/OrdrReqstKiwoomPreR";
} }
/**
* 키움 결제 연계처리 - 결제창 취소버튼 클릭 시 페이지 이동
* @return PayKiwoomSucsC.jsp
* @author 이경숙
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value="/kiwoomPayCancelUrl")
public String cancelUrlKiwoom(HttpServletRequest request, ModelMap model) throws Exception {
return "sopmal/ordr/OrdrReqstKiwoomCnclR";
}
/** /**
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > 키움 결제 정보 등록 * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 키움 결제 정보 등록

View File

@@ -1022,7 +1022,7 @@
const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발 const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발
const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영 const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영
if(pgCmpnyNm == "kiwoom") { if(pgCmpnyNm == "kiwoom" || pgCmpnyNm == "naverpay") {
if(setleTyCd=='01'){ url = kiwoomCardUrl;} if(setleTyCd=='01'){ url = kiwoomCardUrl;}
} else if(pgCmpnyNm == "kcp") { } else if(pgCmpnyNm == "kcp") {

View File

@@ -3525,7 +3525,8 @@
function pay(method, requestJson, pgNm) { function pay(method, requestJson, pgNm) {
if(pgNm === "naverpay"||pgNm === "kakaopay") //if(pgNm === "naverpay"||pgNm === "kakaopay")
if(pgNm === "kakaopay")
tossPayments = TossPayments("${data.payInfo.easypayClntKey}"); tossPayments = TossPayments("${data.payInfo.easypayClntKey}");
tossPayments.requestPayment(method, requestJson) tossPayments.requestPayment(method, requestJson)

View File

@@ -0,0 +1,35 @@
<%@ 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 : OrdrReqstKiwoomPreR.jsp
Description : 키움 사전 승인 후 결제요청 폼
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2026-03-23 이경숙 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>결제 사전 승인</title>
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<script src="<c:url value='/pc/vendor/jquery-3.7.1.min.js'/>"></script>
<script>
$(document).ready(function() {
opener.location.reload();
self.close();
});
</script>
</head>
<body>
</body>
</html>

View File

@@ -56,6 +56,8 @@
homeUrl.searchParams.set("ordrInnb", ordrInnb); homeUrl.searchParams.set("ordrInnb", ordrInnb);
homeUrl.searchParams.set("setleAmt", setleAmt); homeUrl.searchParams.set("setleAmt", setleAmt);
homeUrl.searchParams.set("sesionId", sesionId); homeUrl.searchParams.set("sesionId", sesionId);
}else{
pf.CLOSEURL.value=window.location.origin+"/sopmal/ordr/kiwoomPayCancelUrl";
} }
pf.HOMEURL.value = homeUrl.toString(); pf.HOMEURL.value = homeUrl.toString();
@@ -164,9 +166,17 @@
<input type="hidden" name="SERVER" value="LIVE" /> <input type="hidden" name="SERVER" value="LIVE" />
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
<%-- 결제수단 (CARD:카드/NAVERPAY:네이버페이)--%>
<c:choose>
<c:when test="${'naverpay' == data.setle.pgCmpnyNm}">
<input type="hidden" name="PAYMETHOD" value="NAVERPAY" />
</c:when>
<c:otherwise>
<input type="hidden" name="PAYMETHOD" value="CARD" />
</c:otherwise>
</c:choose>
<input type="hidden" name="CPID" value="${data.setle.siteCdMid}"/> <%-- 상점아이디 개발:CTS18056 / 운영:CFO20585,CFO20586--%> <input type="hidden" name="CPID" value="${data.setle.siteCdMid}"/> <%-- 상점아이디 개발:CTS18056 / 운영:CFO20585,CFO20586--%>
<input type="hidden" name="TYPE" value="${data.ordr.sknEnvrnCd}" /> <%-- 결제방식(P:PC/M:모바일/W:웹뷰) 스킨환경코드(P:PC, M:mobile, TM:TM주문)--%> <input type="hidden" name="TYPE" value="${data.ordr.sknEnvrnCd}" /> <%-- 결제방식(P:PC/M:모바일/W:웹뷰) 스킨환경코드(P:PC, M:mobile, TM:TM주문)--%>
<input type="hidden" name="PAYMETHOD" value="CARD"/> <%-- 결제수단 (CARD:카드/NAVERPAY:네이버페이)--%>
<input type="hidden" name="TAXFREECD" value="01"/> <%-- 과세 비과세 여부(00: 과세, 01: 비과세, 02: 복합과세) --%> <input type="hidden" name="TAXFREECD" value="01"/> <%-- 과세 비과세 여부(00: 과세, 01: 비과세, 02: 복합과세) --%>
<input type="hidden" name="BILLTYPE" value="1"/> <%-- 과금 유형(1: 일반) --%> <input type="hidden" name="BILLTYPE" value="1"/> <%-- 과금 유형(1: 일반) --%>
<input type="hidden" name="PRODUCTTYPE" value="2"/> <%-- 상품구분(1: 디지털, 2: 실물) --%> <input type="hidden" name="PRODUCTTYPE" value="2"/> <%-- 상품구분(1: 디지털, 2: 실물) --%>
@@ -180,6 +190,7 @@
<input type="hidden" name="DIRECTRESULTFLAG" value="Y" /> <%-- 키움페이 결제 완료 창 없이 HOMEURL로 바로 이동(Y/N) --%> <input type="hidden" name="DIRECTRESULTFLAG" value="Y" /> <%-- 키움페이 결제 완료 창 없이 HOMEURL로 바로 이동(Y/N) --%>
<input type="hidden" name="HOMEURL" value="" /> <%-- 결제 성공 후, 이동할 URL(결제 창에서 이동) --%> <input type="hidden" name="HOMEURL" value="" /> <%-- 결제 성공 후, 이동할 URL(결제 창에서 이동) --%>
<input type="hidden" name="FAILURL" value="" /> <%-- 결제실패 후, 확인버튼 입력 시 이동할 URL --%> <input type="hidden" name="FAILURL" value="" /> <%-- 결제실패 후, 확인버튼 입력 시 이동할 URL --%>
<input type="hidden" name="CLOSEURL" value="" /> <%-- 결제 창에서 취소 누를 시 이동할 URL --%>
</form> </form>
</body> </body>
</html> </html>

View File

@@ -574,7 +574,7 @@
const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발 const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발
const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영 const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영
if(pgCmpnyNm == "kiwoom") { if(pgCmpnyNm == "kiwoom" || pgCmpnyNm == "naverpay") {
if(setleTyCd=='01'){ url = kiwoomCardUrl;} if(setleTyCd=='01'){ url = kiwoomCardUrl;}
} else if(pgCmpnyNm == "kcp") { } else if(pgCmpnyNm == "kcp") {