public virtual async Task <PaymentRequestData> CreatePaymentRequest(string storeId,
                                                                            CreatePaymentRequestRequest request, CancellationToken token = default)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            var response = await _httpClient.SendAsync(
                CreateHttpRequest($"api/v1/stores/{storeId}/payment-requests", bodyPayload : request,
                                  method : HttpMethod.Post), token);

            return(await HandleResponse <PaymentRequestData>(response));
        }
        public async Task <IActionResult> CreatePaymentRequest(string storeId,
                                                               CreatePaymentRequestRequest request)
        {
            var validationResult = Validate(request);

            if (validationResult != null)
            {
                return(validationResult);
            }

            var pr = new PaymentRequestData()
            {
                StoreDataId = storeId,
                Status      = Client.Models.PaymentRequestData.PaymentRequestStatus.Pending,
                Created     = DateTimeOffset.Now
            };

            pr.SetBlob(request);
            pr = await _paymentRequestRepository.CreateOrUpdatePaymentRequest(pr);

            return(Ok(FromModel(pr)));
        }