Procházet zdrojové kódy

Merge branch 'naverPayDecision' into develop

card007 před 4 roky
rodič
revize
41938e71e3

+ 19 - 1
src/main/java/com/style24/batch/biz/dao/TsbOrderDao.java

@@ -6,7 +6,6 @@ import org.springframework.stereotype.Repository;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.Point;
 
 /**
  * 주문 Dao
@@ -45,4 +44,23 @@ public interface TsbOrderDao {
 	 * @since  2021. 07. 13
 	 */
 	Collection<Order> getOrderDepositWaitingCustomerList();
+
+	/**
+	 * 네이버페이 결제형 구매확정 대상 리스트 조회
+	 * 
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 09. 20
+	 */
+	Collection<Order> getNaverPayOrderDecisionList();
+
+	/**
+	 * 네이버페이 결제형 구매확정 여부 수정
+	 * 
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	int updateNaverPayOrderDecision(Order order);
 }

+ 79 - 0
src/main/java/com/style24/batch/biz/job/naverpay/TsbNaverPayOrderDecisionJob.java

@@ -0,0 +1,79 @@
+package com.style24.batch.biz.job.naverpay;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbOrderService;
+import com.style24.core.biz.service.TscNaverPayService;
+import com.style24.persistence.domain.Order;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 네이버페이 결제형 구매확정 처리 
+ *
+ * @author card007
+ * @since 2021. 09. 23
+ */
+@Component
+@Slf4j
+public class TsbNaverPayOrderDecisionJob extends TsbAbstractJob<Collection<Order>, Collection<Order> , Collection<Order>> {
+
+	@Autowired
+	private TsbOrderService orderService;
+	
+	@Autowired
+	private TscNaverPayService coreNaverPayService;
+
+	private int succCnt = 0;
+	private int failCnt = 0;
+
+	@Override
+	public Collection<Order> read() throws Exception {
+		// 네이버페이 결제형 구매확정 대상 리스트 조회
+		return orderService.getNaverPayOrderDecisionList();
+	}
+
+	@Override
+	public Collection<Order> process(Collection<Order> dataList) throws Exception {
+		succCnt = 0;
+		failCnt = 0;
+
+		for(Order order: dataList) {
+			try {
+				Order result = coreNaverPayService.decideNaverPayOrder(order);
+
+				// 성공
+				if ("200".equals(result.getResultCd()) && "Success".equals(result.getResultMsg())) {
+					// 네이버페이 결제형 구매확정 여부 수정
+					orderService.updateNaverPayOrderDecision(result);
+
+					succCnt++;
+				}
+				// 실패
+				else {
+					failCnt++;
+				}
+			}catch(Exception e) {
+				e.printStackTrace();
+
+				failCnt++;
+			}
+		}
+		return dataList;
+	}
+
+	@Override
+	public Collection<Order> write(Collection<Order> dataList) throws Exception {
+		return dataList;
+	}
+
+	@Override
+	public void notify(Collection<Order> invoiceList) throws Exception {
+		super.printResult(succCnt, failCnt);
+	}
+
+}

+ 19 - 2
src/main/java/com/style24/batch/biz/service/TsbOrderService.java

