public async Task <PaymentInstrument> AddClientPayment(string clientId, AddClientPaymentParameter parameter) { if (string.IsNullOrWhiteSpace(clientId)) { throw new ArgumentNullException(nameof(clientId)); } if (parameter == null) { throw new ArgumentNullException(nameof(parameter)); } var client = _httpClientFactory.GetHttpClient(); var jObj = ToDto(parameter); var content = new StringContent(jObj.ToString(), Encoding.UTF8, "application/json"); var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(_baseUrl + "/v0.1/customers/" + clientId + "/payment-instruments"), Content = content }; request.Headers.Add("Authorization", $"Bearer {parameter.AccessToken}"); var serializedContent = await client.SendAsync(request).ConfigureAwait(false); // serializedContent.EnsureSuccessStatusCode(); var json = await serializedContent.Content.ReadAsStringAsync(); return(ToClientPaymentModel(JObject.Parse(json))); }
private static JObject ToDto(AddClientPaymentParameter parameter) { var result = new JObject(); var card = new JObject(); card.Add("name", parameter.Name); card.Add("number", parameter.Number); card.Add("expiry_year", parameter.ExpiryYear); card.Add("expiry_month", parameter.ExpiryMonth); card.Add("cvv", parameter.Cvv); result.Add("type", "card"); result.Add("card", card); return(result); }