diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java index 7068e34e..aaaf1e94 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java @@ -862,35 +862,38 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements 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 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements }else if("W".equals(kakaoVO.getBizKakaoImageType())){ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice()); } - kakaoType = "친구톡"; } // 예시: 각 건당 가격이 이미 String 형태라면 변환 BigDecimal eachPrice = new BigDecimal(kakaoVO.getEachPrice()); @@ -907,33 +909,23 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements // 차이 계산 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 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements } - // 대체문자 성공이면 환불 완료처리면 한다. - 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 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements vo.getMsgGroupId(), vo.getUserData() ); - - // 해당 row 환불 처리 (mj_msg_data.REFUND_YN = 'Y') - mjonMsgDAO.updateRefundY(vo); } @Override diff --git a/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java b/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java index aa1757ad..a75898d0 100644 --- a/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java +++ b/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java @@ -441,11 +441,14 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements public void kakaoFailPayBack() throws Exception { // 카카오 알림톡 환불 처리 - kakaoAlimTalkService.selectKakaoAtSentRefundList(); + //kakaoAlimTalkService.selectKakaoAtSentRefundList(); // 카카오 친구톡 환불 처리 - kakaoAlimTalkService.selectKakaoFtSentRefundList(); - + //kakaoAlimTalkService.selectKakaoFtSentRefundList(); + + // 카카오 알림톡, 친구톡 통합 환불 처리 + kakaoAlimTalkService.selectKakaoSentRefundList(); + } @Override