Closed Dolphin-PC closed 2 months ago
서버데이터
로 남아있다는 것임order
에 "PAY_BEFORE" 데이터가 있다면 -> 기존 구매창으로 이동order
에 "PAY_BEFORE" 데이터가 없다면 -> order
에 "STATUS::PAY_BEFORE" 데이터를 insert (단, product재고 감소)order
의 STATUS를 "PAY_COMPLETE"로 변경구매 제한시간을 10분
으로 두고 batch
를 통해 자동삭제하여, 재고 원상복구
시킴장바구니에서 상품구매(order, order_detail)로 이어지는 과정은
만약 이 과정에서, 오류가 발생한다면 재고수량이 감소된 채로 남아있을 것
이다.
이를 개선하기 위해, 롤백계획을 세웠다.
재고수량을 감소할 떄 오류발생 처리방법
으로, 순서는 아래와 같이 처리한다.
수량
데이터로, product
의 수량데이터를 감소시키면서, 주문상세의 수량을 증가시킨다.
Spring의 @Transactional기능이 절실하다.... 이래서 주요로직은 백엔드 서버에서 처리해야 한다....
관련커밋 : https://github.com/Dolphin-PC/Commerce/commit/8362cbb578a6a970c987b4dc72ab81bf7149f3b4
sequenceDiagram
actor User
participant 상품상세페이지
participant Order/OrderDetail
participant Product
participant Iamport
participant PayHistory
User->>상품상세페이지: 구매버튼 클릭
상품상세페이지-->>Order/OrderDetail: 생성
Order/OrderDetail-->>Product: 재고수량 우선감소
Iamport->>User: 결제창 불러오기
alt 결제 취소
Iamport-->>Product: 재고수량 원상복구
Product-->>Order/OrderDetail: 주문 삭제
else 결제 완료
Iamport->>User: 결제완료 화면 Redirect
User-->>Iamport: paymentId로 결제조회API 요청
Iamport-->>PayHistory: 결제내역 추가
PayHistory-->>Order/OrderDetail: 주문상태 업데이트(결제완료 확인)
end
[x] 상품 구매
아임포트 결제 SDK을 연동해 가상 결제를 진행해주세요.
결제 페이지 이동전 필요한 사용자 정보를 받아주는 Form 페이지를 만들어주세요.필요없음결제가 완료되면 DB에 새로운 ORDER를 생성해주세요.order_temp
테이블로 구매 전 데이터를 관리하려 했으나, order와 똑같은 구조로 불필요하다고 판단함)