JIWOO 2025-08-08
이지우 - 알림톡, 친구톡 환불 통합 처리 완료
@c3a5062b058c47cb2b6a4f29845fdd711edef32a
src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
--- src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
@@ -862,35 +862,38 @@
 		
 		for(KakaoVO kakaoVO : kakaoFtSentRefundList) {
 			System.out.println(kakaoVO.getMsgGroupId() +"________결과 : " +kakaoVO.getRsltCode() +"     대체문자 전송 : "+kakaoVO.getSubMsgSendYn());
+			kakaoVO.setMsgTypeTxt(AT_MSG_TYPE.equals(kakaoVO.getMsgType()) ? "알림톡" : "친구톡");
 			
-			if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//친구톡 발송 성공시
-				
+			if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {
+				//1.카카오톡 발송 성공
 				processKakaoSendCharge(kakaoVO); 
 				
-			}else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
-				//친구톡 발송 실패 했고, 대체문자 발송 했을 경우
+			}else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {//카카오톡 발송 실패, 대체문자 발송 신청 O
+				//2.카카오톡 발송 실패 + 대체문자 신청 O
 				handleAlternativeMessageScenario(kakaoVO);
 				
 			}else {
-				handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불");
+				//3.카카오톡 발송 실패 + 대체문자 신청 X : 전액 환불
+				handleRefund(kakaoVO, "카카오 " + kakaoVO.getMsgTypeTxt() + " 전송 실패로 인한 결제 금액 환불");
 			}
+			
+			//모든 유형 환불 완료 처리
+			mjonMsgDAO.updateRefundY(kakaoVO);
 		}
 	}
 	
 
 	private void processKakaoSendCharge(KakaoVO kakaoVO) throws Exception {
 		
-
+		//1-1.카카오톡 발송 성공 + 대체문자 신청 O : 대체문자 금액 환불
 		if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
 
 			BizKakaoPriceVO bizKakaoPriceVO = mjonPayDAO.selectBizKakaoPrice(kakaoVO.getMsgGroupId());
 			
 			BigDecimal sendPrice = null;
-			String kakaoType = "";
 			
 			if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
 				sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoAtPrice());
-				kakaoType = "알림톡";
 			}else {
 				if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){
 					sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice());
@@ -899,7 +902,6 @@
 				}else if("W".equals(kakaoVO.getBizKakaoImageType())){
 					sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice());
 				}
-				kakaoType = "친구톡";
 			}
 			// 예시: 각 건당 가격이 이미 String 형태라면 변환
 			BigDecimal eachPrice = new BigDecimal(kakaoVO.getEachPrice());
@@ -907,33 +909,23 @@
 			// 차이 계산
 			BigDecimal diffPrice = eachPrice.subtract(sendPrice);
 			
-			
+			//대체문자 비용(eachPrace - sendPrice)
 			if (diffPrice.compareTo(BigDecimal.ZERO) > 0) {
 				String result = diffPrice.toString();
 				kakaoVO.setEachPrice(result);
-				handleRefund(kakaoVO, "카카오 " + kakaoType + " 전송으로 인한 결재 차액 환불");
+				handleRefund(kakaoVO, "카카오 " + kakaoVO.getMsgTypeTxt() + " 발송 성공 후 대체문자 금액 환불");
 			}
 			
-		}else {
-			mjonMsgDAO.updateRefundY(kakaoVO);
-			
 		}
-		// TODO Auto-generated method stub
 		
+		//1-2.카카오톡 발송 성공 + 대체문자 신청 X : 금액 환불 X
 	}
 
 	private void handleAlternativeMessageScenario(KakaoVO kakaoVO) throws Exception {
 		KakaoVO bizLogVO = kakaoAlimTalkDAO.selectBizLog(kakaoVO.getBizUmid());
 		log.info("대체문자 전송 UMID: {}", kakaoVO.getBizUmid());
 	
-		// 알림톡 or 친구톡 구분
-		String kakaoType = "";
-		if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
-			kakaoType = "알림톡";
-		}else {
-			kakaoType = "친구톡";
-		}
-		// 대체문자가 성공적으로 발송되었는지 확인 (SMS 또는 MMS 성공)
+		//2-1.카카오톡 발송 실패 + 대체문자 발송 성공 : 금액 환불 X
 		boolean isAlternativeMessageSuccessful = false;
 		if (bizLogVO != null && StringUtils.isNotEmpty(bizLogVO.getBizLogCallStatus())) {
 			if (SMS_SUCCESS_CODE.equals(bizLogVO.getBizLogCallStatus()) 
@@ -945,13 +937,10 @@
 		}
 
 		
-		// 대체문자 성공이면 환불 완료처리면 한다.
-		if (isAlternativeMessageSuccessful) {
-			mjonMsgDAO.updateRefundY(kakaoVO);
-		} else {
-			// 대체문자 발송 실패 된 경우 (친구톡 비용 환불 필요)
-			handleRefund(kakaoVO, "카카오 " + kakaoType + " 전송 실패로 인한 결재 금액 환불");
-		}
+		//2-2.카카오톡 발송 실패 + 대체문자 발송 실패 : 전액 환불
+		if (!isAlternativeMessageSuccessful) {
+			handleRefund(kakaoVO, "카카오 " + kakaoVO.getMsgTypeTxt() + " 전송 실패로 인한 결재 금액 환불");
+		} 
 	}
 	
 	private void handleRefund(KakaoVO vo, String msg) throws Exception {
@@ -964,9 +953,6 @@
 			vo.getMsgGroupId(),
 			vo.getUserData()
 		);
-		
-		// 해당 row 환불 처리 (mj_msg_data.REFUND_YN = 'Y')
-		mjonMsgDAO.updateRefundY(vo);
 	}
 
 	@Override
src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
--- src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
+++ src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
@@ -441,11 +441,14 @@
 	public void kakaoFailPayBack() throws Exception {
 
 		// 카카오 알림톡 환불 처리
-		kakaoAlimTalkService.selectKakaoAtSentRefundList();
+		//kakaoAlimTalkService.selectKakaoAtSentRefundList();
 
 		// 카카오 친구톡 환불 처리
-		kakaoAlimTalkService.selectKakaoFtSentRefundList();
-
+		//kakaoAlimTalkService.selectKakaoFtSentRefundList();
+		
+		// 카카오 알림톡, 친구톡 통합 환불 처리
+		kakaoAlimTalkService.selectKakaoSentRefundList();
+		
 	}
 
 	@Override
Add a comment
List