2016-01-22 96 views
5

我正在使用NopCommerce的PayPalStandard插件。当我通过paypal标准插件在Paypal成功付款后下订单&付款时,它会重定向到商家网站。当时它给错误:请求已中止:无法创建SSL/TLS安全通道.System.Net.WebException

The request was aborted: Could not create SSL/TLS secure channel.

而且我使用的测试贝宝的沙盒帐户。

它抛出错误从这一行:

var sw = new StreamWriter(req.GetRequestStream() 

这里是下面的代码:

var req = (HttpWebRequest)WebRequest.Create(GetPaypalUrl()); 
     req.Method = "POST"; 
     req.ContentType = "application/x-www-form-urlencoded"; 
     req.ProtocolVersion = HttpVersion.Version10; 

     string formContent = string.Format("cmd=_notify-synch&at={0}&tx={1}", _paypalStandardPaymentSettings.PdtToken, tx); 
     req.ContentLength = formContent.Length; 

     using (var sw = new StreamWriter(req.GetRequestStream(), Encoding.ASCII)) 
      sw.Write(formContent); 
+0

我开始看到这种情况发生在大约一天前。也许与https://www.sandbox.paypal.com/的证书有关的问题? – bustrofedon

+0

9-10个月前,它不会引发任何沙箱错误。是沙箱问题吗? – chitra

+0

此代码也可以成功使用PayPal帐户。它只发生在沙箱帐户。所以这是沙箱帐户的问题? – chitra

回答

13

我必须连接到沙箱(NVP)同样的问题,一切都很好,那么昨日消息“该请求已中止:无法创建SSL/TLS安全通道。“出现了。

我相信PayPal在2016年1月19日更新了他们的终端,使用TSL 1.2和HTTP 1.1。

要解决此问题,对于.NET 4.5及更高版本,在调用WebRequest.Create()之前添加以下代码行。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 
+0

非常感谢@nqynik。这解决了我的问题。 – chitra

+0

欢迎@chitra,请不要忘记标记我的答案为已接受。 – nqynik

+1

这个答案对我也有帮助。有一件事你应该在你的答案中加入:'SecurityProtocolType.Tls12'只在.NET 4.5或更高版本中可用,所以如果目标框架是.NET 4.0,那么你将需要改变目标框架。 – ekad

0

为我们工作的答案在PayPal博客文章Upcoming Security Changes Notice上列出。在帖子中列出了很多东西,但是我们所做的一件事情就是PayPal SDK更新。我们使用NuGet进行更新,所有事情再次开始。

相关问题