PayPal IPN-如果响应无效,将返回什么http状态头?

PayPal IPN-如果响应无效,将返回什么http状态头?,paypal,paypal-ipn,Paypal,Paypal Ipn,我正在改进PayPal IPN侦听器。我已经阅读了说明书,仍然有一些悬而未决的问题。众所周知,如果您收到通知,您必须通过第二个通道连接到PayPal,将接收到的数据发送给他们,PayPal将以验证或无效的方式回答。在某些情况下,贝宝会重新发送通知,直到收到我们的答复。PayPal有一个名为“IPN历史记录”的调试页面 我至少有一次收到无效邮件,“IPN历史记录”显示正常状态“已发送” 问题1:PayPal没有检查我是否在第二个通道上连接到他们以确定消息是否正确发送,这是正确的吗 问题2:我假设P

我正在改进PayPal IPN侦听器。我已经阅读了说明书,仍然有一些悬而未决的问题。众所周知,如果您收到通知,您必须通过第二个通道连接到PayPal,将接收到的数据发送给他们,PayPal将以验证或无效的方式回答。在某些情况下,贝宝会重新发送通知,直到收到我们的答复。PayPal有一个名为“IPN历史记录”的调试页面

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

问题1:PayPal没有检查我是否在第二个通道上连接到他们以确定消息是否正确发送,这是正确的吗

问题2:我假设PayPal只查看它从我们收到的http状态头(例如“200OK”),以决定在“IPN历史记录”中显示什么状态。这是正确的吗

问题3:我还假设PayPal只查看http状态头来决定是否必须重新发送消息。对吗

我收到的PayPal付款无效,现在在PayPal中显示为正常付款。但后来没有其他通知

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

问题5:如果是这样的话,如果我收到无效消息,我必须向PayPal发送什么http状态头,以确保PayPal稍后重新发送通知

谢谢

A1)正确。他们只是把数据上传到你的脚本中,如果他们从你的服务器上得到一个200的OK,他们认为这是一个已经完成的交易,不管你是否回过头来进行验证。 A2)正确

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

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

A5)如果您发送的不是200,它将重新尝试,但如果您最终遇到一系列正在尝试的失败,他们会将您置于延迟的que中,并且您不会像通常那样快速获得IPN,因此我不建议您这样做。您希望从IPN脚本中避免除200个结果以外的任何结果。

A1)正确。他们只是把数据上传到你的脚本中,如果他们从你的服务器上得到一个200的OK,他们认为这是一个已经完成的交易,不管你是否回过头来进行验证。 A2)正确

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

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


A5)如果您发送的不是200,它将重新尝试,但如果您最终遇到一系列正在尝试的失败,他们会将您置于延迟的que中,并且您不会像通常那样快速获得IPN,因此我不建议您这样做。您希望避免IPN脚本中除了200个结果以外的任何结果。

当然,如果它确实是无效的,即来自其他地方的伪造结果,您不想向他们透露您知道的情况,因此您应该发送200个结果,让他们在以后得不到服务或产品时放弃。是的,只是重申这一点,没有理由仅仅因为脚本无效就让它返回失败的代码。将IPN记录为无效,但在系统中进行相应处理。脚本本身可以成功地将订单保存为无效,这将返回一个200 OK返回到发布到它的任何内容。感谢Andrew和EJP!我得到了关于“打倒伪造者”和“延迟IPN治疗”的争论。因此,我的结论是,没有设想和安全的方式告诉贝宝,他们应该通过IPN重新发送他们的数据。为了获得贝宝账户的完美副本,我们必须添加一些与贝宝同步的替代机制。谢谢。TransactionSearch和GetTransactionDetails。当然,如果它真的是无效的,即来自其他地方的伪造品,你不想告诉他们你知道,所以你应该发送200,让他们在以后得不到服务或产品时倒下。是的,只是重申这一点,没有理由仅仅因为脚本无效就让它返回失败的代码。将IPN记录为无效,但在系统中进行相应处理。脚本本身可以成功地将订单保存为无效,这将返回一个200 OK返回到发布到它的任何内容。感谢Andrew和EJP!我得到了关于“打倒伪造者”和“延迟IPN治疗”的争论。因此,我的结论是,没有设想和安全的方式告诉贝宝,他们应该重新发送他们的d