Spring boot kim's Shop/결제 시스템

Springboot 결제시스템!(3) 가상계좌 날짜 발급 with아임포트

디비드킴 2021. 9. 5. 12:04

놀랍게도 가상계좌 테스트도 가능한 아임 포트였다

진짜 카카오/네이버/아임 포트 진짜 감사합니다

 

시나리오

일반 결제

일반 결제 선택-> 서버에서 가격 전송-> 완료-> 검증-> 입금완료-> 예약 시도

가상결제

가상계좌 선택-> 서버에서 가격 전송-> 서버에서 입금일 생성-> 완료-> 검증-> 입금완료-> 예약 시도(임시)

 

가상계좌 입금 확인은

웹 훅을 이용해 야하기 때문에

포트 포워딩을 해야 한다

https://cordingmonster.tistory.com/140?category=1043621 

 

Springboot 결제시스템!(2) 아임포트 번외편 포트포워딩+웹훅!

검증의 또 하나의 방법이 있는데 이건 이제 주로 가상계좌입금 확인용으로 쓰는 거 같다 아임 포트 관리자 페이지에 가면 웹 훅 설정이 있다 그래서 정보를 받을 url을 입력하면 되는데 그전에

cordingmonster.tistory.com

 

 

프런트 서버

js

백엔드 서버

paymentService

paymentService.java

가상계좌 기한을 계산하는 함수 하나씩 봐 보자

예약 시도 정보를 가지고 일을 만든다

String requestDate=getVankDateDto.getYear()+"-"+getVankDateDto.getMonth()+"-"+getVankDateDto.getDate();

예약 시도 일과 오늘 날짜의 차이를 구한다

long diffDays = utillService.getDateGap(getTodayrequestDate);

utillService.java

(인터넷에 치면 많이 나오는 방법이다)

예약 시도 시간 중 가장 작은 시간이 

현재시간보다 한 시간 이상인지 판별한다

paymentEnums enums=checkTime(getVankDateDto);

맞다면 입금 시간을 만들어서 준다

return utillService.makeJson(true,getVbankDate(diffDaysshortestTimerequestDate));

getVbankDate

paymentService.java

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

http://localhost:3030/reservationPagevar3.html

한 시간 텀 o

당일 14시 선택

vscode
kg이니시스

아임 포트까지 연동해야 뜨는 화면입니다 

 

당일은 x, period기간보다 작은 날

2021-9-7 17:00:00 선택 

vscode
kg이니시스

period이상인 날

2021-9-9 14:00:00 선택

vscode
kg이니시스

아주 잘 작동한다!

http://localhost:3030/reservationPagevar3.html

이렇게 여러 개 선택해도 잘 작동한다

이유는 사용자가 선택한 날짜+시간은 배열로

서버로 준다음 검사하기 때문이다

 

이제 결제+예외처리를 하자 아니

가상계좌는 채번/채번 취소라고 부르는 거 같다