놀랍게도 가상계좌 테스트도 가능한 아임 포트였다
진짜 카카오/네이버/아임 포트 진짜 감사합니다
시나리오
일반 결제
일반 결제 선택-> 서버에서 가격 전송-> 완료-> 검증-> 입금완료-> 예약 시도
가상결제
가상계좌 선택-> 서버에서 가격 전송-> 서버에서 입금일 생성-> 완료-> 검증-> 입금완료-> 예약 시도(임시)
가상계좌 입금 확인은
웹 훅을 이용해 야하기 때문에
포트 포워딩을 해야 한다
https://cordingmonster.tistory.com/140?category=1043621
프런트 서버
백엔드 서버
paymentService
가상계좌 기한을 계산하는 함수 하나씩 봐 보자
예약 시도 정보를 가지고 일을 만든다
String requestDate=getVankDateDto.getYear()+"-"+getVankDateDto.getMonth()+"-"+getVankDateDto.getDate();
예약 시도 일과 오늘 날짜의 차이를 구한다
long diffDays = utillService.getDateGap(getToday, requestDate);
(인터넷에 치면 많이 나오는 방법이다)
예약 시도 시간 중 가장 작은 시간이
현재시간보다 한 시간 이상인지 판별한다
paymentEnums enums=checkTime(getVankDateDto);
맞다면 입금 시간을 만들어서 준다
return utillService.makeJson(true,getVbankDate(diffDays, shortestTime, requestDate));
getVbankDate
1. 당일 인경우
2.period이하인 경우(지정해놓은 가상계상꼐좌 일수 보 다작은 경우)
3.period이상인 경우
당일인 경우/period이하인 경우
if(diffDays<period)
예약 시도 중 가장 작은 시간을 구해서 한 시간을 빼주고
즉 당일 3시라면 당일 두시까지 입금 되게 기한을 해주고
expiredDate=requestDate+" "+(shortestTime-minusHour)+":00:00";
새로 만든 시간+날짜를 해주는데 아임 포트 양식에 맞게
2yyy-mm-dd -hh-mm-ss 바꿔주고
if(temp[1].length()<2)
if(temp[2].length()<2)
if(splitTime[0].length()<2)
3.period이상이면
현재 날+시간에 지정한 period를 더해서
String expiredDate=LocalDateTime.now().plusDays(period).toString();
가운데 t 만 " "바꿔주고 던 저주자
expiredDate=expiredDate.replace("T", " ");
테스트
오늘은 2021-09-05 11:48:00
period=3
당일 시도 한 시간 텀 x
한 시간 텀 o
당일 14시 선택
아임 포트까지 연동해야 뜨는 화면입니다
당일은 x, period기간보다 작은 날
2021-9-7 17:00:00 선택
period이상인 날
2021-9-9 14:00:00 선택
아주 잘 작동한다!
이렇게 여러 개 선택해도 잘 작동한다
이유는 사용자가 선택한 날짜+시간은 배열로
서버로 준다음 검사하기 때문이다
이제 결제+예외처리를 하자 아니
가상계좌는 채번/채번 취소라고 부르는 거 같다
'Spring boot kim's Shop > 결제 시스템' 카테고리의 다른 글
Springboot 결제시스템!(6) 아임포트 환불!(미완성) (0) | 2021.09.07 |
---|---|
Springboot 결제시스템!(5) 가상계좌입금확인 +예약시스템 with아임포트 (0) | 2021.09.05 |
Springboot 결제시스템!(4) 가상계좌 +예약시스템 with아임포트 (0) | 2021.09.05 |
Springboot 결제시스템!(2) 아임포트 번외편 포트포워딩+웹훅! (0) | 2021.08.22 |
Springboot 결제시스템!(1) with 아임포트 결제 성공시 (0) | 2021.08.22 |