Asp classic 经典ASP贝宝IPN退款

Asp classic 经典ASP贝宝IPN退款,asp-classic,paypal-ipn,Asp Classic,Paypal Ipn,正在尝试解决一些遗留的经典ASP Paypal IPN代码的故障。遗留代码非常适合销售产品。然而,从Paypal帐户处理退款似乎给Paypal IPN带来了一些问题。IPN侦听器接收退款IPN消息并正确处理业务逻辑,标记已退款的交易。但是,出于某种原因,Paypal仍然将交易IPN历史记录标记为“重试”。下面是GitHub的示例代码,用于创建我们正在进行故障排除的IPN侦听器 对于销售和退款,发回贝宝的帖子是否需要有所不同 非常感谢您的帮助。干杯 <%@LANGUAGE="VBS

正在尝试解决一些遗留的经典ASP Paypal IPN代码的故障。遗留代码非常适合销售产品。然而,从Paypal帐户处理退款似乎给Paypal IPN带来了一些问题。IPN侦听器接收退款IPN消息并正确处理业务逻辑,标记已退款的交易。但是,出于某种原因,Paypal仍然将交易IPN历史记录标记为“重试”。下面是GitHub的示例代码,用于创建我们正在进行故障排除的IPN侦听器

对于销售和退款,发回贝宝的帖子是否需要有所不同

非常感谢您的帮助。干杯

<%@LANGUAGE="VBScript"%>
<%
Dim Item_name, Item_number, Payment_status, Payment_amount
Dim Txn_id, Receiver_email, Payer_email
Dim objHttp, str
' read post from PayPal system and add 'cmd'
str = Request.Form & "&cmd=_notify-validate"
' post back to PayPal system to validate
set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
' set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0")
' set objHttp = Server.CreateObject("Microsoft.XMLHTTP")
objHttp.open "POST", "https://www.paypal.com/cgi-bin/webscr", false
objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHttp.Send str
' assign posted variables to local variables
Item_name = Request.Form("item_name")
Item_number = Request.Form("item_number")
Payment_status = Request.Form("payment_status")
Payment_amount = Request.Form("mc_gross")
Payment_currency = Request.Form("mc_currency")
Txn_id = Request.Form("txn_id")
Receiver_email = Request.Form("receiver_email")
Payer_email = Request.Form("payer_email")
' Check notification validation
if (objHttp.status <> 200 ) then
' HTTP error handling
elseif (objHttp.responseText = "VERIFIED") then
' check that Payment_status=Completed and other variables
Execute business process code, mark transaction Completed or Refunded from payment_status works successfully
elseif (objHttp.responseText = "INVALID") then
' log for manual investigation
else
' error
end if
set objHttp = nothing%>

发回PayPal不会影响IPN是否被标记为成功接收。回发步骤用于您自己验证IPN是否来自PayPal


要成功接收IPN,HTTP响应状态必须为200 OK。

感谢您的快速响应和澄清。我的服务器端工作正常。是Paypal发现我的服务器收到了我有问题的退款信息。在IPN历史记录中,退款消息始终显示为“重试”。这些错误已经足够了,IPN将自动关闭。销售IPN消息在IPN历史记录中标记为已发送。退款消息是否也应标记为已发送?要成功接收IPN,HTTP响应状态必须为200 OK。您是说我需要在我的HTTP帖子中使str等于“OK”以获得退款吗?与str不同的是,在销售时,整个消息都附加了notify validate?我真的很感谢你的帮助,我只是不明白我的IPN侦听器代码需要更改什么。不,收到IPN时HTTP状态为200。这与发布验证无关。感谢您的持续帮助。我相信Paypal的HTTP状态是200 OK,因为我的业务代码执行正确。脚本中的IF条件表示IF不是200报告和错误。如果是200,则执行业务逻辑,这就是正在发生的情况。我只是想知道为什么以及如何修复贝宝知道消息已被接受,并标记IPN消息完成,而不是在IPN历史列表中“重试”。