@@ -6,9 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.batch.biz.dao.TsbOrderDao;
-import com.style24.batch.biz.dao.TsbPointDao;
 import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.Point;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -56,4 +54,23 @@ public class TsbOrderService {
 	public Collection<Order> getOrderDepositWaitingCustomerList() {
 		return orderDao.getOrderDepositWaitingCustomerList();
 	}
+
+	/**
+	 * 네이버페이 결제형 구매확정 대상 리스트 조회
+	 * 
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	public Collection<Order> getNaverPayOrderDecisionList() { return orderDao.getNaverPayOrderDecisionList(); }
+
+	/**
+	 * 네이버페이 결제형 구매확정 여부 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	public int updateNaverPayOrderDecision(Order order) { return orderDao.updateNaverPayOrderDecision(order); }
 }

+ 30 - 2
src/main/java/com/style24/batch/biz/task/TsbNaverPayTask.java

@@ -1,11 +1,22 @@
 package com.style24.batch.biz.task;
 
-import com.style24.batch.biz.job.naverpay.*;
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import com.style24.batch.biz.job.naverpay.TsbNaverPayOrderDecisionJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderCancelCompleteJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderCancelReqJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderCompleteJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderConfirmJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderExchangeReqJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderReturnReqJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvWdInvoiceNoJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPaySendReadyDeliveryJob;
+
+import lombok.extern.slf4j.Slf4j;
+
 /**
  *
  * 네이버페이 주문형 Task
@@ -40,6 +51,9 @@ public class TsbNaverPayTask {
 	@Autowired
 	private TsbNaverPayRecvWdInvoiceNoJob recvWdInvoiceNoJob;
 
+	@Autowired
+	private TsbNaverPayOrderDecisionJob naverPayOrderDecisionJob;
+
 	/**
 	 * 네이버페이 주문형 배치 실행
 	 *
@@ -92,4 +106,18 @@ public class TsbNaverPayTask {
 
 		// // 교환 반려 주문 정보 송신 > 관리자 교환반려 버튼 클릭시 송부로 변경 (완료)
 	}
+
+	/**
+	 * 네이버페이 결제형 구매확정
+	 *
+	 * @throws Exception
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	// @Scheduled(cron = "${cron.naverPay.order.decision}")
+	@Scheduled(fixedDelay = 3500000)
+	@Async
+	public void orderDecision() throws Exception {
+		naverPayOrderDecisionJob.runById("cron.naverPay.order.decision");
+	}
 }

+ 8 - 1
src/main/java/com/style24/batch/biz/task/TsbOrderTask.java

@@ -1,11 +1,18 @@
 package com.style24.batch.biz.task;
 
-import com.style24.batch.biz.job.order.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import com.style24.batch.biz.job.order.TsbCartAddCouponPushJob;
+import com.style24.batch.biz.job.order.TsbCartExpirationJob;
+import com.style24.batch.biz.job.order.TsbCartUnpurchasePushJob;
+import com.style24.batch.biz.job.order.TsbOrderDepositExpirationJob;
+import com.style24.batch.biz.job.order.TsbOrderDepositWaitingNotifyJob;
+import com.style24.batch.biz.job.order.TsbOrderGiftExpirationJob;
+import com.style24.batch.biz.job.order.TsbWishAddCouponPushJob;
+
 import lombok.extern.slf4j.Slf4j;
 
 /**

+ 31 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsbOrder.xml

@@ -69,4 +69,35 @@
 		AND    P.PAY_STAT = 'G016_10'
 		AND    CAST(P.VA_DEADLINE AS DATE) = CAST(NOW() AS DATE)
 	</select>
+	
+	<!-- 네이버페이 결제형 구매확정 대상 리스트 조회 -->
+	<select id="getNaverPayOrderDecisionList" resultType="Order">
+		/* TsbOrder.getNaverPayOrderDecisionList */
+		SELECT P.ORD_NO
+		     , P.PG_TID
+		  FROM TB_PAYMENT P
+		  INNER JOIN TB_ORDER_DETAIL OD
+		  ON P.ORD_NO = OD.ORD_NO
+		 WHERE P.PG_GB = 'NAVER'
+		   AND P.PAY_GB = 'O'
+		   AND P.PAY_STAT = 'G016_30'
+		   AND P.PAY_AMT <![CDATA[>]]> 0
+		   AND OD.ORD_EXCH_GB = 'O'
+		   AND OD.ORD_DTL_STAT IN ('G013_50', 'G013_60', 'G013_70')
+		   AND P.NPAY_DECISION_YN = 'N'
+		   AND P.PAY_DT <![CDATA[>]]> DATE_ADD(CURRENT_DATE, INTERVAL -15 DAY)
+		 GROUP BY P.ORD_NO, P.PG_TID
+	</select>
+	
+	<!-- 네이버페이 결제형 구매확정 여부 수정 -->
+	<update id="updateNaverPayOrderDecision" parameterType="Order">
+		/* TsbOrder.updateNaverPayOrderDecision */
+		UPDATE TB_PAYMENT
+		   SET NPAY_DECISION_YN = 'Y'
+		 WHERE ORD_NO = #{ordNo}
+		   AND NPAY_DECISION_YN = 'N'
+		   AND PAY_STAT = 'G016_30'
+		   AND PAY_GB = 'O'
+		   AND PAY_AMT <![CDATA[>]]> 0
+	</update>
 </mapper>

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

@@ -138,6 +138,7 @@ cron:
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                  #네이버페이 배치 실행 (20분배치)
     #naverPay.order.batch: 0 0/20 * 1/1 * *               #네이버페이 배치 실행 (20분배치). 네이버페이 검증 완료 후 access.license와 secret.key 설정 후 주석 해제
+    naverPay.order.decision: 2 22 2 29 2 ?              #네이버페이 결제형 구매확정
 
     #통계
     statistics:

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

@@ -145,6 +145,7 @@ cron:
 
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                 #네이버페이 배치 실행 (20분배치)
+    naverPay.order.decision: 2 22 2 29 2 ?              #네이버페이 결제형 구매확정
 
     #통계
     statistics:

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

@@ -145,6 +145,7 @@ cron:
 
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                 #네이버페이 배치 실행 (20분배치)
+    naverPay.order.decision: 2 22 2 29 2 ?              #네이버페이 결제형 구매확정
 
     #통계
     statistics:

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

@@ -138,6 +138,7 @@ cron:
 
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                  #네이버페이 배치 실행
+    naverPay.order.decision: 2 22 2 29 2 ?               #네이버페이 결제형 구매확정
 
     #통계
     statistics:

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

@@ -33,6 +33,7 @@ naver:
         approvePaymentUrl: /naverpay/payments/v2/apply/payment
         paymentOrderUrl: /naverpay/payments/v2/list/history
         cancelPaymentUrl: /naverpay/payments/v1/cancel
+        decideOrderUrl: /naverpay/payments/v1/purchase-confirm
 
 # 네이버페이 API
 naverPay:
@@ -44,6 +45,7 @@ naverPay:
     approvePaymentUrl: /naverpay/payments/v2/apply/payment
     paymentOrderUrl: /naverpay/payments/v2/list/history
     cancelPaymentUrl: /naverpay/payments/v1/cancel
+    decideOrderUrl: /naverpay/payments/v1/purchase-confirm
 
 # 핑거푸시
 fingerPush: