提问人:mark davies 提问时间:2/20/2020 更新时间:2/20/2020 访问量:202
PayPal IPN 侦听器保持“重试”HTTP 响应 500
PayPal IPN Listener keeps 'Retrying' HTTP Response 500
问:
我的 IPN 侦听器在过去 6 个月中一直运行良好。不过,在上周,所有事务都在“重试”并导致 HTTP 500 响应。我没有更改 IPN 侦听器中的任何代码,也没有更改 PayPal 中的任何设置。我已经打电话给PayPal,他们说这不是问题。我的托管公司 1&1 Ionos 几乎不知道我在说什么。我的 IPN 侦听器代码如下。我的网站使用 Asp.Net/VB.Net..
Imports System.Net
Imports System.IO
Imports System.Web.Util
Imports System.Data.Common
Partial Class IPNListener
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
'Post back to either sandbox or live
'Dim strURL As String = "https://www.sandbox.paypal.com/cgi-bin/webscr"
Dim strURL As String = "https://www.paypal.com/cgi-bin/webscr"
Dim req As HttpWebRequest = CType(WebRequest.Create(strURL), HttpWebRequest)
'Set values for the request back
req.Method = "POST"
req.ContentType = "application/x-www-form-urlencoded"
req.Proxy = New WebProxy("ntproxyus.lxa.perfora.net", 3128)
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()
Dim qscoll As NameValueCollection = HttpUtility.ParseQueryString(strRequest)
'Insert the paypal response
Dim order As New orders
order.InsertPaypalResponse(qscoll("txn_id"), qscoll("custom"), strRequest)
If strResponse = "VERIFIED" Then
order.UpdateOrderFromPaypal(qscoll("custom"), qscoll("txn_id"), qscoll("payment_status"))
ElseIf strResponse = "INVALID" Then
'log for manual investigation
order.UpdateOrderFromPaypal(qscoll("custom"), qscoll("txn_id"), qscoll("payment_status"))
Else
'Response wasn't VERIFIED or INVALID, log for manual investigation
order.UpdateOrderFromPaypal(qscoll("custom"), qscoll("txn_id"), qscoll("payment_status"))
End If
End Sub
End Class
答:
0赞
Preston PHX
2/20/2020
#1
您的 IPN 侦听器可能在连接到 https://www.paypal.com/cgi-bin/webscr 以验证其收到的 IPN 时遇到问题,因此拒绝处理 IPN 并返回 HTTP 500,导致PayPal重复重试其传送。
为了使您的侦听器能够连接到PayPal并验证IPN,您需要确保拥有更新的证书颁发机构捆绑包/列表,该捆绑包/列表能够验证PayPal服务器当前加密安全的SSL证书的颁发者。
当您使用它时,请更新您的 IPN 侦听器以使用而不是 www.paypal.com 请参阅当前文档:https://developer.paypal.com/docs/ipn/integration-guide/IPNImplementation/ipnpb.paypal.com
评论
0赞
mark davies
2/20/2020
感谢您的回复。我对这些东西了解不多,但正如您建议的那样,我已将上述代码中的 strURL 更改为包含 ipnpb.paypal.com 而不是 www.paypal.com 但仍然没有运气。我的主机是 1&1 ionos,我通过他们购买了 SSL 证书。当您说我需要更新我的证书颁发机构捆绑包时,这是我可以做的事情还是由托管公司决定?我不知道从哪里开始。我真的很感谢你的帮助。
0赞
mark davies
2/20/2020
我刚刚重新颁发了我的1&1 SSL证书,但仍然没有运气。
0赞
Preston PHX
2/20/2020
它与站点的证书无关。有问题的证书是PayPal服务器使用的证书。如果您的 IPN 侦听器无法验证他们正在使用的证书的颁发者,它将无法连接到 PayPal 的服务器。为此,您用于通过HTTPS连接到PayPal的软件需要信任证书颁发机构,该证书颁发机构信任签署PayPal服务器正在使用的证书的颁发者。因此,您需要在 Asp.Net/VB.Net 或 Web 服务器上进行更改以信任相关的证书颁发机构。
0赞
mark davies
2/20/2020
啊,我现在明白了。但是,我能做的 1&1 非常有限。他们的客户服务也不明白我在说什么。您知道我需要在 VB.Net 中进行哪些更改才能信任此证书吗?对于我对这一切的缺乏了解,我深表歉意,再次感谢。
上一个:如何检查是否已达到最后一条记录
下一个:选择具有内部联接的订单总数
评论