Skip to content

[TASK:2단계] 결제 처리 및 미결제 주문 자동 취소 #20

@oownahcohc

Description

@oownahcohc

요구사항

1. 결제 처리 기능

  • 사용자는 예약된 주문(PENDING)에 대해 결제를 요청할 수 있다.
  • 결제 요청 시 결제 금액이 주문 금액과 일치하는지 검증해야 한다.
  • 결제가 성공하면 주문 상태를 PAID로 변경하고, 결제 이력을 저장한다.
  • 외부 PG사 연동은 Mocking 처리하여 비즈니스 로직에 집중한다. << 이거 어떻게 할 지 판단 필요

2. 주문 자동 취소 및 재고 복구

  • 주문 예약 후 일정 시간(ex.5분) 내에 결제가 완료되지 않으면, 시스템은 해당 주문을 자동으로 취소(CANCELLED) 처리해야 한다.
  • 주문이 취소됨과 동시에, 차감되었던 재고(Stock)를 원래대로 복구해야 한다.

기술적 도전과제

1. 주문 결제 시간 만료 처리에 대한 고민

2. 결제와 취소 간의 동시성 이슈

  • if) 사용자가 만료 직전(4분 59초)에 결제를 시도하고, 동시에 스케줄러가(5분 00초) 주문 취소를 시도하는 경우
  • 주문은 취소됐는데 결제만 성공하거나, 결제는 성공했는데 재고가 복구되어버리는 정합성 불일치를 막기 위한 방어 로직 필요.

3. 재고 복구의 정합성

  • 주문 취소 트랜잭션과 재고 증가 트랜잭션이 하나로 묶여야 함.
  • 특히 재고 증가 시에도 1단계와 마찬가지로 동시성 제어에 대한 판단 필요.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions