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

Springboot 결제시스템!(5) 가상계좌입금확인 +예약시스템 with아임포트

디비드킴 2021. 9. 5. 23:41

자 이제 테스트 페이지에서 입금 확인을 만들어주자

시나리오
입금확인->어떤종류인지 확인(예약인지/상품인지)->DB수정
웹 훅을 해야 하기 때문에
포트 포워딩을 꼭 해야 한다

restcontroller

restcontroller.java

아임 포트 여기로 던져준다
cancel/ready/paid든

paymentService

paymentService.java

머 스타치 id가 vbank로 시작하는지 검사하자
if(status.equals("paid")&&merchantUid.startsWith("vbank"))
맞다면 impid를 이용해 찾는다
vBankDto vBankDto=vbankDao.findByPaymentId(paymentId);
상품/예약에 따라 테이블에 접근해 상태를 수정해준다
if(vBankDto.getKind().equals("reservation"))
결제된 상품 테이블에 등록해준다
insertPayment(nomalPayment, vBankDto.getPrice());
미결제 테이블에서 제거해준다
vbankDao.delete(vBankDto);

가상계좌 결제 시 impid앞에 붙는 vbank는
프런트에서 붙여 준다 즉 아주 자유롭게 조작이 가능하다
그러므로 구매 시 검증 로직을 추가해준다

iamportService
confrimBuy

iamportService.java

가상계좌 결제 시=ready상태 결제가 이뤄졌을 시
vbank로 시작하지 않았다면 예외를 일으켜서 매번 취소를 한다
if(!merchantUid.startsWith("vbank"))

테스트
미완성된 예약 내역 페이지이다
레이아웃이야 이 정도로 끝낼 거고
예약 취소를 구현 중이다
다음 파트에서 설명해보자

http://localhost:3030/showReservationPage.html

아임포트

테스트 가상계좌 입금통보 호출을 누르면

아임포트

이렇게 바뀐다
정말 편리하게 테스트할 수 있다

vscode
vscode
테스트는 우체국이였다

mysql

깜빡하고 before를 안 찍었다
어쨌든 ready->paid/vbank->paid로 테이블이 이동되었다

http://localhost:3030/showReservationPage.html

페이지 역시 잘 반영된다
이제 예약 내역 페이지를 소개해보자!