请求已中止:无法创buildSSL / TLS安全频道沙盒帐户

它在一周之前运行良好,但是现在显示下面的错误。 我已经尝试了以下的东西,但没用。

ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 

所以build议我可能的解决scheme

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

我刚刚在我的testing环境中遇到了同样的问题(幸运的是我的现场支付正在进行)。 我通过改变来修复它:

 public PayPalAPI(string specialAccount = "") { System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls; 

 public PayPalAPI(string specialAccount = "") { System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; 

前段时间他们禁用了对SSL3的支持: https : //www.paypal.com/uk/webapps/mpp/ssl-security-update ,具体说明

确保您使用TLS 1.0或1.2连接到PayPal端点(并非所有API端点当前都支持TLS 1.1)。

他们的最新更新 (thx从@awesome的评论更新)指出:

PayPal正在更新其服务,要求所有HTTPS连接的TLS 1.2。 此时,PayPal也将要求所有连接都使用HTTP / 1.1 … 为了避免服务中断,您必须在2016年6月17日前确认您的系统已准备好进行此项更改

事实上改变SecurityProtocolType.Tls可以解决这个问题,如果你在VS下工作的框架低于4.5你不能改变它,你必须升级VS到最高版本2012/2013/2015来改变它。

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType。 Tls12 ;

将下面的代码添加到您的global.asax或在调用(HttpWebRequest)WebRequest.Create(url)之前;

 protected void Application_Start() { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // ... } 

这是因为PayPal正在将其encryption更改为TLS而不是SSL。 这已经在沙盒环境中更新,但还没有在现场。

阅读更多: https : //devblog.paypal.com/upcoming-security-changes-notice/