public Task <ApiResult <ApiCardPaymentResponse> > CreatePaymentAsync(ApiCardPaymentRequest paymentRequest,
                                                                             CancellationToken cancellationToken)
        {
            paymentRequest.ThrowIfNull(nameof(paymentRequest));
            cancellationToken.ThrowIfNull(nameof(cancellationToken));
            paymentRequest.Payment.ThrowIfNull(nameof(paymentRequest.Payment));

            var validationResult = _cardPaymentValidator.Validate(paymentRequest.Payment);

            if (!validationResult.IsValid)
            {
                return(validationResult.ToValidationException().ToApiResult <ApiCardPaymentResponse>().ToAwaitable());
            }

            var uri     = GetPaymentUri();
            var request = paymentRequest.ToHttpRequest(HttpMethod.Post, uri);

            return(HttpClient.InvokeAsync <ApiCardPaymentResponse>(request, cancellationToken));
        }
 public Task <ApiResult <ApiCardPaymentResponse> > CreatePaymentAsync(ApiCardPaymentRequest paymentRequest,
                                                                      string idempotencyToken)
 {
     return(CreatePaymentAsync(paymentRequest, idempotencyToken, CancellationToken.None));
 }
 public Task <ApiResult <ApiCardPaymentResponse> > CreatePaymentAsync(ApiCardPaymentRequest paymentRequest)
 {
     return(CreatePaymentAsync(paymentRequest, CancellationToken.None));
 }