package com.zioinfo.kintex.ticket.payment;

import org.springframework.stereotype.Component;

import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * Mock 결제 게이트웨이(기본 구현) — 외부 PG 미연동 시뮬레이션.
 * <p>정상 승인 + 승인번호 생성. 음수 금액 등 비정상은 거절로 시뮬레이션한다.
 * <p>운영 전환 시 실 PG 어댑터 {@code @Component} 로 대체하고 이 빈은 제거/비활성화한다.
 */
@Component
public class MockPaymentGateway implements PaymentGateway {

    private static final DateTimeFormatter TS = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
    private final SecureRandom random = new SecureRandom();

    @Override
    public PaymentResult authorize(String method, long amount, String orderNo) {
        if (amount < 0) {
            return new PaymentResult(false, null, "결제 금액이 올바르지 않습니다.");
        }
        String approvalNo = "MOCK-" + LocalDateTime.now().format(TS) + "-"
                + String.format("%06d", random.nextInt(1_000_000));
        String label = amount == 0 ? "무료 예매 확정" : "결제 승인 완료(모의)";
        return new PaymentResult(true, approvalNo, label);
    }
}
