2016-01-22 233 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進行更新,所有事情再次開始。

相關問題