PayPal IPN - 如果响应无效,要发回什么 http 状态标头?

Cru*_*aft 3 paypal paypal-ipn

我正在改进 PayPal IPN 侦听器。我已阅读规格,但仍有一些悬而未决的问题。众所周知,如果您收到通知,您必须在第二个通道上连接到 PayPal,向他们发送收到的数据,PayPal 将回答“已验证”或“无效”。在某些情况下,PayPal 会重新发送通知,直到收到我们的答复。PayPal 有一个名为“IPN History”的调试页面。

我至少有一次收到无效消息,而“IPN 历史记录”显示正常状态“已发送”。

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

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

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

我收到的无效 PayPal 付款现在在 PayPal 中显示为正常付款。但随后并没有进一步的通知。

问题 4:我认为此行为是 PayPal 内部问题,正确的方法是告诉 PayPal 有错误,以便它在 5 分钟后发送另一个通知。那是对的吗?

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

谢谢!

Dre*_*ell 5

A1) 正确。他们只是将数据 POST 到您的脚本,如果他们从您的服务器收到 200 OK 返回,则无论您是否 POST 返回进行验证,他们都认为交易已完成。

A2) 正确。

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

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

A5) 如果您发回 200 以外的任何内容,它会重试,但如果您最终遇到一堆失败并重试,它们会将您置于延迟队列中,并且您不会那么快获得 IPN就像你通常会做的那样,所以我不会推荐它。您希望避免 IPN 脚本中出现 200 个以外的结果。