ADR-DS-060_선결제 기반 슬롯

ADR-DS-060_선결제 기반 슬롯

## 1. 기본 정보

Conforms to: ADR-DS-000 v1 Effective from: ADR-DS-060+ If conflict: ADR-DS-000 wins. Deprecated terms in this scope: arrived, checkin/check_in.

  • ADR ID: ADR-DS-060
  • 제목: 선결제 기반 슬롯 사용 구조 도입
  • 상태: Accepted
  • 작성일: 2026-03-07
  • 작성자: YSY

2. 배경 (Context)

본 플랫폼은 시간 기반 슬롯 매칭 서비스이며, 기본 구조는 다음과 같다.

  • 사용자는 즉시 사용 가능한 슬롯을 확보한다.
  • 매장은 유휴 시간을 활용하기 위해 슬롯을 발행한다.
  • 플랫폼은 거래 중개가 아니라 시간 관리 인프라 역할을 수행한다.

기본 정책에서는 **현장 결제(on-site payment)**를 기본 방식으로 사용한다.

그러나 다음과 같은 업종에서는 선결제 요구가 발생한다.

예:

  • 치킨 픽업
  • 카페 제조 음료
  • 도시락
  • 베이커리
  • 준비가 필요한 음식

이 업종의 특징은 다음과 같다.

결제 확인
→ 조리 시작
→ 픽업

따라서 결제 확정 이후 준비가 시작되는 구조가 필요하다.

하지만 플랫폼의 핵심 철학은 다음과 같다.

플랫폼은 거래 당사자가 아니다
플랫폼은 정산을 하지 않는다
플랫폼은 주문 수수료를 받지 않는다

따라서 다음 조건을 만족해야 한다.

  • 플랫폼이 결제를 직접 수령하지 않는다
  • 발행자가 결제 당사자가 된다
  • 플랫폼은 결제 결과만 반영한다

3. 결정 (Decision)

플랫폼은 선결제 기반 슬롯(Prepaid Slot) 기능을 도입한다.

단, 다음 구조를 채택한다.

3.1 결제 책임

결제는 **발행자 PG(Payment Gateway)**를 통해 이루어진다.

결제 흐름:

사용자
→ 발행자 PG 결제창
→ 결제 승인
→ 발행자 계좌 정산

플랫폼은 결제 금액을 수령하거나 보관하지 않는다.


3.2 플랫폼 역할

플랫폼은 다음 기능만 수행한다.

슬롯 노출
슬롯 확보
결제 완료 여부 반영
QR 기반 사용 처리

결제 성공 여부는 PG 리다이렉트 + PG 서버 검증 결과를 통해 확인한다.


3.3 결제 확인 방식

결제 완료 후 PG는 플랫폼으로 리다이렉트된다.

PG 결제
→ redirect
→ 플랫폼
→ 서버 검증
→ reservation 상태 paid 처리

플랫폼은 다음 정보를 기준으로 결제 상태를 반영한다.

reservation_id
order_id
payment_status
amount
payment_key

3.4 슬롯 상태 모델

선결제 슬롯의 상태 전이는 다음과 같다.

issued
→ reserved
→ paid
→ redeemed

예외 상태

reserved → expired
reserved → payment_failed
paid → no_show

3.5 결제 중 슬롯 확보 정책

결제 시간 동안 슬롯이 소진되는 문제를 방지하기 위해 결제 시작 시 슬롯을 임시 확보 상태로 전환한다.

issued
→ reserved

reserved 상태는 일정 시간이 지나면 자동 해제된다.

권장 기본값

reserved TTL = 3분

만료 시

reserved → expired

3.6 가격 결정

가격은 플랫폼이 계산하지 않는다.

가격
할인율
혜택

모두 발행자가 결정한다.

플랫폼은 가격 로직에 개입하지 않는다.


3.7 환불 정책

환불 정책은 발행자가 결정한다.

플랫폼은

환불 정책 노출
슬롯 상태 관리

만 수행한다.

환불 처리 책임은 발행자에게 있다.


3.8 플랜 정책

선결제 기능은 기본 기능이 아니라 상위 플랜 기능으로 제공한다.

예시 정책

Basic

슬롯 발행
현장 결제

Plus 이상

슬롯 발행
선결제 슬롯
픽업 서비스

이 정책은 다음 이유로 채택된다.

PG 연결 필요
운영 복잡도 증가
환불 정책 필요

단, 실제 플랜 노출/판매 정책은 Product 정책 문서에서 관리하며 본 ADR은 도메인 기능 경계(선결제 가능 조건)만 정의한다.


4. 결과 (Consequences)

선결제 기능 도입에 따른 결과는 다음과 같다.

긍정적 영향

  • 준비형 픽업 업종 지원
  • 노쇼 감소
  • 결제 확정 후 준비 시작 가능
  • 플랫폼이 정산 시스템을 구축할 필요 없음
  • 구독 기반 수익 모델 유지

제한 사항

  • 선결제 기능은 PG를 보유한 발행자만 사용 가능
  • 발행자 PG 연동이 필요함
  • 환불 정책은 발행자 책임

5. 구조적 의미

본 결정은 플랫폼의 핵심 철학을 유지하기 위한 것이다.

플랫폼의 역할은 다음과 같다.

시간 슬롯 관리 인프라

플랫폼은 다음 역할을 수행하지 않는다.

결제 수령
정산
주문 수수료 모델

즉 플랫폼은

주문 플랫폼이 아니라 시간 운영 플랫폼이다.



Template v2 Addendum

In Scope

  • Prepaid slot operations (reservation, payment confirmation, pickup, quantity, PG connection)

Out of Scope

  • Order brokering, settlement handling, refund amount calculation

Boundaries

  • Payment responsibility is on publisher. Time/state management is on platform.

Source of Truth (SoT)

  • Base: ADR-DS-060; Temporary hold: ADR-DS-061; Payment verification/reconcile: ADR-DS-062; Pickup ops: ADR-DS-063; Quantity/concurrency: ADR-DS-064; PG registration/secret handling: ADR-DS-065.

Validation

  • Detect state/constraint violations via tests and batch checks.
  • Recovery and reprocessing must be idempotent.

Revisit Conditions

  • KPI threshold breach (reservation failure, expiry ratio, payment confirmation failure)
  • External dependency change (PG, regulation, location API)

DS-000 v1 정합성 개정 (2026-03-08)

이 문서는 ADR-DS-000 v1에 정합되도록 다음 규칙을 우선 적용한다.

  1. Reservation 상태 집합은 reserved | redeemed | expired | cancelled만 사용한다.
  2. paid, payment_failed, no_show는 Reservation 상태로 사용하지 않는다.
  3. 결제 중 임시 점유는 Reservation 상태가 아니라 hold 도메인으로 분리한다.
  4. 수량 차감은 reserved -> redeemed 전이 트랜잭션에서만 수행한다.
  5. prepaid + verification_method=none은 결제 성공 시 즉시 redeemed 전이를 허용할 수 있다.
  6. prepaid + (location|qr)는 결제 성공 후 검증 성공 시 redeemed로 전이한다.
  7. 만료 시각은 운영 상한을 강제한다: expires_at <= store_close_at.

본 섹션과 기존 본문이 충돌하면 본 섹션(DS-000 정합성 개정)이 우선한다.