Exemplo n.º 1
0
        public async Task <ExecutePaymentResponse> ExecutePayment(string paymentId, ExecutePaymentParameter parameter)
        {
            if (string.IsNullOrWhiteSpace(paymentId))
            {
                throw new ArgumentNullException(nameof(paymentId));
            }

            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            var jObj    = ToDto(parameter);
            var client  = _httpClientFactory.GetHttpClient();
            var request = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                Content    = new StringContent(jObj.ToString(), Encoding.UTF8, "application/json"),
                RequestUri = new Uri($"{BaseConstants.RESTSandboxEndpoint}v1/payments/payment/{paymentId}/execute")
            };

            request.Headers.Add("Authorization", $"Bearer {parameter.AccessToken}");
            var response = await client.SendAsync(request).ConfigureAwait(false);

            var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            var obj = JObject.Parse(content);

            try
            {
                response.EnsureSuccessStatusCode();
            }
            catch (Exception)
            {
                return(new ExecutePaymentResponse
                {
                    IsValid = false,
                    ErrorResponse = ToErrorResponseModel(obj)
                });
            }

            return(ToExecutePaymentModel(obj));
        }
Exemplo n.º 2
0
        private static JObject ToDto(ExecutePaymentParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            var jObj = new JObject();

            jObj.Add("payer_id", parameter.PayerId);
            if (parameter.Transactions != null)
            {
                var arr = new JArray();
                foreach (var transaction in parameter.Transactions)
                {
                    jObj.Add(ToDto(transaction));
                }

                jObj.Add("transactions", arr);
            }

            return(jObj);
        }