【问题标题】:Classic ASP Paypal IPN Refund经典 ASP Paypal IPN 退款
【发布时间】:2021-07-13 07:00:51
【问题描述】:

尝试对一些旧的 Classic ASP Paypal IPN 代码进行故障排除。遗留代码非常适合销售产品。但是,从 Paypal 帐户处理 REFUND 似乎会导致 Paypal IPN 出现一些问题。 IPN 监听器接收到 Refund IPN 消息并正确处理业务逻辑,将交易标记为 Refunded。但是,由于某种原因,Paypal 仍然将交易 IPN 历史记录为“重试”。下面是来自 GitHub 的示例代码,用于创建我们正在排除故障的 IPN 侦听器。

对于销售和退款,返回到 Paypal 的帖子是否需要不同?

非常感谢任何帮助。干杯

<%@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%>

【问题讨论】:

    标签: asp-classic paypal-ipn


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的快速回复和澄清。我的服务器端工作正常。这是 Paypal 识别我的服务器已收到我遇到问题的退款消息。在 IPN 历史记录中,退款消息始终显示为“正在重试”。受够了这些错误,IPN 就会自动关闭。销售 IPN 消息在 IPN 历史记录中标记为已发送。退款消息是否也应标记为已发送?​​
    • 要成功接收 IPN,HTTP 响应状态必须为 200 OK。
    • 您是说我需要在我的 HTTP POST 中使 str 等于“OK”以进行退款吗?与带有通知验证的整个消息一起销售的 str 不同吗?非常感谢您的帮助,我只是不明白我的 IPN 侦听器代码需要更改什么。
    • 否,收到 IPN 时的 HTTP 状态为 200。这与发布验证无关。
    • 感谢您一直以来的帮助。我相信 Paypal 的 HTTP 状态是 200 OK,因为我的业务代码执行正确。脚本中的 IF 条件表示是否不是 200 报告和错误。如果是 200 执行业务逻辑,这就是正在发生的事情。我只是想知道为什么以及如何修复 Paypal,知道消息已被接受,并将 IPN 消息标记为已完成,而不是在 IPN 历史列表中“重试”。
    猜你喜欢
    • 2011-07-03
    • 2017-08-30
    • 1970-01-01
    • 2013-12-26
    • 2014-08-14
    • 1970-01-01
    • 2011-01-17
    • 2014-01-23
    • 2012-11-07
    相关资源
    最近更新 更多