Fala Devs!
Estou tentando realizar a geração de um token JWT no Santander, para uso de geração de PIX, e para isso é necessário eu consumir uma webAPI deles. Minha necessidade é gerar o token, então os requesitos são enviar como paramentros o ClientID, o SecretID, e incluir um certificado SSL o qual faço com um certificado extensão .PFX, incluido uma senha do próprio arquivo(gerado para esse arquivo).
Minha dificuldade é, realizar a tarefa, e ao tentar pelo código abaixo no CSharp, recebo o erro:
Message: The SSL connection could not be established, see inner exception. InnerException: Mensagem recebida inesperada ou formatada incorretamente.
Outra informação, o procedimento é bem sucedido ao usar o Postman...
Se alguém puder me ajudar ou tiver alguma idéia, por favor serei muito grato!
{
var ClientId = objBank.ClientId;
var ClientSecret = objBank.ClientSecret;
var strurl = objBank.UrlToken;
var strChave = $"{ClientId}:{ClientSecret}";
var KeyB64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(strChave));
var certFile = Path.Combine(@"D:\diretorio","certificado-ssl.pfx");
var certificate = new X509Certificate2(certFile, objBank.PathCert);
var handler = new HttpClientHandler();
var StrReturn = string.Empty;
handler.ClientCertificates.Add(certificate);
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.SslProtocols = SslProtocols.Tls12;
using (var client = new HttpClient(handler))
{
var Params = new Dictionary<string, string>();
Params.Add("ClientId", ClientId);
Params.Add("ClientSecret", ClientSecret);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", KeyB64);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
var ReturnToken = await client.PostAsync(strurl, new FormUrlEncodedContent(Params)).ConfigureAwait(false);
StrReturn = JsonConvert.DeserializeObject<TokenModels>(ReturnToken.Content.ReadAsStringAsync().Result).access_token;
}
return StrReturn;
}
catch (Exception)
{
throw;
}