I'm getting "Bad Request": "card_number should contain numbers only", trying to consum an API. What am I doing wrong? Could some one help?
API Parameters must be:
Header Parameters
RequestBody
[POST]
"curl -X POST \\nhttps://api-sandbox.getnet.com.br/v1/tokens/card \\n-H 'authorization: Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346' \\n-H 'content-type: application/json; charset=utf-8' \\n-d '{\n \"card_number\": \"4012001037141112\"\n}'\n"
public async Task<IActionResult> AuthGetToken()
{
using (var httpClient = new HttpClient())
{
parameters = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("card_number", "4012001037141112"), //(APi's card number given for tests purpose)
new KeyValuePair<string, string>("customer_id", "custumer123")
};
requestMessage = new HttpRequestMessage()
{
Method = new HttpMethod("POST"),
RequestUri = new Uri("https://api-sandbox.getnet.com.br/v1/tokens/card"),
Content = new FormUrlEncodedContent(parameters)
};
requestMessage.Headers.Clear();
requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
requestMessage.Headers.Add("Authorization", "Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346");
requestMessage.Headers.Add("seller_id", "61c53d30-0d7f-3cf0-7662-c61714942d46");
response = await httpClient.SendAsync(requestMessage);
responseStatusCode = response.StatusCode;
responseBody = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
}
return View();
}
You are trying to send request as application/json
but you specify body parameters as application/x-www-form-urlencoded
(using FormUrlEncodedContent
class). Just change your code to send json string instead
public class MyRequest
{
[JsonProperty("card_number")]
public string CardNumber { get; set; }
[JsonProperty("customer_id")]
public string CustomerId { get; set; }
}
using (var httpClient = new HttpClient())
{
var request = new MyRequest
{
CardNumber = "4012001037141112",
CustomerId = "custumer123"
};
var requestBody = JsonConvert.SerializeObject(request);
var requestMessage = new HttpRequestMessage()
{
Method = new HttpMethod("POST"),
RequestUri = new Uri("https://api-sandbox.getnet.com.br/v1/tokens/card"),
Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
};
requestMessage.Headers.Add("Authorization", "Bearer ca22a2ge-1914-4b0c-a0fb-d3ce0fde7346");
requestMessage.Headers.Add("seller_id", "61c53d30-0d7f-3cf0-7662-c61714942d46");
var response = await httpClient.SendAsync(requestMessage);
var responseStatusCode = response.StatusCode;
var responseBody = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
}