이지우 - 알림톡, 친구톡 환불 통합 처리 완료

This commit is contained in:
JIWOO 2025-08-08 12:44:19 +09:00
parent a3b1153049
commit c3a5062b05
2 changed files with 25 additions and 36 deletions

View File

@ -862,35 +862,38 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
for(KakaoVO kakaoVO : kakaoFtSentRefundList) { for(KakaoVO kakaoVO : kakaoFtSentRefundList) {
System.out.println(kakaoVO.getMsgGroupId() +"________결과 : " +kakaoVO.getRsltCode() +" 대체문자 전송 : "+kakaoVO.getSubMsgSendYn()); 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); processKakaoSendCharge(kakaoVO);
}else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) { }else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {//카카오톡 발송 실패, 대체문자 발송 신청 O
//친구톡 발송 실패 했고, 대체문자 발송 했을 경우 //2.카카오톡 발송 실패 + 대체문자 신청 O
handleAlternativeMessageScenario(kakaoVO); handleAlternativeMessageScenario(kakaoVO);
}else { }else {
handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불"); //3.카카오톡 발송 실패 + 대체문자 신청 X : 전액 환불
handleRefund(kakaoVO, "카카오 " + kakaoVO.getMsgTypeTxt() + " 전송 실패로 인한 결제 금액 환불");
} }
//모든 유형 환불 완료 처리
mjonMsgDAO.updateRefundY(kakaoVO);
} }
} }
private void processKakaoSendCharge(KakaoVO kakaoVO) throws Exception { private void processKakaoSendCharge(KakaoVO kakaoVO) throws Exception {
//1-1.카카오톡 발송 성공 + 대체문자 신청 O : 대체문자 금액 환불
if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) { if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
BizKakaoPriceVO bizKakaoPriceVO = mjonPayDAO.selectBizKakaoPrice(kakaoVO.getMsgGroupId()); BizKakaoPriceVO bizKakaoPriceVO = mjonPayDAO.selectBizKakaoPrice(kakaoVO.getMsgGroupId());
BigDecimal sendPrice = null; BigDecimal sendPrice = null;
String kakaoType = "";
if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){ if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoAtPrice()); sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoAtPrice());
kakaoType = "알림톡";
}else { }else {
if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){ if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice()); sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice());
@ -899,7 +902,6 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
}else if("W".equals(kakaoVO.getBizKakaoImageType())){ }else if("W".equals(kakaoVO.getBizKakaoImageType())){
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice()); sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice());
} }
kakaoType = "친구톡";
} }
// 예시: 건당 가격이 이미 String 형태라면 변환 // 예시: 건당 가격이 이미 String 형태라면 변환
BigDecimal eachPrice = new BigDecimal(kakaoVO.getEachPrice()); BigDecimal eachPrice = new BigDecimal(kakaoVO.getEachPrice());
@ -907,33 +909,23 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
// 차이 계산 // 차이 계산
BigDecimal diffPrice = eachPrice.subtract(sendPrice); BigDecimal diffPrice = eachPrice.subtract(sendPrice);
//대체문자 비용(eachPrace - sendPrice)
if (diffPrice.compareTo(BigDecimal.ZERO) > 0) { if (diffPrice.compareTo(BigDecimal.ZERO) > 0) {
String result = diffPrice.toString(); String result = diffPrice.toString();
kakaoVO.setEachPrice(result); 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 { private void handleAlternativeMessageScenario(KakaoVO kakaoVO) throws Exception {
KakaoVO bizLogVO = kakaoAlimTalkDAO.selectBizLog(kakaoVO.getBizUmid()); KakaoVO bizLogVO = kakaoAlimTalkDAO.selectBizLog(kakaoVO.getBizUmid());
log.info("대체문자 전송 UMID: {}", kakaoVO.getBizUmid()); log.info("대체문자 전송 UMID: {}", kakaoVO.getBizUmid());
// 알림톡 or 친구톡 구분 //2-1.카카오톡 발송 실패 + 대체문자 발송 성공 : 금액 환불 X
String kakaoType = "";
if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
kakaoType = "알림톡";
}else {
kakaoType = "친구톡";
}
// 대체문자가 성공적으로 발송되었는지 확인 (SMS 또는 MMS 성공)
boolean isAlternativeMessageSuccessful = false; boolean isAlternativeMessageSuccessful = false;
if (bizLogVO != null && StringUtils.isNotEmpty(bizLogVO.getBizLogCallStatus())) { if (bizLogVO != null && StringUtils.isNotEmpty(bizLogVO.getBizLogCallStatus())) {
if (SMS_SUCCESS_CODE.equals(bizLogVO.getBizLogCallStatus()) if (SMS_SUCCESS_CODE.equals(bizLogVO.getBizLogCallStatus())
@ -945,13 +937,10 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
} }
// 대체문자 성공이면 환불 완료처리면 한다. //2-2.카카오톡 발송 실패 + 대체문자 발송 실패 : 전액 환불
if (isAlternativeMessageSuccessful) { if (!isAlternativeMessageSuccessful) {
mjonMsgDAO.updateRefundY(kakaoVO); handleRefund(kakaoVO, "카카오 " + kakaoVO.getMsgTypeTxt() + " 전송 실패로 인한 결재 금액 환불");
} else { }
// 대체문자 발송 실패 경우 (친구톡 비용 환불 필요)
handleRefund(kakaoVO, "카카오 " + kakaoType + " 전송 실패로 인한 결재 금액 환불");
}
} }
private void handleRefund(KakaoVO vo, String msg) throws Exception { private void handleRefund(KakaoVO vo, String msg) throws Exception {
@ -964,9 +953,6 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
vo.getMsgGroupId(), vo.getMsgGroupId(),
vo.getUserData() vo.getUserData()
); );
// 해당 row 환불 처리 (mj_msg_data.REFUND_YN = 'Y')
mjonMsgDAO.updateRefundY(vo);
} }
@Override @Override

View File

@ -441,11 +441,14 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
public void kakaoFailPayBack() throws Exception { public void kakaoFailPayBack() throws Exception {
// 카카오 알림톡 환불 처리 // 카카오 알림톡 환불 처리
kakaoAlimTalkService.selectKakaoAtSentRefundList(); //kakaoAlimTalkService.selectKakaoAtSentRefundList();
// 카카오 친구톡 환불 처리 // 카카오 친구톡 환불 처리
kakaoAlimTalkService.selectKakaoFtSentRefundList(); //kakaoAlimTalkService.selectKakaoFtSentRefundList();
// 카카오 알림톡, 친구톡 통합 환불 처리
kakaoAlimTalkService.selectKakaoSentRefundList();
} }
@Override @Override