Paypal底层连接已关闭

时间:2017-08-23 09:15:19

标签: asp.net vb.net paypal

我试图从paypal沙盒环境获得响应,以测试从paypal返回的变量。我正在使用asp.net和vb.net,现在代码在现场支付宝网上工作正常,但由于某些奇怪的原因,不能在本地代码上工作。

我想使用沙盒环境进行本地测试,但是出现以下错误。

  

System.dll中出现“System.Net.WebException”类型的异常,但未在用户代码中处理

     

其他信息:底层连接已关闭:发送时发生意外错误。

现在代码正常运行

 Dim req As HttpWebRequest = CType(WebRequest.Create("https://www.paypal.com/cgi-bin/webscr"), HttpWebRequest)

我以为我所改变的只是这个

  Dim req As HttpWebRequest = CType(WebRequest.Create("https://www.sandbox.paypal.com/cgi-bin/webscr"), 

主要代码

 Dim req As HttpWebRequest = CType(WebRequest.Create("https://www.sandbox.paypal.com/cgi-bin/webscr"), HttpWebRequest)
    'Set values for the request back
    req.Method = "POST"
    req.ContentType = "application/x-www-form-urlencoded"
    Dim Param() As Byte = Request.BinaryRead(HttpContext.Current.Request.ContentLength)
    Dim strRequest As String = Encoding.ASCII.GetString(Param)
    strRequest = strRequest + "&cmd=_notify-validate"
    req.ContentLength = strRequest.Length

    'Send the request to PayPal and get the response
    Dim streamOut As StreamWriter = New StreamWriter(req.GetRequestStream(), Encoding.ASCII)
    streamOut.Write(strRequest)
    streamOut.Close()
    Dim streamIn As StreamReader = New StreamReader(req.GetResponse().GetResponseStream())
    Dim strResponse As String = streamIn.ReadToEnd()
    streamIn.Close()

    'Assign payment variables 
    strOrderNo = HttpContext.Current.Request("item_number")
    strGross = HttpContext.Current.Request("mc_gross")

编辑2 经过进一步的调查后,似乎是paypal改变了他们的沙箱的方式,但我无法将我的应用程序升级到4.5只是使用沙箱是他们对我开放的任何选项?根据这个堆栈

Using PayPal PDT with vb.net and getting: the underlying connection was closed: An unexpected error occurred on a send

建议更改此行以使用Tsl12,但这不是我网站上的选项,我无法将其升级为其日常使用的网站。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

为什么代码在实时环境中工作正常为什么paypal改变了他们的沙箱来做这个?

1 个答案:

答案 0 :(得分:1)

对于其他任何挣扎的人,我发现如何使用以下黑客来解决这个问题

Const _Tls12 As SslProtocols = DirectCast(&HC00, SslProtocols)
Const Tls12 As SecurityProtocolType = DirectCast(_Tls12, SecurityProtocolType)
ServicePointManager.SecurityProtocol = Tls12

感谢How to implement Security Protocols TLS 1.2 in .Net 3.5 framework

这个伟大的行动

任何人都可以告诉我没有使用上述黑客的含义,这将是未来的证据。