Jelajahi Sumber

이태영 - 20210306 PG 임시 커밋

xodud1202 5 tahun lalu
induk
melakukan
db31934468

+ 2 - 0
src/main/java/com/style24/front/biz/dao/TsfOrderDao.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.Payment;
 
 /**
  * 주문 Dao
@@ -84,4 +85,5 @@ public interface TsfOrderDao {
 	 */
 	int updateOrderDisplayYn(Order order);
 
+	int updatePaymentForOrderFinished(Payment param);
 }

+ 1 - 1
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -146,7 +146,7 @@ public class TsfCartService {
 		int i = 1;
 		for (Cart param : params) {
 			sb.append("SELECT CD.CART_SQ \n FROM TB_CART_DETAIL CD \n INNER JOIN TB_CART C \n ON CD.CART_SQ = C.CART_SQ \n WHERE C.CUST_NO = ");
-			// TODO 로그인 정보 확인
+
 			if (cart.getCustNo() == 0) {
 				sb.append(cart.getCustNo()).append("\n AND JSESSION_ID = '").append(cart.getJsessionId()).append("'");
 			} else {

+ 48 - 7
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -13,12 +13,15 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.service.TscKcpService;
 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.Order;
 import com.style24.persistence.domain.Payment;
 
@@ -217,27 +220,42 @@ public class TsfOrderService {
 
 	/**
 	 * PG 결제승인
-	 * @param param - 필수 : payGb(결제수단 : KCP, KAKAO 등), payMeans(결제수단 : G014_30(신용카드) 등), cashReceiptYn(현금영수증여부)
+	 * @param param - 필수 : pgGb(결제수단 : KCP, KAKAO 등), payMeans(결제수단 : G014_30(신용카드) 등)
 	 * @param request
 	 * @param response
 	 * @return
 	 */
+	@Transactional("shopTxnManager")
 	public Payment orderPgPayResult(Payment param, HttpServletRequest request, HttpServletResponse response) {
 		Payment result = new Payment();
+
 		try {
-			if(StringUtils.isEmpty(param.getPayGb())) {
+			if(StringUtils.isEmpty(param.getPgGb())) {
 				throw new IllegalArgumentException("결제수단을 선택해주세요.");
 			}
 
-			if("KCP".equals(param.getPayGb())) {
+			if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
 				result = coreKcpService.kcpPayRequest(param, request, response);
-			} else if ("PAYCO".equals(param.getPayGb())) {
-				result = null;
-			} else if ("KAKAO".equals(param.getPayGb())) {
+			} else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
 				result = null;
-			} else if ("NAVER".equals(param.getPayGb())) {
+			} else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {
 				result = null;
+			} else {
+				throw new IllegalArgumentException("결제 수단이 잘못 입력되었습니다. 새로고침 후 다시 시도해주세요.");
+			}
+
+			result.setPaySq(param.getPaySq());
+			result.setUpdNo(param.getCustNo());
+			result.setRegNo(param.getCustNo());
+
+			if(updatePaymentForOrderFinished(result) < 1) {
+				// TODO 전체 취소 로직 추가
+				coreKcpService.kcpPayRollBack(result, request);
+
+				throw new IllegalArgumentException("결제 정보 저장 실패. 새로고침 후 다시 시작해주세요.");
 			}
+
+			coreKcpService.kcpPayRollBack(result, request);
 		} catch(Exception e) {
 			e.printStackTrace();
 			throw new IllegalArgumentException(e.getMessage());
@@ -246,6 +264,11 @@ public class TsfOrderService {
 		return result;
 	}
 
+	@Transactional("shopTxnManager")
+	public int updatePaymentForOrderFinished(Payment param) {
+		return orderDao.updatePaymentForOrderFinished(param);
+	}
+
 	/**
 	 * 주문 상태 별 수량 조회
 	 *
@@ -309,4 +332,22 @@ public class TsfOrderService {
 	 */
 	public int updateOrderDisplayYn(Order order) { return orderDao.updateOrderDisplayYn(order); }
 
+	public Payment setPgDataInfo(Order order) {
+		Payment payment = new Payment();
+		if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) {			// 카카오페이
+			// TODO 카카오페이 데이터 세팅
+			payment = null;
+		} else if(TscConstants.PgGb.NAVER.value().equals(order.getPgGb())) {	// 네이버페이
+			// TODO 네이버페이 데이터 세팅
+			payment = null;
+		} else if(TscConstants.PgGb.KCP.value().equals(order.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(order.getPgGb())){	// KCP, PAYCO
+			payment = coreKcpService.setKcpOrderData(order);
+		} else {
+			throw new IllegalArgumentException("결제타입이 잘못 선택되었습니다. 새로고침 후 다시 시도해주세요.");
+		}
+
+		payment.setPgGb(order.getPgGb());
+		payment.setPayMeans(order.getPayMeans());
+		return payment;
+	}
 }

+ 7 - 15
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -16,7 +16,6 @@ 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;
-import org.thymeleaf.util.StringUtils;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
@@ -30,7 +29,6 @@ import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfOrderService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
-import com.style24.persistence.domain.KakaoPay;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Payment;
 
@@ -483,7 +481,11 @@ public class TsfOrderController extends TsfBaseController {
 	public ModelAndView payResultResponse(Payment param, HttpServletRequest request, HttpServletResponse response) {
 		ModelAndView mav = new ModelAndView();
 
-		param.setPayGb("KCP");
+
+		// 테스트용 데이터 세팅
+		param.setPaySq(3);
+		param.setCustNo(TsfSession.getInfo().getCustNo() == null ? 0 : TsfSession.getInfo().getCustNo());
+		param.setUpdNo(param.getCustNo());
 
 		param = orderService.orderPgPayResult(param, request, response);
 
@@ -783,20 +785,10 @@ public class TsfOrderController extends TsfBaseController {
 
 		// TODO PG 데이터 세팅 처리 (order)
 		// 필수 데이터
-		// ordNo = 주문번호, goodsNm = 상품명, payAmt = 실결제금액, ordNm = 주문자명, ordPhnno = 휴대폰번호, custNo = 고객번호
+		// pgGb = 결제타입, payMeans = 결제수단, ordNo = 주문번호, goodsNm = 상품명, payAmt = 실결제금액, ordNm = 주문자명, ordPhnno = 휴대폰번호, custNo = 고객번호
 		// 선택 데이터
 		// ordEmail = 주문자메일, ordTelno = 전화번호
-
-		Payment payment = new Payment();
-		if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) {			// 카카오페이
-
-		} else if(TscConstants.PgGb.NAVER.value().equals(order.getPgGb())) {	// 네이버페이
-
-		} else if(TscConstants.PgGb.KCP.value().equals(order.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(order.getPgGb())){	// KCP, PAYCO
-			payment = coreOrderService.setKcpOrderData(order);
-		} else {
-			throw new IllegalArgumentException("결제타입이 잘못 선택되었습니다. 새로고침 후 다시 시도해주세요.");
-		}
+		Payment payment = orderService.setPgDataInfo(order);
 
 		mav.addObject("payment", payment);
 		//model.addAttribute("payment", payment);

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

@@ -322,4 +322,31 @@
 		     , UPD_DT = NOW()
 		 WHERE ORD_NO = #{ordNo}
 	</update>
+
+	<!-- 마이페이지 주문상세 주문내역삭제 처리 -->
+	<update id="updatePaymentForOrderFinished" parameterType="Payment">
+		/* TsfOrder.updatePaymentForOrderFinished */
+		UPDATE TB_PAYMENT SET
+			  PAY_DT = DATE_FORMAT(#{payDt} , '%Y%m%d%H%i%S')
+			, PAY_STAT = #{payStat}
+		    , PG_CPN_AMT = #{pgCpnAmt}
+			, NPAY_PNT_AMT = #{npayPntAmt}
+			, PG_TID = #{pgTid}
+			, PG_TRADE_NO = #{pgTradeNo}
+			, PG_SHOP_ID = #{pgShopId}
+			, CARD_TYPE = #{cardType}
+			, CARD_NM = #{cardNm}
+			, CARD_MIPS = #{cardMips}
+			, CARD_PCABLE_YN = #{cardPcableYn}
+			, VA_NO = #{vaNo}
+			, VA_BANK = #{vaBank}
+			, VA_DEADLINE = DATE_FORMAT(#{vaDeadline} , '%Y%m%d%H%i%S')
+			, TELECOM = #{telecom}
+			, CASH_AUTH_NO = #{cashAuthNo}
+			, CASH_TRADE_NO = #{cashTradeNo}
+			, UPD_NO = #{updNo}
+			, UPD_DT = NOW()
+		WHERE PAY_SQ = #{paySq}
+		  AND ORD_NO = #{ordNo}
+	</update>
 </mapper>

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

@@ -73,7 +73,17 @@
 				type: "POST",
 				url : '/order/create/order',
 				dataType : 'html',
-				data : {cartSq : 8},
+				data : {
+					  pgGb		: "PAYCO"
+					, payMeans	: "G014_10"
+					, ordNo		: "5"
+					, goodsNm	: "상품 테스트"
+					, payAmt	: "1233"
+					, ordNm		: "이태영"
+					, ordEmail	: "xodud1202@naver.com"
+					, ordTelno	: "02-0000-0000"
+					, ordPhnno	: "010-7111-0000"
+				},
 				error : function(e) {
 					alert(3);
 				},

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

@@ -3,6 +3,9 @@
 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
 <meta http-equiv="Pragma" content="no-cache">
 <meta http-equiv="Expires" content="-1">
+	<!-- 주문 데이터 -->
+	<input type="hidden" name="pgGb"		th:value="${payment.pgGb}" />
+	<input type="hidden" name="payMeans"	th:value="${payment.payMeans}" />
 
 	<!-- 선택, 상점이름(영문으로 작성권장) -->
 	<input type="hidden" name="site_name"	th:value="${payment.siteName}" />