namespace Application.Abstractions.Payment;

/// <summary>
/// 다날 PG 결제 서비스
/// - Config DB에서 테스트/라이브 자동 분기
/// - Basic Auth 헤더 생성
/// - 승인/취소 API 호출
/// </summary>
public interface IDanalPayService
{
    /// <summary>프론트엔드에 전달할 ClientKey, MerchantID</summary>
    Task<DanalClientConfig> GetClientConfigAsync(CancellationToken ct);

    /// <summary>결제 승인 (successUrl 콜백 후 서버에서 호출)</summary>
    Task<DanalConfirmResult> ConfirmAsync(string method, string transactionID, string orderID, int amount, CancellationToken ct);

    /// <summary>결제 취소</summary>
    Task<DanalCancelResult> CancelAsync(string method, string transactionID, int amount, string cancelType, CancellationToken ct);
}