card007 5 лет назад
Родитель
Сommit
1d2913c17f

+ 52 - 3
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -23,6 +23,7 @@ import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscFreegiftService;
 import com.style24.core.biz.service.TscKakaoPayService;
+import com.style24.core.biz.service.TscNaverPayService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.biz.thirdparty.KakaoPayApi;
 import com.style24.core.support.env.TscConstants;
@@ -56,16 +57,19 @@ public class TsfOrderController extends TsfBaseController {
 
 	@Autowired
 	private TsfOrderService orderService;
-	
+
 	@Autowired
 	private TscFreegiftService coreFreegiftService;
-	
+
 	@Autowired
 	private TsfCartService cartService;
-	
+
 	@Autowired
 	private TscKakaoPayService kakaoPayService;
 
+	@Autowired
+	private TscNaverPayService naverPayService;
+
 	@Autowired
 	private Environment env;
 	
@@ -944,4 +948,49 @@ public class TsfOrderController extends TsfBaseController {
 
 		return result;
 	}
+
+	/**
+	 * 네이버페이 결제 요청 처리
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 03. 04
+	 */
+	@RequestMapping(value = "/naver/payment/request")
+	@ResponseBody
+	public ModelAndView naverPaymentRequest(@RequestParam(value = "reserveId", required = false) String reserveId) {
+		ModelAndView mav = new ModelAndView();
+
+		mav.addObject("reserveId", reserveId);
+
+		mav.setViewName(super.getDeviceViewName("/pg/NaverPaymentRequest"));
+
+		return mav;
+	}
+
+	/**
+	 * 네이버페이 결제준비 처리
+	 *
+	 * @param Order
+	 * @return NaverPay
+	 * @author card007
+	 * @since 2021. 03. 07
+	 */
+	@RequestMapping(value = "/naver/payment/ready")
+	@ResponseBody
+	public GagaMap naverPaymentReady(@RequestBody Order order) {
+		GagaMap result = new GagaMap();
+
+		if (TsfSession.getInfo().getCustNo() == null) {
+			order.setCustNo(0);
+		} else {
+			order.setCustNo(TsfSession.getInfo().getCustNo());
+		}
+
+		result.set("naverPay", naverPayService.naverPaymentReady(order));
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+
+		return result;
+	}
 }

+ 80 - 3
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -186,11 +186,88 @@
 
 			});
 		}
+
 	</script>
 
-	<form id="kakao_order_info" name="kakao_order_info" method="post" action="/order/pay/result/response" >
-		<input type="button" id="kakaoBtn" value="카카오테스트버튼" style="width:200px; height:200px;"/>
-	</form>
+	<!-- =========== 네이버페이 ============= -->
+	<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('naver.clientId')}]];
+		let naverPayClientId = '8TSWSyJMMUvOLKUySQx6';
+		let redirectUrl = '/order/naver/payment/request';
+		const protocol = 'http:';
+		
+		console.log('naverPayClientId : ' + naverPayClientId);
+		var oPay = Naver.Pay.create({
+			"mode" : "development",				// development or production
+			"clientId": naverPayClientId	// clientId
+		});
+		
+		console.log('oPay : ' + oPay);
+		$(document).on("click", "#naverBtn", function() {
+			$.ajax( {
+				type: "POST",
+				url : '/order/create/order',
+				dataType : 'html',
+				data : {cartSq : 8},
+				success : 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 jsonData = JSON.stringify(data);
+			
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+				console.log(result.naverPay);
+				let reserveId = result.naverPay.body.reserveId;
+				let url = "https://test-pay.naver.com/payments/" + reserveId;
+				console.log(url);
+				window.open(url, 'naverPaymentPopup');
+			});
+		}
+
+		// 카카오페이 결제 승인 요청
+		var fnNaverPaymentRequest = function(paymentId) {
+			$('#order_info').append('<input type=hidden name="paymentId" value="' + paymentId + '" />');
+			
+			console.log('paymentId : ' + paymentId);
+			
+			//let url = '/order/naver/payment/approve';
+			//let data = {};
+			//data.pgTid = $('#order_info input[name=pgTid]').val();
+			//data.ordNo = $('#order_info input[name=ordr_idxx]').val();
+			//data.pgToken = $('#order_info input[name=pgToken]').val();
+			//
+			//let jsonData = JSON.stringify(data);
+			//
+			//gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			//	console.log('====== kakaoPaymentRequest ======');
+			//	console.log(result.payment);
+			//	console.log(' ');
+			//	fnKakaoPaymentOrder();
+			//});
+			
+			return true;
+		}
+	</script>
+
+	<input type="button" id="kakaoBtn" value="카카오테스트버튼" style="width:200px; height:200px;"/>
+	<input type="button" id="naverBtn" value="네이버테스트버튼" style="width:200px; height:200px;"/>
 <!-- // card007 -->
 
 

+ 32 - 0
src/main/webapp/WEB-INF/views/web/pg/NaverPaymentRequestWeb.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : KakaoPaymentRequestWeb.html
+ * @desc    : 카카오페이 결제 요청 결과 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.04   card007     최초 작성
+ *******************************************************************************
+ -->
+<head th:replace="~{web/common/fragments/HeadWeb :: head}"></head>
+<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
+<th:block th:replace="~{web/common/fragments/ScriptsWeb :: scripts}"></th:block>
+<body>
+
+<script th:inline="javascript">
+	let paymentId = [[${paymentId}]];
+
+	$(document).ready(function() {
+		let result = opener.fnNaverPaymentRequest(paymentId);
+		if (result) {
+			self.close();
+		}
+	});
+</script>
+</body>
+</html>