.net - terminado - Se anuló la solicitud: no se pudo crear una cuenta de espacio aislado de canal seguro SSL/TLS
se ha terminado la conexión no se puede establecer una relación de confianza para el canal seguro (3)
Agregue el siguiente código a su archivo global.asax o antes de llamar a (HttpWebRequest) WebRequest.Create (url);
protected void Application_Start()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// ...
}
Esto fue causado porque PayPal está cambiando su encriptación a TLS en lugar de SSL. Esto ya se ha actualizado en los entornos de Sandbox pero aún no en vivo.
Lea más: https://devblog.paypal.com/upcoming-security-changes-notice/
Funcionó bien antes de una semana, pero ahora muestra el siguiente error. He intentado lo siguiente pero no sirve.
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
así que sugiérame con una posible solución
public string HttpCall(string NvpRequest) //CallNvpServer
{
string url = pendpointurl;
//To Add the credentials from the profile
string strPost = NvpRequest + "&" + buildCredentialsNVPString();
strPost = strPost + "&BUTTONSOURCE=" + HttpUtility.UrlEncode(BNCode);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
// allows for validation of SSL conversations
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Timeout = Timeout;
objRequest.Method = "POST";
objRequest.ContentLength = strPost.Length;
try
{
using (StreamWriter myWriter = new StreamWriter(objRequest.GetRequestStream()))
{
myWriter.Write(strPost);
}
}
catch (Exception e)
{
/*
if (log.IsFatalEnabled)
{
log.Fatal(e.Message, this);
}*/
}
//Retrieve the Response returned from the NVP API call to PayPal
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
string result;
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
}
//Logging the response of the transaction
/* if (log.IsInfoEnabled)
{
log.Info("Result :" +
" Elapsed Time : " + (DateTime.Now - startDate).Milliseconds + " ms" +
result);
}
*/
return result;
}
De hecho, el cambio de SecurityProtocolType.Tls soluciona el problema, si está trabajando en VS con un marco inferior a 4.5 no podrá cambiarlo, debe actualizar su VS a una versión más alta 2012/2013/2015 para cambiarlo .
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType. Tls12 ;
Me encontré con este mismo problema en mi entorno de prueba también (afortunadamente mis pagos en vivo están pasando). Lo arreglé cambiando:
public PayPalAPI(string specialAccount = "")
{
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
a
public PayPalAPI(string specialAccount = "")
{
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
Deshabilitaron el soporte para SSL3 hace un tiempo: https://www.paypal.com/uk/webapps/mpp/ssl-security-update , específicamente indicando
Asegúrese de que se está conectando a los puntos finales de PayPal utilizando TLS 1.0 o 1.2 (no todos los puntos finales API soportan actualmente TLS 1.1).
Su última actualización (thx para la actualización de comentarios de @awesome) dice:
PayPal está actualizando sus servicios para requerir TLS 1.2 para todas las conexiones HTTPS. En este momento, PayPal también requerirá HTTP / 1.1 para todas las conexiones ... Para evitar cualquier interrupción del servicio, debe verificar que sus sistemas estén listos para este cambio antes del 17 de junio de 2016.