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)); }
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); }