ADR-T-060_선결제 슬롯 시스템 구조

ADR-T-060_선결제 슬롯 시스템 구조

# Architecture / Prepaid Slot System Overview

1. 목적

본 문서는 플랫폼의 선결제 슬롯 시스템 구조를 요약한다. 세부 도메인 규칙의 단일 원천(SoT)은 Domain ADR(DS-060~065)이다.

이 시스템은 다음 목표를 가진다.

시간 기반 슬롯 관리
발행자 직접 결제 구조
플랫폼 비정산 모델 유지
픽업 서비스 지원

플랫폼은 거래 중개 플랫폼이 아니라 시간 관리 인프라로 설계된다.


2. 시스템 구성

선결제 슬롯 시스템은 다음 구성요소로 이루어진다.

Slot Service
Reservation Service
Payment Redirect Handler
usage-verification / QR Service

구조 개요

User
 → Slot
 → Reservation
 → Payment
 → QR
 → Redemption

3. 핵심 원칙

시스템은 다음 원칙을 따른다.

결제 수령은 발행자가 수행한다
플랫폼은 결제 상태만 반영한다
슬롯은 제한된 자원이다
동시성 안전성이 중요하다

4. 상태 모델

슬롯 사용 흐름은 다음 상태 모델을 따른다.

issued
→ reserved
→ paid
→ redeemed

예외 상태

reserved → expired
reserved → payment_failed
paid → no_show

5. 슬롯 확보 흐름

슬롯 확보 과정

User selects slot
→ reservation 생성
→ 상태 reserved
→ 결제 시작

예약은 TTL 기반 임시 확보로 처리된다.

기본 설정

reservation TTL = 3 minutes

6. 결제 흐름

결제는 발행자 PG에서 진행된다.

User
→ Publisher PG
→ Payment approval
→ Redirect to platform

플랫폼은 결제 결과만 확인한다.

결제 흐름

reserved
→ PG payment
→ redirect
→ verify payment
→ paid

7. 결제 검증

리다이렉트 결과는 반드시 서버 검증을 수행한다. 검증/보정의 상세 규칙은 ADR-DS-062를 따른다.

Redirect received
→ order_id 확인
→ amount 확인
→ PG verify API
→ payment_status 확인

검증 성공 시

reservation → paid

8. 슬롯 수량 관리

슬롯 수량은 상태 기반 계산 방식을 사용한다. 수량 점유 상태 및 동시성 제어의 상세 규칙은 ADR-DS-064를 따른다.

슬롯 속성

slot.quantity

활성 예약

reserved
paid
redeemed
no_show

남은 수량

remaining =
slot.quantity
- capacity_consuming_count

이 방식은 다음 문제를 방지한다.

중복 판매
동시성 오류
수량 복구 오류

9. 픽업 흐름

결제 완료 이후 매장은 준비를 시작할 수 있다.

사용 흐름

paid
→ 사용자 방문
→ QR 스캔
→ redeemed

10. 노쇼 처리

픽업 시간 이후 일정 시간 지나면 노쇼 처리된다.

pickup_end + 15 minutes

상태 전이

paid → no_show

11. 결제 중 슬롯 잠금

결제 시작 시 슬롯은 잠긴다.

issued → reserved

reserved 상태는 수량을 점유한다.

만료 시

reserved → expired

12. 발행자 PG 구조

플랫폼은 결제를 직접 처리하지 않는다.

결제 구조

User
→ Publisher PG
→ Publisher Account

플랫폼의 PG 등록/시크릿 저장 규칙은 ADR-DS-065를 따른다.


13. Sequence Diagram

선결제 슬롯 흐름

User
 | select slot
 v
Platform
 | create reservation (reserved)
 v
PG Payment
 | user payment
 v
PG
 | redirect
 v
Platform
 | verify payment
 v
reservation → paid

14. Reservation Lifecycle

issued
 |
reserved
 | \
 |  payment_failed
 |
paid
 |
redeemed

만료 흐름

reserved → expired
paid → no_show

15. UX 원칙

UX는 다음 구조를 따른다.

현장결제

사용하기
→ 방문
→ 사용

선결제

선결제 후 사용
→ 결제
→ 방문
→ 픽업

선결제는 추가 단계가 아니라 행동 방식의 차이로 표현한다.


16. ADR 참조

이 설계 문서는 다음 ADR을 기반으로 한다.

ADR-DS-060  선결제 기능 도입
ADR-DS-061  결제 중 슬롯 확보 정책
ADR-DS-062  PG 리다이렉트 결제 확인
ADR-DS-063  선결제 픽업 슬롯 운영 정책
ADR-DS-064  슬롯 수량 관리 및 동시성 제어
ADR-DS-065  발행자 PG 연결 정책
ADR-U-060  선결제 슬롯 UX 구조

SoT 매핑

상태 모델/책임 경계         -> ADR-DS-060
결제 중 임시 확보(TTL)      -> ADR-DS-061
결제 검증/보정(idempotent)  -> ADR-DS-062
픽업 운영/노쇼             -> ADR-DS-063
수량 계산/동시성 제어       -> ADR-DS-064
PG 연결/키 등록 정책        -> ADR-DS-065
UX 표현 원칙               -> ADR-U-060

17. 확장 가능성

이 구조는 다음 서비스로 확장 가능하다.

클래스 예약
좌석 예약
시간 기반 서비스

핵심 개념은 동일하다.

시간 슬롯
예약
결제
사용 확인