2016-01-22 3 views
5

Я использую плагин PayPalStandard NopCommerce. Когда я разместил заказ &, сделайте оплату с плагином paypalstandard после успешной оплаты на paypal, он перенаправляет на сайт торговцев. В это время он дает ошибку:Запрос был прерван: не удалось создать защищенный канал SSL/TLS. System.WebException

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

Также я использую счет Sandbox для Paypal для тестирования.

Он бросает ошибку из строки:

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

Я была такая же проблема с подключением к песочнице (НВП), все было хорошо, то вчера сообщение " Запрос был прерван: не удалось создать безопасный канал SSL/TLS. " появился.

Я считаю, что PayPal обновил свои конечные точки 19/20 января 2016 года, чтобы использовать 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, и все снова начало работать.