namespace WalletService.API.Application.Commands.Payments;

using MediatR;

/// <summary>
/// EN: Command to process a payment gateway callback (IPN).
/// VI: Command de xu ly callback (IPN) tu cong thanh toan.
/// </summary>
public record ProcessPaymentCallbackCommand(
    string GatewayName,
    IDictionary<string, string> Parameters
) : IRequest<ProcessPaymentCallbackResult>;

/// <summary>
/// EN: Result of processing a payment callback.
/// VI: Ket qua xu ly callback thanh toan.
/// </summary>
public record ProcessPaymentCallbackResult(
    bool Success,
    Guid? PaymentId,
    Guid? OrderId,
    string Status,
    string? ErrorMessage
);
