Преглед изворни кода

카카오페이 임시 커밋

card007 пре 5 година
родитељ
комит
ab53458735

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

@@ -382,7 +382,7 @@ public class TsfCustomerController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 		GagaMap result = niceCertify.certifyCellPhone();
 
-		if (TscConstants.FrontGb.MOBIEL.value().equals(TsfSession.getFrontGb())) {
+		if (TscConstants.FrontGb.MOB.value().equals(TsfSession.getFrontGb())) {
 			mav.addObject("redirectUrl", redirectUrl); // 모바일만 사용
 		}
 
@@ -404,7 +404,7 @@ public class TsfCustomerController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 		GagaMap result = niceCertify.certifyIpin();
 
-		if (TscConstants.FrontGb.MOBIEL.value().equals(TsfSession.getFrontGb())) {
+		if (TscConstants.FrontGb.MOB.value().equals(TsfSession.getFrontGb())) {
 			mav.addObject("redirectUrl", redirectUrl); // 모바일만 사용
 		}
 
@@ -439,7 +439,7 @@ public class TsfCustomerController extends TsfBaseController {
 			authMethod = TscConstants.AuthMethod.IPIN.value();
 		}
 
-		if (TscConstants.FrontGb.MOBIEL.value().equals(TsfSession.getFrontGb())) {
+		if (TscConstants.FrontGb.MOB.value().equals(TsfSession.getFrontGb())) {
 			mav.addObject("redirectUrl", redirectUrl);
 		}
 

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

@@ -7,8 +7,11 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@@ -403,8 +406,53 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/kakao/payment/ready")
 	@ResponseBody
-	public GagaMap kakaoPaymentReady(Order order) {
+	public GagaMap kakaoPaymentReady(@RequestBody Order order) {
+		if (TsfSession.getInfo().getCustNo() == null) {
+			order.setCustNo(0);
+		} else {
+			order.setCustNo(TsfSession.getInfo().getCustNo());
+		}
+
 		return kakaoPayService.kakaoPaymentReady(order);
 	}
 
+	/**
+	 * 카카오페이 결제 요청 처리
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 03. 04
+	 */
+	@RequestMapping(value = "/kakao/payment/request")
+	@ResponseBody
+	public ModelAndView kakaoPaymentRequest(@RequestParam(value = "pg_token", required = false) String pgToken) {
+		ModelAndView mav = new ModelAndView();
+
+		mav.addObject("pgToken", pgToken);
+
+		mav.setViewName(super.getDeviceViewName("/pg/KakaoPaymentRequest"));
+
+		return mav;
+	}
+
+	/**
+	 * 카카오페이 결제 승인 처리
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 03. 04
+	 */
+	@RequestMapping(value = "/kakao/payment/approve")
+	@ResponseBody
+	public Payment approveKakaoPayment(@RequestBody Order order) {
+		if (TsfSession.getInfo().getCustNo() == null) {
+			order.setCustNo(0);
+		} else {
+			order.setCustNo(TsfSession.getInfo().getCustNo());
+		}
+		
+		return kakaoPayService.approveKakaoPayment(order);
+	}
 }

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

@@ -70,6 +70,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
+    approvePaymentUrl : https://kapi.kakao.com/v1/payment/approve
 
 # SPEEDY Image Upload
 speedy:

+ 62 - 1
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -94,7 +94,68 @@
 
 
 <!-- card007 -->
+	<script type="text/javascript">
+		$(document).on("click", "#kakaoBtn", function() {
+			$.ajax( {
+				type: "POST",
+				url : '/order/create/order',
+				dataType : 'html',
+				data : {cartSq : 8},
+				success : function(result) {
+					$("#order_info").html(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.tid;
+				let nextRedirectUrl = result.next_redirect_pc_url;
+				let option = 'width=420, height=520';
+				
+				$('#order_info').append('<input type=hidden name="pgTid" value="' + tid + '" />');
+
+				window.open(nextRedirectUrl, 'kakaoPaymentPopup', option);
+			});
+		}
+
+		var fnKakaoPaymentRequest = function(pgToken) {
+			$('#order_info').append('<input type=hidden name="pgToken" value="' + pgToken + '" />');
+
+			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.pgToken = $('#order_info input[name=pgToken]').val();
+			
+			let jsonData = JSON.stringify(data);
+			
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+				console.log(result);
+			});
+			
+			return true;
+		}
+	</script>
 
+	<form id="kakao_order_info" name="order_info" method="post" action="/order/pay/result/response" >
+		<input type="button" id="kakaoBtn" value="카카오테스트버튼" style="width:200px; height:200px;"/>
+	</form>
 <!-- // card007 -->
 
 
@@ -895,7 +956,7 @@
 							<div class="area_order">
 								<div class="tit_box">
 									<h3 class="subH2">주문내역</h3>
-									<span> <em class="number" th:text="${delvTotCnt}"></em>개의 상품</span>
+									<span> <em class="number" id="ordQty" th:text="${delvTotCnt}"></em>개의 상품</span>
 								</div>
 								<div class="od_item_box">
 								

+ 32 - 0
src/main/webapp/WEB-INF/views/web/pg/KakaoPaymentRequestWeb.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 pgToken = [[${pgToken}]];
+
+	$(document).ready(function() {
+		let result = opener.fnKakaoPaymentRequest(pgToken);
+		if (result) {
+			self.close();
+		}
+	});
+</script>
+</body>
+</html>