선결제 상세 운영 규칙 통합

선결제 상세 운영 규칙 통합

ADR-160 선결제 상세 운영 규칙 통합

1. Metadata

  • ADR ID: ADR-160
  • Status: draft
  • Date: 2026-03-09
  • Owner: YSY

2. Domain Decision

  1. PG 리다이렉트 결과 확인 절차를 표준화한다.
  2. 선결제 픽업 시 검증/인도 책임 경계를 명확히 한다.
  3. 정산/분쟁 이벤트 흐름을 상태 기준으로 관리한다.
  4. prepaid 결제 성공 시 예약 상태는 우선 reserved로 확정한다.
  5. redeemed 전이는 verification_method(none|location|qr) 조건에 따라 결정한다.
  6. 선결제 기능은 PG 연결이 완료된 파트너에게만 활성화한다.
  7. 파트너 PG 기본 메타데이터(pg_type, pg_mid, pg_redirect_url)가 없으면 선결제 발행을 허용하지 않는다.

3. Product Decision

  1. 선결제 적용 대상 업종/상황 기준을 정의한다.
  2. 선결제 완료 시 상태 전이 정책을 고정한다.
  3. 픽업 미이행 분쟁 책임 경계를 명확히 한다.
  4. 선결제 분쟁은 발행자-사용자 직접 해결 원칙으로 안내한다.
  5. 선결제 업종 기준은 ADR-005 업종 코드 체계 거버넌스의 canonical 코드 체계를 사용한다.

4. UX Decision

  1. 선결제 완료 후 픽업 안내 흐름을 표준화한다.
  2. 픽업 시 검증 방식에 따른 안내를 분기한다.
  3. 분쟁 발생 시 즉시 확인 가능한 정보만 노출한다.

5. Tech Decision

  1. PG 리다이렉트 결과 검증 절차를 표준화한다.
  2. 결제 확인 지연/중복 콜백을 멱등 처리한다.
  3. PG 장애 시 안전한 실패 전이를 보장한다.
  4. 결제 성공 콜백은 예약 상태를 reserved로 확정하고 verification_method 규칙에 따라 redeemed 전이를 처리한다.
  5. 발행자 PG 메타데이터는 pg_type, pg_mid, pg_redirect_url을 최소 필수로 저장한다.
  6. PG 시크릿은 원문 저장을 금지하고 pg_api_key_ref, pg_secret_key_ref, pg_webhook_secret_ref 참조키로만 저장한다.
  7. 로그/운영 화면에서 PG 시크릿 원문은 마스킹 없이 노출하지 않는다.
  8. 결제 결과 처리에 필요한 기본 라우팅 키는 order_id, reservation_id를 필수로 사용한다.
  9. 선결제 가능 업종 판정은 매장 category canonical 값(ADR-005 기준)으로 수행한다.

6. Ops Decision

  1. PG 장애 시 우회/중단/복구 절차를 정의한다.
  2. 정산 불일치 탐지/수정 절차를 운영한다.
  3. 장애 공지 템플릿과 후속 리포트를 표준화한다.
  4. 선결제 분쟁은 직접 해결 원칙과 증적 안내 절차로 처리한다.

7. Implementation Contract (Optional)

7.1 API Contract

  • 결제 콜백 입력은 order_id, reservation_id, 서명 검증값을 필수로 받는다.
  • 중복 콜백은 멱등 처리하고 최초 확정 결과를 재반환한다.

7.2 Data Contract

  • PG 시크릿은 참조키(pg_api_key_ref, pg_secret_key_ref, pg_webhook_secret_ref)만 저장한다.
  • 선결제 사용 가능 조건은 파트너 PG 메타데이터(pg_type, pg_mid, pg_redirect_url) 존재로 판정한다.

7.3 Error/Observability Contract

  • 서명 불일치는 PG_CALLBACK_INVALID_SIGNATURE로 기록한다.
  • 정산 불일치/콜백 지연을 별도 운영 알람으로 분리한다.

7.4 Test/Acceptance Contract

  • 성공 콜백 수신 시 상태가 reserved로 확정되어야 한다.
  • verification_method=none이면 즉시 reserved -> redeemed, qr|location이면 검증 성공 시 redeemed로 전이해야 한다.
  • 동일 콜백 재전송 시 상태/정산 결과가 변하지 않아야 한다.

8. Validation

  • Domain/Product/UX/Tech/Ops 결정이 충돌하지 않는다.
  • 구현 기준은 SPEC과 정합성을 유지한다.
  • 운영 절차는 RUNBOOK으로 연결된다.