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

Springboot 결제시스템!(4) 가상계좌 +예약시스템 with아임포트

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

이제 검증/예외처리를 해보자

 

검증은 일반 결제랑 비슷하다

토큰 받고->정보 받고->검증

 

iamportService

iamportService.java

오우 쒯 너무 길다

구매자 정보 확인

confrimBuyerinfor(userDtobuyInfortotalPrice)

가상계좌라면

else if(status.equals("ready"))

vbank테이블에 들어갈 클래스 

vbankPayment vbankPayment=new vbankPayment()

예외 터질 시 매번 취소를 위해 세션에 정보 저장

httpSession.setAttribute("merchantUid",buyInfor.get("merchant_uid"))외 6줄

일반 결제랑 크게 다를 게 없다 

다만 채번 취소가 좀 다르다

 

채번 취소

errorRestController

errorRestController.java

예약 시도 중 예외가 터지면 여기로 오게 된다

가상계좌라면 

httpSession.getAttribute("kind").equals("vbank")

세션-> json

JSONObject jsonObject=new JSONObject();

 

iamportService

iamportService.java

delete 요청으로 해야 취소된다

restTemplate.exchange("https://api.iamport.kr/vbanks/"+paymentid,HttpMethod.DELETE,entity,JSONObject.class);

 

테스트

 

예외 테스트 

고의로 예외를 마지막에 넣어두고

before

mysql
http://localhost:3030/reservationPagevar3.html
mysql

변화가 없다 

vscode

"reason":"발급된 가상계좌를 말소합니다."라는 메시지가 있다

 

정상적 예약 시도

http://localhost:3030/reservationPagevar3.html
mysql

예약

| 62 | 2021-09-05 12:34:36 | 2021-09-05 17:00:00 | kim@kim.com | 김준영 | imp_850827016164 | 2021-09-05 00:00:00 | a-4  | ready  |   17 | 기업은행      |
| 63 | 2021-09-05 12:34:36 | 2021-09-05 18:00:00 | kim@kim.com | 김준영 | imp_850827016164 | 2021-09-05 00:00:00 | a-4  | ready  |   18 | 기업은행      |
| 64 | 2021-09-05 12:34:36 | 2021-09-05 20:00:00 | kim@kim.com | 김준영 | imp_850827016164 | 2021-09-05 00:00:00 | a-4  | ready  |   20 | 기업은행

vbank

| 144 | 기업은행   | 2021-09-05 12:34:36 | kim@kim.com | 2021-09-05 16:00:00 | imp_850827016164 |  6000 | ready  | 07502310897088 | 김준영 | reservation | 003       | (주)케이지 이니시 |

모두 잘 들어왔고 입금 시간도 아주 잘 되어있다

(2021-09-05 16:00:00)

 

이제

두 가지가 있다

1.예약 내역 페이지에서 결제정보 보여주기!

2.입금확인처리

3.가상계좌 미입금 시 재고정리

(spring 스케줄러+spring 배치로 구현했다)

 

+가상계좌로 결제를 했다면

http://localhost:3030/reservationPagevar3.html

메시지가 출력되게 하자!

 

입금확인처리로 가보자!