我已经在VBScript/Classic ASP中实现了IPN监听器。 从我这边来看,它似乎很完美。 当它被调用时,它会将消息发送回Paypal附加cmd=_notify-validate
。然后,它检查objHttp.status = 200
和objHttp.responseText = "VERIFIED"
的响应,然后将该命令添加到我的数据库。PayPal IPN处理
然而贝宝给我发电子邮件;
主题:贝宝即时付款通知警告发送到以下网址
即时付款通知是失败:
我已经在VBScript/Classic ASP中实现了IPN监听器。 从我这边来看,它似乎很完美。 当它被调用时,它会将消息发送回Paypal附加cmd=_notify-validate
。然后,它检查objHttp.status = 200
和objHttp.responseText = "VERIFIED"
的响应,然后将该命令添加到我的数据库。PayPal IPN处理
然而贝宝给我发电子邮件;
主题:贝宝即时付款通知警告发送到以下网址
即时付款通知是失败:
每一位聆听者必须包括处理“错误通知”IPN消息的代码。
无论哪种方式,你应该按照步骤IPN troubleshooting tips一步一步。
这里有几个我选择的应该帮助。
代码示例贝宝给,在其中不执行此步骤。这一步是否需要?
这听起来像你缺少步骤2从工作流程文档
2.来自PayPal接收IPN消息后,监听器返回一个空的HTTP 200响应于贝。否则,PayPal将重新发送IPN消息。
通过PHP示例来判断,两者似乎都首先发送验证,这与文档建议的工作流程不符。
在这种情况下,你应该能够做到
Response.Status = "200 OK"
代码的休息后,确保没有其他人在写回使用Response.Write()
因此服务器响应是空白的,你甚至可以用
Call Response.Clear()
在设置Response.Status
之前,确保没有其他东西从Response
缓冲区写入。但是,如果Response.Buffer
事先设置为True
(通常在脚本的开始处),则此操作才有效。
我试着添加'Response.Status =“200 OK”'但它仍然不起作用(就PayPal而言) –
如何使用objHttp.Send发送200的状态,以便我可以发送根据文档提前回复? –
事情是@AntonyMeadley,发送“回复”与发送“请求”不同,当您使用“objHttp.Send”向PayPal发送新的“请求”时,PayPal会发送“回复” 。您在PayPal的IPN历史记录中看到了什么,听众是否在那里返回'200 OK'? – Lankymart
贝宝是否期望您的网页有特定的回复,可能您没有回复作为确认回复已处理? – Lankymart
@Lankymart经过进一步调查,似乎有一些Paypal文档说需要完成的差异 (在收到PayPal的IPN消息后,您的监听器向PayPal返回一个空的HTTP 200响应,否则,PayPal会重新发送IPN消息)。 和贝宝给出的代码示例,其中不执行此步骤。 此步骤是否需要? 如果是这样,任何人都可以给我一个代码示例在VBScript /经典ASP显示如何做到这一点? –
这是你使用的代码示例吗? - [paypal/ipn-code-samples](https://github.com/paypal/ipn-code-samples/blob/master/asp/paypal_ipn.asp) – Lankymart