Forráskód Böngészése

Merge branch 'order' into develop

card007 5 éve
szülő
commit
921264e08e

+ 24 - 10
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -17,11 +17,15 @@ import org.springframework.transaction.annotation.Transactional;
 import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.style24.core.biz.service.TscKakaoPayService;
 import com.style24.core.biz.service.TscKcpService;
+import com.style24.core.biz.service.TscNaverPayService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.session.TscSession;
 import com.style24.front.biz.dao.TsfOrderDao;
 import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.domain.KakaoPay;
+import com.style24.persistence.domain.NaverPay;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Payment;
 
@@ -42,6 +46,12 @@ public class TsfOrderService {
 
 	@Autowired
 	private TscKcpService coreKcpService;
+	
+	@Autowired
+	private TscKakaoPayService coreKakaoPayService;
+	
+	@Autowired
+	private TscNaverPayService coreNaverPayService;
 
 	/**
 	 * 마이페이지 검색 기간 영역 설정
@@ -237,7 +247,7 @@ public class TsfOrderService {
 			if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
 				result = coreKcpService.kcpPayRequest(param, request, response);
 			} else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
-				result = null;
+				result = coreKakaoPayService.approveKakaoPayment(param);
 			} else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {
 				result = null;
 			} else {
@@ -250,12 +260,16 @@ public class TsfOrderService {
 
 			if(updatePaymentForOrderFinished(result) < 1) {
 				// TODO 전체 취소 로직 추가
-				coreKcpService.kcpPayRollBack(result, request);
-
-				throw new IllegalArgumentException("결제 정보 저장 실패. 새로고침 후 다시 시작해주세요.");
+				if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
+					coreKcpService.kcpPayRollBack(result, request);
+				} else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
+					coreKakaoPayService.cancelKakaoPayment(param);
+				} else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {
+					result = null;
+				} else {
+					throw new IllegalArgumentException("결제 정보 저장 실패. 새로고침 후 다시 시작해주세요.");
+				}
 			}
-
-			coreKcpService.kcpPayRollBack(result, request);
 		} catch(Exception e) {
 			e.printStackTrace();
 			throw new IllegalArgumentException(e.getMessage());
@@ -335,11 +349,11 @@ public class TsfOrderService {
 	public Payment setPgDataInfo(Order order) {
 		Payment payment = new Payment();
 		if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) {			// 카카오페이
-			// TODO 카카오페이 데이터 세팅
-			payment = null;
+			KakaoPay kakaoPay = coreKakaoPayService.kakaoPaymentReady(order);
+			payment = coreKakaoPayService.setKakaoOrderData(kakaoPay, order);
 		} else if(TscConstants.PgGb.NAVER.value().equals(order.getPgGb())) {	// 네이버페이
-			// TODO 네이버페이 데이터 세팅
-			payment = null;
+			NaverPay naverPay = coreNaverPayService.naverPaymentReady(order);
+			payment = coreNaverPayService.setNaverOrderData(naverPay);
 		} else if(TscConstants.PgGb.KCP.value().equals(order.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(order.getPgGb())){	// KCP, PAYCO
 			payment = coreKcpService.setKcpOrderData(order);
 		} else {

+ 23 - 49
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -774,7 +774,7 @@ public class TsfOrderController extends TsfBaseController {
 	 * @author xodud1202
 	 * @since 2021. 03. 04
 	 */
-	@PostMapping("/create/order")
+	@PostMapping("/create/preOrder")
 	public ModelAndView createOrder(Order order) {
 		ModelAndView mav = new ModelAndView();
 		// TODO 주문 시작 데이터 처리
@@ -789,6 +789,16 @@ public class TsfOrderController extends TsfBaseController {
 		// pgGb = 결제타입, payMeans = 결제수단, ordNo = 주문번호, goodsNm = 상품명, payAmt = 실결제금액, ordNm = 주문자명, ordPhnno = 휴대폰번호, custNo = 고객번호
 		// 선택 데이터
 		// ordEmail = 주문자메일, ordTelno = 전화번호
+		
+		/* 
+		=== 카카오페이 & 네이버페이 파라메터 ===
+		ordNo = 주문번호
+		custNo = 고객번호
+		goodsNm = 상품명
+		ordGoodsQty = 주문상품수량
+		payAmt = 결제금액
+		======================
+		*/
 		Payment payment = orderService.setPgDataInfo(order);
 
 		mav.addObject("payment", payment);
@@ -854,16 +864,10 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/kakao/payment/approve")
 	@ResponseBody
-	public GagaMap approveKakaoPayment(@RequestBody Order order) {
+	public GagaMap approveKakaoPayment(@RequestBody Payment payment) {
 		GagaMap result = new GagaMap();
 
-		if (TsfSession.getInfo().getCustNo() == null) {
-			order.setCustNo(0);
-		} else {
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		}
-
-		result.set("payment", kakaoPayService.approveKakaoPayment(order));
+		result.set("payment", kakaoPayService.approveKakaoPayment(payment));
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 
 		return result;
@@ -879,16 +883,10 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/kakao/payment/order")
 	@ResponseBody
-	public GagaMap kakaoPaymentOrder(@RequestBody Order order) {
+	public GagaMap kakaoPaymentOrder(@RequestBody Payment payment) {
 		GagaMap result = new GagaMap();
 
-		if (TsfSession.getInfo().getCustNo() == null) {
-			order.setCustNo(0);
-		} else {
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		}
-
-		result.set("kakaoPay", kakaoPayService.getKakaoPaymentOrder(order));
+		result.set("kakaoPay", kakaoPayService.getKakaoPaymentOrder(payment));
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 
 		return result;
@@ -904,16 +902,10 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/kakao/payment/cancel")
 	@ResponseBody
-	public GagaMap cancelKakaoPayment(@RequestBody Order order) {
+	public GagaMap cancelKakaoPayment(@RequestBody Payment payment) {
 		GagaMap result = new GagaMap();
 
-		if (TsfSession.getInfo().getCustNo() == null) {
-			order.setCustNo(0);
-		} else {
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		}
-
-		result.set("kakaoPay", kakaoPayService.cancelKakaoPayment(order));
+		result.set("kakaoPay", kakaoPayService.cancelKakaoPayment(payment));
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 
 		return result;
@@ -974,16 +966,10 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/naver/payment/approve")
 	@ResponseBody
-	public GagaMap approveNaverPayment(@RequestBody Order order) {
+	public GagaMap approveNaverPayment(@RequestBody Payment payment) {
 		GagaMap result = new GagaMap();
 
-		if (TsfSession.getInfo().getCustNo() == null) {
-			order.setCustNo(0);
-		} else {
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		}
-
-		result.set("payment", naverPayService.approveNaverPayment(order));
+		result.set("payment", naverPayService.approveNaverPayment(payment));
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 
 		return result;
@@ -999,16 +985,10 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/naver/payment/order")
 	@ResponseBody
-	public GagaMap naverPaymentOrder(@RequestBody Order order) {
+	public GagaMap naverPaymentOrder(@RequestBody Payment payment) {
 		GagaMap result = new GagaMap();
 
-		if (TsfSession.getInfo().getCustNo() == null) {
-			order.setCustNo(0);
-		} else {
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		}
-
-		result.set("naverPay", naverPayService.getNaverPaymentOrder(order));
+		result.set("naverPay", naverPayService.getNaverPaymentOrder(payment));
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 
 		return result;
@@ -1024,16 +1004,10 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/naver/payment/cancel")
 	@ResponseBody
-	public GagaMap cancelNaverPayment(@RequestBody Order order) {
+	public GagaMap cancelNaverPayment(@RequestBody Payment payment) {
 		GagaMap result = new GagaMap();
 
-		if (TsfSession.getInfo().getCustNo() == null) {
-			order.setCustNo(0);
-		} else {
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		}
-
-		result.set("naverPay", naverPayService.cancelNaverPayment(order));
+		result.set("naverPay", naverPayService.cancelNaverPayment(payment));
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 
 		return result;

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -337,7 +337,7 @@
 			, CARD_TYPE = #{cardType}
 			, CARD_NM = #{cardNm}
 			, CARD_MIPS = #{cardMips}
-			, CARD_PCABLE_YN = #{cardPcableYn}
+			, CARD_PCABLE_YN = IFNULL(#{cardPcableYn}, 'Y')
 			, VA_NO = #{vaNo}
 			, VA_BANK = #{vaBank}
 			, VA_DEADLINE = DATE_FORMAT(#{vaDeadline} , '%Y%m%d%H%i%S')

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml

@@ -177,7 +177,7 @@
 		AND CASE
 			WHEN TCHP.REVIEW_SQ IS NULL THEN 1
 			WHEN TCHP.REVIEW_SQ IS NOT NULL AND TR.REVIEW_SQ IS NOT NULL THEN 1
-		END > 0		
+		END <![CDATA[>]]> 0		
 		AND TCHP.OCCUR_GB IN ('G069_12','G069_13','G069_20','G069_30','G069_40','G069_42','G069_90','G069_99')
 		AND TCHP.PNT_UPLOAD_STAT = 'G070_30'
 		AND DATE_FORMAT(TCHP.UPD_DT,'%Y%m') = #{searchDt}

+ 2 - 0
src/main/resources/config/application.yml

@@ -60,6 +60,7 @@ naverPay:
     clientId: 8TSWSyJMMUvOLKUySQx6
     clientSecret: oGXnO7cMD1
     paymentReadyUrl: /naverpay/payments/v2/reserve
+    paymentRedirectUrl: /order/naver/payment/request
     approvePaymentUrl: /naverpay/payments/v2/apply/payment
     paymentOrderUrl: /naverpay/payments/v2/list/history
     cancelPaymentUrl: /naverpay/payments/v1/cancel
@@ -91,6 +92,7 @@ kakao:
     authorizeUrl: https://kauth.kakao.com/oauth/authorize
     unlinkUrl : https://kapi.kakao.com/v1/user/unlink
     paymentReadyUrl : https://kapi.kakao.com/v1/payment/ready
+    paymentRedirectUrl : /order/kakao/payment/request
     approvePaymentUrl : https://kapi.kakao.com/v1/payment/approve
     paymentOrderUrl : https://kapi.kakao.com/v1/payment/order
     cancelPaymentUrl : https://kapi.kakao.com/v1/payment/cancel

+ 33 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypagePointFormWeb.html

@@ -97,6 +97,23 @@
 		// Select this year month
 		var checkYm = year + "" + month;
 		
+		// 작년
+// 		for(var i = 1;i <= 12; i++){
+// 			if(i < 10 && i != month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearAgo + "" + 0 + i +"'>"+ oneYearAgo + "년" + " " + i + "월" +"</li>");
+// 			}
+// 			else if(i < 10 && i == month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearAgo + "" + 0 + i +"'>" + oneYearAgo + "년" + " " + i + "월" +"</li>");
+// 			}
+// 			else if(i > 9 && i != month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearAgo + "" + i +"'>"+ oneYearAgo + "년" + " " + i + "월" +"</li>");
+// 			}
+// 			else if(i > 9 && i == month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearAgo + "" + i +"'>"+ oneYearAgo + "년" + " " + i + "월" +"</li>");
+// 			}
+// 		}
+		
+		// 이번년도
 		for(var i = 1;i <= 12; i++){
 			if(i < 10 && i != month){
 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ year + "" + 0 + i +"'>"+ year + "년" + " " + i + "월" +"</li>");
@@ -113,6 +130,22 @@
 			}
 		}
 		
+		// 내년
+// 		for(var i = 1;i <= 12; i++){
+// 			if(i < 10 && i != month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearLater + "" + 0 + i +"'>"+ oneYearLater + "년" + " " + i + "월" +"</li>");
+// 			}
+// 			else if(i < 10 && i == month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearLater + "" + 0 + i +"'>" + oneYearLater + "년" + " " + i + "월" +"</li>");
+// 			}
+// 			else if(i > 9 && i != month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearLater + "" + i +"'>"+ oneYearLater + "년" + " " + i + "월" +"</li>");
+// 			}
+// 			else if(i > 9 && i == month){
+// 				$("#searchDt").append("<li onclick='fnChangeDate(this);' class='selected' value='"+ oneYearLater + "" + i +"'>"+ oneYearLater + "년" + " " + i + "월" +"</li>");
+// 			}
+// 		}
+		
 	// 날짜변경 이벤트
 	var fnChangeDate = function(parm) {
 		

+ 91 - 127
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -26,57 +26,6 @@
 <!-- payment.js -->
 <script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
 <script type="text/javascript" src="/ux/pc/js/payment.js"></script>
-
-
-<!-- xodud1202 -->
-<script type="text/javascript">
-	/****************************************************************/
-	/* m_Completepayment  설명                                      */
-	/****************************************************************/
-	/* 인증완료시 재귀 함수                                         */
-	/* 해당 함수명은 절대 변경하면 안됩니다.                        */
-	/* 해당 함수의 위치는 payplus.js 보다먼저 선언되어여 합니다.    */
-	/* Web 방식의 경우 리턴 값이 form 으로 넘어옴                   */
-	/****************************************************************/
-	function m_Completepayment( FormOrJson, closeEvent )
-	{
-		var frm = document.order_info;
-
-		/********************************************************************/
-		/* FormOrJson은 가맹점 임의 활용 금지                               */
-		/* frm 값에 FormOrJson 값이 설정 됨 frm 값으로 활용 하셔야 됩니다.  */
-		/* FormOrJson 값을 활용 하시려면 기술지원팀으로 문의바랍니다.       */
-		/********************************************************************/
-		GetField( frm, FormOrJson );
-
-
-		if( frm.res_cd.value == "0000" )
-		{
-			alert("결제 승인 요청 전,\n\n반드시 결제창에서 고객님이 결제 인증 완료 후\n\n리턴 받은 ordr_chk 와 업체 측 주문정보를\n\n다시 한번 검증 후 결제 승인 요청하시기 바랍니다."); //업체 연동 시 필수 확인 사항.
-			alert(frm);
-			/*
-				가맹점 리턴값 처리 영역
-			*/
-
-			frm.submit();
-		} else {
-			alert( "[" + frm.res_cd.value + "] " + frm.res_msg.value );
-			closeEvent();
-		}
-	}
-	
-	/* 표준웹 실행 */
-	function jsf__pay( form ) {
-		try {
-			KCP_Pay_Execute( form );
-		} catch (e) {
-			/* IE 에서 결제 정상종료시 throw로 스크립트 종료 */
-		}
-	}
-</script>
-
-	
-
 	<script type="text/javascript">
 		$(document).on("click", "#buyBtn", function() {
 			$.ajax({
@@ -85,7 +34,7 @@
 				dataType : 'html',
 				data : {
 					  pgGb		: "PAYCO"
-					, payMeans	: "G014_10"
+					, payMeans	: "G014_30"
 					, ordNo		: "5"
 					, goodsNm	: "상품 테스트"
 					, payAmt	: "1233"
@@ -116,55 +65,67 @@
 
 
 <!-- card007 -->
-	<script type="text/javascript">
+	<script th:inline="javascript">
 		$(document).on("click", "#kakaoBtn", function() {
-			$.ajax( {
+			$.ajax({
 				type: "POST",
-				url : '/order/create/order',
+				url : '/order/create/preOrder',
 				dataType : 'html',
-				data : {cartSq : 8},
+				data : {
+					pgGb			: "KAKAO"
+					, custNo		: [[${sessionInfo.custNo}]]
+					, ordNo			: 1000
+					, goodsNm		: "상품 테스트"
+					, payAmt		: 30000
+					, ordGoodsQty	: [[${goodsTotCnt}]]
+				},
+				error : function(e) {
+					console.log(e.responseText);
+				},
 				success : function(result) {
 					$("#order_info").html(result);
 					fnKakaoPaymentReady();
 				}
 			});
+			//let url = '/order/create/preOrder';
+			//let data = {};
+			//data.pgGb = 'KAKAO';
+			//data.ordNo = 1000;
+			//data.custNo = [[${sessionInfo.custNo}]];
+			//data.goodsNm = '상품 테스트';
+			//data.ordGoodsQty = [[${goodsTotCnt}]];
+			//data.payAmt = 30000;
+			//
+			//let jsonData = JSON.stringify(data);
+			//
+			//gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			//	$("#order_info").html(result);
+			//	console.log(result);
+			//	fnKakaoPaymentReady();
+			//});
 		});
 
 		// 카카오페이 결제준비 처리
 		var fnKakaoPaymentReady = function() {
-			const protocol = 'http:';
-			let url = '/order/kakao/payment/ready';
-			let redirectUrl = '/order/kakao/payment/request';
-			let data = {};
-			data.ordNo = $('#order_info input[name=ordr_idxx]').val();
-			data.goodsNm = $('#order_info input[name=good_name]').val();
-			data.ordQty = $('#ordQty').text();
-			data.realOrdAmt = $('#order_info input[name=good_mny]').val();
-			data.approvalUrl = protocol + _frontUrl + redirectUrl;
-			data.failUrl = protocol + _frontUrl + redirectUrl;
-			data.cancelUrl = protocol + _frontUrl + redirectUrl;
-
-			let jsonData = JSON.stringify(data);
-
-			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-				let tid = result.kakaoPay.tid;
-				let nextRedirectUrl = result.kakaoPay.next_redirect_pc_url;
-				let option = 'width=420, height=520';
-
-				$('#order_info').append('<input type=hidden name="pgTid" value="' + tid + '" />');
+			let nextRedirectUrl = $('#order_info input[name=nextRedirectPcUrl]').val();
+			let option = 'width=420, height=520';
 
-				window.open(nextRedirectUrl, 'kakaoPaymentPopup', option);
-			});
+			window.open(nextRedirectUrl, 'kakaoPaymentPopup', option);
 		}
 
 		// 카카오페이 결제 승인 요청
 		var fnKakaoPaymentRequest = function(pgToken) {
-			$('#order_info').append('<input type=hidden name="pgToken" value="' + pgToken + '" />');
+			$('#order_info input[name=pgToken]').val(pgToken);
+
+			// TODO
+			// formSubmit
 
+			// 테스트용 호출
 			let url = '/order/kakao/payment/approve';
 			let data = {};
 			data.pgTid = $('#order_info input[name=pgTid]').val();
-			data.ordNo = $('#order_info input[name=ordr_idxx]').val();
+			data.partnerOrderId = $('#order_info input[name=partnerOrderId]').val();
+			data.partnerUserId = $('#order_info input[name=partnerUserId]').val();
 			data.pgToken = $('#order_info input[name=pgToken]').val();
 
 			let jsonData = JSON.stringify(data);
@@ -179,7 +140,7 @@
 			return true;
 		}
 
-		// 카카오페이 결제 정보 조회
+		// 카카오페이 결제 정보 조회 (테스트용 호출)
 		var fnKakaoPaymentOrder = function() {
 			let url = '/order/kakao/payment/order';
 			let data = {};
@@ -197,13 +158,12 @@
 			return true;
 		}
 
-		// 카카오페이 결제 취소
+		// 카카오페이 결제 취소 (테스트용 호출)
 		var fnCancelKakaoPayment = function() {
 			let url = '/order/kakao/payment/cancel';
 			let data = {};
 			data.pgTid = $('#order_info input[name=pgTid]').val();
-			data.cnclRtnAmt = 1000;
-			//data.allCanYn = 'Y';
+			data.payAmt = 1000;
 
 			let jsonData = JSON.stringify(data);
 
@@ -218,58 +178,64 @@
 	</script>
 
 	<!-- =========== 네이버페이 ============= -->
-	<script src="https://nsp.pay.naver.com/sdk/js/naverpay.min.js"></script>
 	<script th:inline="javascript">
-		let custNo = [[${sessionInfo.custNo}]];
-		let naverPayClientId = [[${@environment.getProperty('naverPay.clientId')}]];
-		let redirectUrl = '/order/naver/payment/request';
-		const protocol = 'http:';
-		
-		var oPay = Naver.Pay.create({
-			"mode" : "development",				// development or production
-			"clientId": naverPayClientId	// clientId
-		});
-		
 		$(document).on("click", "#naverBtn", function() {
-			$.ajax( {
+			$.ajax({
 				type: "POST",
-				url : '/order/create/order',
+				url : '/order/create/preOrder',
 				dataType : 'html',
-				data : {cartSq : 8},
+				data : {
+					pgGb			: "NAVER"
+					, custNo		: [[${sessionInfo.custNo}]]
+					, ordNo			: 1000
+					, goodsNm		: "상품 테스트"
+					, payAmt		: 10
+					, ordGoodsQty	: [[${goodsTotCnt}]]
+				},
+				error : function(e) {
+					console.log(e.responseText);
+				},
 				success : function(result) {
 					$("#order_info").html(result);
 					fnNaverPaymentReady();
 				}
 			});
+			//let url = '/order/create/preOrder';
+			//let data = {};
+			//data.pgGb = 'NAVER';
+			//data.ordNo = 1000;
+			//data.custNo = [[${sessionInfo.custNo}]];
+			//data.goodsNm = "상품 테스트";
+			//data.ordGoodsQty = [[${goodsTotCnt}]];
+			//data.payAmt = 30000;
+			//
+			//let jsonData = JSON.stringify(data);
+			//
+			//gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			//	$("#order_info").html(result);
+			//	fnNaverPaymentReady();
+			//});
 		});
 		
 		// 네이버페이 결제준비 처리
 		var fnNaverPaymentReady = function() {
-			const protocol = 'http:';
-			let url = '/order/naver/payment/ready';
-			let redirectUrl = '/order/naver/payment/request';
-			let data = {};
-			data.ordNo = $('#order_info input[name=ordr_idxx]').val();
-			data.goodsNm = $('#order_info input[name=good_name]').val();
-			data.ordQty = $('#ordQty').text();
-			data.realOrdAmt = $('#order_info input[name=good_mny]').val();
-			data.returnUrl = protocol + _frontUrl + redirectUrl;
+			let naverPayUrl = 'https://' + [[${@environment.getProperty('naverPay.payUrl.web')}]];
+			let reserveId = $('#order_info input[name=reserveId]').val();
+			let url = naverPayUrl + '/payments/' + reserveId;
+			console.log(url);
+			let option = 'width=750, height=' + $(window).height();
 			
-			let jsonData = JSON.stringify(data);
-			
-			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-				let reserveId = result.naverPay.body.reserveId;
-				let url = "https://test-pay.naver.com/payments/" + reserveId;
-				let option = 'width=750, height=' + $(window).height();
-
-				window.open(url, 'naverPaymentPopup', option);
-			});
+			window.open(url, 'naverPaymentPopup', option);
 		}
 
 		// 네이버페이 결제 승인 요청
 		var fnNaverPaymentRequest = function(paymentId) {
-			$('#order_info').append('<input type=hidden name="pgTid" value="' + paymentId + '" />');
-
+			$('#order_info input[name=pgTid]').val(paymentId);
+			
+			// TODO
+			// formSubmit
+			
+			// 테스트용 호출
 			let url = '/order/naver/payment/approve';
 			let data = {};
 			data.pgTid = $('#order_info input[name=pgTid]').val();
@@ -286,7 +252,7 @@
 			return true;
 		}
 		
-		// 네이버페이 결제 정보 조회
+		// 네이버페이 결제 정보 조회 (테스트용 호출)
 		var fnNaverPaymentOrder = function() {
 			let url = '/order/naver/payment/order';
 			let data = {};
@@ -304,23 +270,21 @@
 			return true;
 		}
 
-		// 네이버페이 결제 취소
+		// 네이버페이 결제 취소 (테스트용 호출)
 		var fnCancelNaverPayment = function() {
 			let url = '/order/naver/payment/cancel';
 			let data = {};
 			data.pgTid = $('#order_info input[name=pgTid]').val();
 			data.cancelRequester = '1';
-			data.cancelReason = '고객변심';
-			data.cnclRtnAmt = 1000;
-			//data.allCanYn = 'Y';
-			
+			data.chgReasonNm = '고객변심';
+			data.payAmt = 5;
+
 			let jsonData = JSON.stringify(data);
-			
+
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
 				console.log('====== naverPaymentCancel ======');
 				console.log(result.kakaoPay);
 				console.log(' ');
-				
 			});
 		}
 	</script>
@@ -1889,4 +1853,4 @@ $(document).ready( function() {
 
 </th:block>
 </body>
-</html>
+</html>

+ 16 - 0
src/main/webapp/WEB-INF/views/web/pg/kcpOrderWeb.html

@@ -63,4 +63,20 @@
 	<input type="hidden" name="cash_yn"         value=""/>
 	<input type="hidden" name="cash_tr_code"    value=""/>
 	<input type="hidden" name="cash_id_info"    value=""/>
+
+	<!-- 카카오페이 관련 정보 -->
+	<input type="hidden" name="pgTid" th:value="${payment.pgTid}"/>
+	<input type="hidden" name="partnerOrderId" th:value="${payment.partnerOrderId}"/>
+	<input type="hidden" name="partnerUserId" th:value="${payment.partnerUserId}"/>
+	<input type="hidden" name="pgToken" value=""/>
+	<input type="hidden" name="nextRedirectAppUrl" th:value="${payment.nextRedirectAppUrl}"/>
+	<input type="hidden" name="nextRedirectMobileUrl" th:value="${payment.nextRedirectMobileUrl}"/>
+	<input type="hidden" name="nextRedirectPcUrl" th:value="${payment.nextRedirectPcUrl}"/>
+	<input type="hidden" name="androidAppScheme" th:value="${payment.androidAppScheme}"/>
+	<input type="hidden" name="iosAppScheme" th:value="${payment.iosAppScheme}"/>
+
+	<!-- 네이버페이 관련 정보 -->
+	<input type="hidden" name="reserveId" th:value="${payment.reserveId}"/>
+	<input type="hidden" name="paymentId" value=""/>
+
 </html>

+ 36 - 0
src/main/webapp/ux/pc/js/payment.js

@@ -0,0 +1,36 @@
+/****************************************************************/
+/* m_Completepayment  설명                                      */
+/****************************************************************/
+/* 인증완료시 재귀 함수                                         */
+/* 해당 함수명은 절대 변경하면 안됩니다.                        */
+/* 해당 함수의 위치는 payplus.js 보다먼저 선언되어여 합니다.    */
+/* Web 방식의 경우 리턴 값이 form 으로 넘어옴                   */
+/****************************************************************/
+function m_Completepayment( FormOrJson, closeEvent )
+{
+	var frm = document.order_info;
+	
+	/********************************************************************/
+	/* FormOrJson은 가맹점 임의 활용 금지                               */
+	/* frm 값에 FormOrJson 값이 설정 됨 frm 값으로 활용 하셔야 됩니다.  */
+	/* FormOrJson 값을 활용 하시려면 기술지원팀으로 문의바랍니다.       */
+	/********************************************************************/
+	GetField( frm, FormOrJson );
+	
+	
+	if( frm.res_cd.value == "0000" ) {
+		frm.submit();
+	} else {
+		alert( "[" + frm.res_cd.value + "] " + frm.res_msg.value );
+		closeEvent();
+	}
+}
+
+/* 표준웹 실행 */
+function jsf__pay( form ) {
+	try {
+		KCP_Pay_Execute( form );
+	} catch (e) {
+		/* IE 에서 결제 정상종료시 throw로 스크립트 종료 */
+	}
+}