【问题标题】:How to handle slow IPN response?如何处理缓慢的 IPN 响应?
【发布时间】:2013-09-08 10:48:12
【问题描述】:
我有一个网站,允许用户使用贝宝付款。我使用 paypals IPN 来查看付款是否成功。
只要完成、取消、挂起、失败等 ipn 响应快速,一切正常。但是,如果 paypal 发送 ipn 响应很慢,我需要阻止用户多次付款。
例如,如果贝宝要发送完整的响应,在这种情况下,它不会发送待处理的响应。如果贝宝需要 5 分钟才能做到这一点。如何阻止用户在这 5 分钟内支付两次?
【问题讨论】:
标签:
php
paypal
paypal-ipn
paypal-nvp
【解决方案1】:
这是我通常使用 PayPal 的方式:
- 完整的订单页面,不包含 PayPal 表单。
- 完整的订单表单重定向到一个内部页面,该页面保存订单并生成 PayPal 表单。 您可以在此处执行您的自定义逻辑。(即检查用户是否在过去 5 分钟内已发送到 PayPal 等)。
- 上述步骤应生成 PayPal 表单,其中包含将发送到 Paypal 的每一位信息。请注意,除了提交按钮之外,所有内容都将对用户隐藏。使用 javascript 单击该提交按钮,用户将被重定向到 PayPal,但作为后备,执行 5 秒计时器,如果用户在 5 秒内未重定向,则通知用户单击该按钮。
就是这样,别忘了在custom字段中将您本地保存的订单号发送到PayPal。
在继续之前,请注意以下事项:如果用户被重定向到 PayPal - 但关闭了窗口,您将无法知道订单是否会被支付。如果他点击取消,您可以向 PayPal 发送取消 url,您将在此处收到信息并将订单标记为已取消。
PS:
在第 3 步中,您可以告诉用户您已经收到了他们的待处理订单,并且他们只有在不想支付之前的订单时才应该继续。