PayPal TLS 1.2升级问题

时间:2017-04-28 01:01:07

标签: paypal payment-gateway payment pci-compliance

随着PayPal TLS 1.2升级迫在眉睫,我急于升级我的客户支付系统。问题是,它们在.NET 3.5上。我已经和PayPal支持了,他们说他们的SDK只支持.NET 4.5。要将整个站点升级到4.5,需要花费很长时间才能完成。因此,除非他们错了,有人可以指出我如何将payflow pro SDK实现到.NET 3.5系统的正确方向,我已经提出了2个选项(除了升级):

  1. 使用WebClient连接到付费流网关。我喜欢这个解决方案,但我没有得到回应。我有两段代码

            using (System.Net.WebClient wc = new System.Net.WebClient())
        {
            wc.Headers.Add("Content-type", "text/namevalue");
            wc.Headers.Add("Content-Length", requestData.ToString().Length.ToString());
            wc.Headers.Add("X-VPS-Timeout", "30");
            wc.Headers.Add("X-VPS-Request-ID", System.Guid.NewGuid().ToString());
            wc.Headers.Add("X-VPS-VIT-Client-Type", "PHP/cURL");
            string HtmlResult = wc.UploadString("https://" + this.HostAddress, requestData.ToString());
        }
    
  2. System.Net.HttpWebRequest httpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("https://" + this.HostAddress);
    
    
            httpWebRequest.ContentType = "text/namevalue";
            httpWebRequest.ContentLength = rawRequestData.Length;
            httpWebRequest.Headers.Add("X-VPS-Timeout", "30");
            httpWebRequest.Headers.Add("X-VPS-Request-ID", System.Guid.NewGuid().ToString());
            httpWebRequest.Headers.Add("X-VPS-VIT-Client-Type", "PHP/cURL");
            httpWebRequest.Method = "POST";
    
            using (var stream = httpWebRequest.GetRequestStream())
            {
                stream.Write(rawRequestData, 0, rawRequestData.Length);
            }
    
            var response = (System.Net.HttpWebResponse)httpWebRequest.GetResponse();
            var stringResponse = new System.IO.StreamReader(response.GetResponseStream()).ReadToEnd();
    

    两者都返回空响应异常。

    1. 另一种方法是创建一个在.NET 4.5中编译的本地Web服务,让Web应用程序使用它来处理事务。这将全部在本地完成,因此它不像Web应用程序与另一台计算机通信,它将连接到本地的Web服务。至于网络服务,我会让它只响应本地请求。问题是,在Web服务上不会成为SSL。所以最大的问题是,如果网络服务没有响应外部请求,那么内部请求是否会破坏PCI合规性?

1 个答案:

答案 0 :(得分:0)

我不必诉诸于此,因为我维护的应用程序是4.5或更高,但

" .NET Framework 3.5.1及更早版本不支持将传输层安全性(TLS)系统默认版本用作加密协议的应用程序。此更新允许在.NET Framework 3.5.1中使用TLS v1.2。"

https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-.net-framework-3.5.1-on-windows-7-sp1-and-server-2008-r2-sp1