我在VBScript / Classic ASP中实现了一个IPN监听器 . 在我看来,它似乎完美无缺 . 当它被调用时,它会将消息发送回Paypal,附加 cmd=_notify-validate . 然后检查 objHttp.status = 200 和 objHttp.responseText = "VERIFIED" 的响应,然后将订单添加到我的数据库 .
cmd=_notify-validate
objHttp.status = 200
objHttp.responseText = "VERIFIED"
但Paypal正在给我发电子邮件;
主题:PayPal即时付款通知警告发送到以下URL的即时付款通知失败:
根据IPN Testing
每个侦听器都必须包含处理“错误通知”IPN消息的代码 .
无论哪种方式,您都应该一步一步地按照IPN troubleshooting tips中的步骤进行操作 .
以下是我挑选出的一些应该有所帮助的内容 .
检查IPN历史记录中列出的URL,以确保PayPal将每个IPN发布给您的侦听器 .
检查Web服务器的访问和错误日志 .
检查编程语言的错误日志 .
验证您的IPN侦听器是否响应所有消息,即使是那些您不打算处理的消息 .
继OPs comments
代码样本Paypal给出,其中不执行此步骤 . 这个步骤需要吗?
听起来你错过了文档中工作流程的第2步
2.从PayPal收到IPN消息后,您的侦听器会向PayPal返回一个空的HTTP 200响应 . 否则,PayPal重新发送IPN消息 .
从PHP样本来看,两者似乎都首先发送验证,这与文档建议的工作流程不符 .
在这种情况下你应该能够做到
Response.Status = "200 OK"
在剩下的代码之后,确保没有使用 Response.Write() 回写其他内容,因此服务器响应为空,您甚至可以使用
Response.Write()
Call Response.Clear()
在设置 Response.Status 之前,确保没有从 Response 缓冲区写入任何其他内容 . 但是,只有事先将 Response.Buffer 设置为 True (通常在脚本的开头),这才有效 .
Response.Status
Response
Response.Buffer
True
1 回答
根据IPN Testing
无论哪种方式,您都应该一步一步地按照IPN troubleshooting tips中的步骤进行操作 .
以下是我挑选出的一些应该有所帮助的内容 .
检查IPN历史记录中列出的URL,以确保PayPal将每个IPN发布给您的侦听器 .
检查Web服务器的访问和错误日志 .
检查编程语言的错误日志 .
验证您的IPN侦听器是否响应所有消息,即使是那些您不打算处理的消息 .
继OPs comments
听起来你错过了文档中工作流程的第2步
从PHP样本来看,两者似乎都首先发送验证,这与文档建议的工作流程不符 .
在这种情况下你应该能够做到
在剩下的代码之后,确保没有使用
Response.Write()
回写其他内容,因此服务器响应为空,您甚至可以使用在设置
Response.Status
之前,确保没有从Response
缓冲区写入任何其他内容 . 但是,只有事先将Response.Buffer
设置为True
(通常在脚本的开头),这才有效 .