我正在使用NopCommerce的PayPalStandard插件。当我在PayPal成功付款后下订单并使用paypalstandard插件付款时,它会重定向到商家网站。当时它给出错误:
请求已中止:无法创建 SSL/TLS 安全通道。
我也在使用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);
我在连接到沙盒(nvp)时遇到了同样的问题,一切都很好,然后昨天出现消息"请求已中止:无法创建SSL/TLS安全通道。
我相信PayPal在2016年1月19/20日更新了他们的端点,以使用TSL 1.2和HTTP 1.1。
若要解决此问题,对于 .NET 4.5 及更高版本,请在调用 WebRequest.Create() 之前添加以下代码行。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
有用的答案列在PayPal博客文章"即将发生的安全更改通知"中。 帖子中列出了许多内容,但我们所做的一件事是PayPal SDK更新。 我们使用 NuGet 进行了更新,一切又开始工作了。