2

我正在改进一个 PayPal IPN 监听器。我已经阅读了规范,但仍有一些悬而未决的问题。众所周知,如果您收到通知,您必须在第二个通道上连接到 PayPal,将接收到的数据发送给他们,然后 PayPal 将回答 VERIFIED 或 INVALID。在某些情况下,PayPal 会重新发送通知,直到收到我们的答复。并且 PayPal 有一个名为“IPN 历史”的调试页面。

我至少有一次收到 INVALID,并且“IPN 历史记录”显示正常状态“已发送”。

问题1:PayPal不检查我是否在第二个频道上连接到他们来决定消息是否正确发送是否正确?

Q2:我假设 PayPal 只查看它从我们那里收到的 http 状态标头(例如“200 OK”)来决定在“IPN 历史记录”中显示什么状态。这个对吗?

Q3:我还假设 PayPal 仅查看 http 状态标头来决定是否必须重新发送消息。那是对的吗?

我收到无效的 PayPal 付款现在在 PayPal 中显示为正常付款。但稍后没有额外的通知。

Q4:我认为这种行为是 PayPal 内部问题,正确的做法是告诉 PayPal 出现错误,以便 5 分钟后发送另一个通知。那是对的吗?

Q5:如果是这样,如果我收到 INVALID 以确保 PayPal 稍后重新发送通知,我必须将什么 http 状态标头发送回 PayPal?

谢谢!

4

1 回答 1

4

A1) 正确。他们只是将数据发布到您的脚本,如果他们从您的服务器获得 200 OK 回复,他们认为这是一个完成的交易,无论您是否发布回来进行验证。

A2) 正确。

A3) 正确。如果付款确实是合法的 PayPal 付款,那么您将其邮寄给他们进行验证的方式一定有问题。它的格式必须与他们最初发送给您的格式完全相同。

A4) 只要您的 POST 回传数据的格式相同,它就不会无效。通过将可靠的脚本放在一起,您不必将任何特定的非 200 消息发送回 PayPal 再试一次。如果您已正确配置所有内容,它将验证并且您的脚本将以 200 OK 完成。如果您的脚本有问题,它可能最终无效(但仍然返回 200 OK,因此您不会得到另一个),或者它会返回 200 以外的内容,在这种情况下,它会稍后将数据重新发布给您。

A5)如果您发送除 200 以外的任何内容,它将重试,但如果您最终遇到一堆正在重试的失败,他们会将您置于延迟队列中,您将无法尽快获得 IPN像往常一样,所以我不推荐它。您希望避免 IPN 脚本中出现 200 个结果以外的任何结果。

于 2013-01-21T18:28:01.083 回答