public Task <ApiResult <ApiAlternativePaymentResponse> > CapturePaymentAsync(long paymentId, long amount,
                                                                                     ApiAlternativePaymentRequest paymentRequest, CancellationToken cancellationToken)
        {
            paymentId.ThrowIfNotCondition(id => id > 0, nameof(paymentId));
            amount.ThrowIfNotCondition(a => a > 0, nameof(amount));
            paymentRequest.ThrowIfNull(nameof(paymentRequest));
            cancellationToken.ThrowIfNull(nameof(cancellationToken));

            var uri     = GetCapturePaymentPartialUri(paymentId, amount);
            var request = paymentRequest.ToHttpRequest(HttpMethod.Post, uri);

            return(HttpClient.InvokeAsync <ApiAlternativePaymentResponse>(request, cancellationToken));
        }
        public Task <ApiResult <ApiAlternativePaymentResponse> > CreatePaymentAsync(ApiAlternativePaymentRequest paymentRequest,
                                                                                    CancellationToken cancellationToken)
        {
            paymentRequest.ThrowIfNull(nameof(paymentRequest));
            paymentRequest.Payment.ThrowIfNull(nameof(paymentRequest.Payment));
            cancellationToken.ThrowIfNull(nameof(cancellationToken));

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

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

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

            return(HttpClient.InvokeAsync <ApiAlternativePaymentResponse>(request, cancellationToken));
        }
 public Task <ApiResult <ApiAlternativePaymentResponse> > CreateRecurrentPaymentAsync(ApiAlternativePaymentRequest paymentRequest,
                                                                                      string idempotencyToken)
 {
     return(CreateRecurrentPaymentAsync(paymentRequest, idempotencyToken, CancellationToken.None));
 }
 public Task <ApiResult <ApiAlternativePaymentResponse> > CapturePaymentAsync(long paymentId,
                                                                              long amount, ApiAlternativePaymentRequest paymentRequest, string idempotencyToken)
 {
     return(CapturePaymentAsync(paymentId, amount, paymentRequest, idempotencyToken, CancellationToken.None));
 }
 public Task <ApiResult <ApiAlternativePaymentResponse> > CreatePaymentAsync(ApiAlternativePaymentRequest paymentRequest)
 {
     return(CreatePaymentAsync(paymentRequest, CancellationToken.None));
 }