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

카카오페이 임시 커밋

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

+ 64 - 8
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -20,6 +20,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import org.thymeleaf.util.StringUtils;
 
 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.TscOrderService;
@@ -816,14 +817,19 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/kakao/payment/ready")
 	@ResponseBody
-	public KakaoPay kakaoPaymentReady(@RequestBody Order order) {
+	public GagaMap kakaoPaymentReady(@RequestBody Order order) {
+		GagaMap result = new GagaMap();
+
 		if (TsfSession.getInfo().getCustNo() == null) {
 			order.setCustNo(0);
 		} else {
 			order.setCustNo(TsfSession.getInfo().getCustNo());
 		}
 
-		return kakaoPayService.kakaoPaymentReady(order);
+		result.set("kakaoPay", kakaoPayService.kakaoPaymentReady(order));
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+
+		return result;
 	}
 
 	/**
@@ -856,18 +862,68 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@RequestMapping(value = "/kakao/payment/approve")
 	@ResponseBody
-	public Payment approveKakaoPayment(@RequestBody Order order) {
+	public GagaMap approveKakaoPayment(@RequestBody Order order) {
+		GagaMap result = new GagaMap();
+
 		if (TsfSession.getInfo().getCustNo() == null) {
 			order.setCustNo(0);
 		} else {
 			order.setCustNo(TsfSession.getInfo().getCustNo());
 		}
 
-		Payment payment = kakaoPayService.approveKakaoPayment(order);
-		
-		KakaoPay kakaoPay = kakaoPayService.getKakaoPaymentOrder(order);
-		log.info("kakaoPay >>> {}", kakaoPay);
+		result.set("payment", kakaoPayService.approveKakaoPayment(order));
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+
+		return result;
+	}
+
+	/**
+	 * 카카오페이 결제 조회
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 03. 04
+	 */
+	@RequestMapping(value = "/kakao/payment/order")
+	@ResponseBody
+	public GagaMap kakaoPaymentOrder(@RequestBody Order order) {
+		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("status", GagaResponseStatus.SUCCESS.getCode());
+
+		return result;
+	}
+
+	/**
+	 * 카카오페이 결제 취소
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 03. 04
+	 */
+	@RequestMapping(value = "/kakao/payment/cancel")
+	@ResponseBody
+	public GagaMap cancelKakaoPayment(@RequestBody Order order) {
+		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("status", GagaResponseStatus.SUCCESS.getCode());
 
-		return payment;
+		return result;
 	}
 }

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

@@ -72,6 +72,7 @@ kakao:
     paymentReadyUrl : https://kapi.kakao.com/v1/payment/ready
     approvePaymentUrl : https://kapi.kakao.com/v1/payment/approve
     paymentOrderUrl : https://kapi.kakao.com/v1/payment/order
+    cancelPaymentUrl : https://kapi.kakao.com/v1/payment/cancel
 
 # SPEEDY Image Upload
 speedy:

+ 27 - 8
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -114,6 +114,7 @@
 			});
 		});
 
+		// 카카오페이 결제준비 처리
 		var fnKakaoPaymentReady = function() {
 			const protocol = 'http:';
 			let url = '/order/kakao/payment/ready';
@@ -130,8 +131,8 @@
 			let jsonData = JSON.stringify(data);
 			
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-				let tid = result.tid;
-				let nextRedirectUrl = result.next_redirect_pc_url;
+				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 + '" />');
@@ -140,6 +141,7 @@
 			});
 		}
 
+		// 카카오페이 결제 승인 요청
 		var fnKakaoPaymentRequest = function(pgToken) {
 			$('#order_info').append('<input type=hidden name="pgToken" value="' + pgToken + '" />');
 
@@ -153,17 +155,16 @@
 			
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
 				console.log('====== kakaoPaymentRequest ======');
-				console.log(result);
+				console.log(result.payment);
 				console.log(' ');
 				fnKakaoPaymentOrder();
 			});
 			
 			return true;
 		}
-		
+
+		// 카카오페이 결제 정보 조회
 		var fnKakaoPaymentOrder = function() {
-			$('#order_info').append('<input type=hidden name="pgToken" value="' + pgToken + '" />');
-			
 			let url = '/order/kakao/payment/order';
 			let data = {};
 			data.pgTid = $('#order_info input[name=pgTid]').val();
@@ -172,13 +173,31 @@
 			
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
 				console.log('====== kakaoPaymentOrder ======');
-				console.log(result);
+				console.log(result.kakaoPay);
 				console.log(' ');
-				
+				fnCancelKakaoPayment();
 			});
 			
 			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';
+			
+			let jsonData = JSON.stringify(data);
+			
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+				console.log('====== kakaoPaymentCancel ======');
+				console.log(result.kakaoPay);
+				console.log(' ');
+				
+			});
+		}
 	</script>
 
 	<form id="kakao_order_info" name="order_info" method="post" action="/order/pay/result/response" >