두 가지 시나리오가 있다
일반 결제 시
자리 선택-> 시간선택-> 일반 결제-> 검증-> 결제 검증-> 예약 완료
가상계 좌시
자리 선택-> 시간선택-> 가상계좌-> 검증-> 계좌발급-> 임시 예약 완료-> 입금 확인-> 예약 완료
일단 일반 결제부터 시작해보자!
프런트 서버
예약하기를 누르면->총가격을 서버에서 받아온다->결제-> 결제 후 서버로 전송
예약하기를 누르면 buy()가 실행된다
selectTime
체크되어있는 체크박스 값들을 가져온다
getprice
가격을 가져오는데
비동기가 아닌 동기로 가져와야 한다!
값이 0원이라면 message를 표시해주자
iamport
결제 로직 후 doInsert(rsp.imp_uid)로 검증을 하러 간다
doInsert
json으로 검증에 필요한 정보를 던져주고
결제 방법이 가상계좌인지 판단한다
if(result.expiredDate!=null)
백엔드 서버
1. 총 결제금액 서비스
2. 결제 검증 서비스
3. 예약 서비스를 만들자
총 결제금액 서비스
예약 외에도 쓰일 서비스이다
(ex 빵/음료/기타 결제 시)
만들기 전 준비
상품 테이블을 만들어주고 정보를 넣어준다
(예약석은 count가 무의미하므로 임의로 100을 넣었다)
restcontroller
dto를 이용해 json을 바로 받는다
dao
상품명을 이용해 가격을 찾는다
priceService
상품정보를 찾는다
productDto productDto=selectProduct(getPriceDto.getProductName());
응답을 위해 json객체 생성
JSONObject jsonObject=new JSONObject();
검증을 한다
priceEnums priceEnums=confrimProudct(productDto, getPriceDto.getCount().size());
confrimProduct
요청 수량 검사
if(count<=0)
존재하는 상품인지 검사
else if(productDto==null)
재고 검사
}else if(productDto.getCount()<=0)
상황에 따른 이넘적용
priceEnums.valueOf(selectEnum).setMessege(messege);
priceEnums.valueOf(selectEnum).setPrice(enumPrice);
테스트
500원석 한 시간=500원
1000원석 한 시간=1000원
1500원석 두 시간=3000원
2000원석 세 시간=6000원
실패 테스트
선택 자리 0
존재하지 않는 상품 전송
a-4->a-5
성공!
재고 검사는
나중에 커피/빵 제품에서 검사해보고
예약은 시간으로 검사하기 때문에
예약 서비스에서 구현해놓자!
이제 예약 서비스로 가보자
'Spring boot kim's Shop > 예약시스템' 카테고리의 다른 글
Springboot 예약내역페이지!(1) 예약내역 보여주기(페이징)+ jpa+mysql inner join (0) | 2021.09.06 |
---|---|
Springboot 예약시스템!(3) 일반결제+예약+예외처리+아임포트 (0) | 2021.08.28 |
Springboot 예약시스템 만들기!(1) 연/월/일/요일 뿌리기! (2) | 2021.08.21 |