namespace Application.Abstractions.Payment;
/// 프론트엔드에 전달할 토스 클라이언트 설정
public sealed record TossClientConfig(
string ClientKey
);
///
/// Toss Payment 객체 결과 (승인/취소/조회 공용 — 필요 필드만).
/// Success=false 면 Code/Message 에 Toss 에러 응답 {code, message} 가 담긴다.
///
public sealed record TossPaymentResult(
bool Success,
string? Code,
string? Message,
string? PaymentKey,
string? OrderID,
string? Status,
int? TotalAmount,
string? Method,
DateTime? ApprovedAt,
string? ReceiptUrl,
// 가상계좌 (status = WAITING_FOR_DEPOSIT)
string? VirtualAccountNumber,
string? VirtualAccountBankCode,
string? VirtualAccountHolder,
DateTime? VirtualAccountDueDate,
IReadOnlyList Cancels,
string? RawJson
);
/// Toss Payment.cancels[] 항목
public sealed record TossCancelDetail(
string? TransactionKey,
int CancelAmount,
string? CancelReason,
DateTime? CanceledAt
);