package com.zioinfo.kintex.ticket.payment;

/**
 * 결제 게이트웨이 어댑터(GUARDiA 표준 · Mall 패턴) — 외부 PG 실호출 금지.
 * 운영 전환 시 이 인터페이스의 실 구현체를 주입한다(현재 기본은 {@link MockPaymentGateway}).
 */
public interface PaymentGateway {

    /** 승인 결과 — 승인번호는 성공 시에만 채워진다(민감 카드정보 미포함). */
    record PaymentResult(boolean approved, String approvalNo, String message) {
    }

    /**
     * 결제 승인 요청(시뮬레이션). 금액 0(무료권)도 승인 처리한다.
     *
     * @param method   결제수단(card/easy/bank/free)
     * @param amount   승인 금액(원)
     * @param orderNo  주문번호(승인번호 상관용)
     */
    PaymentResult authorize(String method, long amount, String orderNo);
}
