PayPal IPN和自动恢复

PayPal IPN和自动恢复,paypal,paypal-ipn,Paypal,Paypal Ipn,我有一个ipn侦听器,它可以将我的交易从待定更新为已完成,将我的合同付款从已完成更新为已支付。这太完美了!我也有一个返回页。。。从贝宝到我的网站。。。此页面显示感谢和按钮,允许下载他们最后一次使用PayPal支付的在线支付合同。我的问题是。。。。Ipn侦听器有时在我的返回页面显示给用户3秒钟后出现 在我的返回页中。交易和合同是否未支付。。。当ipn侦听器捕捉到结果时。。。然后,此交易和合同更改为“已付款”状态。但ipn侦听器是在后端执行的。在我的服务器上。我的返回页面在3到2秒前显示给我的用户。

我有一个ipn侦听器,它可以将我的交易从待定更新为已完成,将我的合同付款从已完成更新为已支付。这太完美了!我也有一个返回页。。。从贝宝到我的网站。。。此页面显示感谢和按钮,允许下载他们最后一次使用PayPal支付的在线支付合同。我的问题是。。。。Ipn侦听器有时在我的返回页面显示给用户3秒钟后出现

在我的返回页中。交易和合同是否未支付。。。当ipn侦听器捕捉到结果时。。。然后,此交易和合同更改为“已付款”状态。但ipn侦听器是在后端执行的。在我的服务器上。我的返回页面在3到2秒前显示给我的用户。我能做什么


我是否应该在我的返回页面中添加一个计时器延迟,直到ipn更新我的交易和合同状态?然后,向用户显示一个按钮,您可以下载上一份付费合同!。或者我最好忘记这一步。并在我的返回页面总是没有等待显示给用户感谢您的付款。您可以下载上一份付费合同

在您实际收到款项之前,您不应认为或表明交易已完成,或允许任何进一步的商业行为发生,并且只有IPN告诉您这一点

您需要相应地调整您在返回页上显示的内容

在这里,您真正应该做的是感谢客户的业务,并告诉他,一旦PayPal通知您实际的转账,下载或交付或任何内容都将立即可用

请注意,这可能需要比三秒更长的时间。如果他们选择从银行账户支付资金,可能需要3-5天:而且由于资金不足,这一过程总是有可能完全失败

因此,在设计返回页面时不要过于乐观。这笔交易要到钱存入银行后才能完成

此页显示感谢

和按钮,以允许下载他们最后的付费在线合同


糟糕。这应该在“我的帐户”中的某个位置。

我的返回页也在等待IPN通知进入我的服务器,如果你做得好,你肯定可以让它工作

最初,返回页轮询后端数据库中IPN处理程序更新的字段。然后,当返回页面看到该字段更新时,客户会得到他的“这是您支付的项目”按钮

我在这个过程中还有一分钟的超时时间。虽然我记不起最后一次实际发生的时间,但当该时间到期时,我会显示一条全面错误消息“处理您的交易时出现问题”,并邀请客户与我联系以寻求帮助

我还告诉他们,他们正在购买的许可证密钥,在我的情况下,可能是通过电子邮件发送的,因为通常是这样。由于某些原因,IPN通知有时可能需要一段时间才能到达,但我的IPN处理程序会发送一封确认电子邮件作为备份,以便他们在适当的时候收到。这通常会解决问题,我很少需要直接参与

如果PayPal暂停交易,它似乎永远不会将客户转发到返回页面,我肯定从未见过这种情况发生。相反,我假设它让客户知道他必须等待资金结清,然后就这样离开了

但是,当事务最终清除时,会发送IPN通知,然后您可以让处理程序发送该电子邮件

为了避免这听起来像是一个很大的工作,你应该从你的IPN处理发送电子邮件无论如何,因为客户希望有他们的购买记录。一旦你把这个机制放在适当的位置,剩下的就很容易了

注意:注意标记为“echeque”的IPN事务。资金尚未清算,您将在清算时收到另一个通知。然后你可以通过电子邮件向他们发送合同。如果内存可用,这会将它们转发到您的返回页,因此您必须让它们知道必须等待,以处理此问题。实际上,这种情况似乎并不经常发生

建议:当发生意外情况时,让脚本向您发送电子邮件。当PayPal在没有明显原因的情况下更改了传递给IPN处理程序的字段的名称时,这不止一次地拯救了我的培根


小结:这是一篇实用的、基于经验的文章,介绍了我的网站的工作方式,而且效果很好。尽管有神秘的反对票,我希望这篇文章的读者会觉得它有帮助。

这并不是从我的回答中得到的。你不应该让它等待。这可能需要几个星期,或者永远。你们应该把Paypal的回报和收到钱视为两个独立的事件。我已经说得很清楚了。这不是技术问题,也不是UI设计问题。这是一个商业问题。@EJP我开始讨厌你了。我在我的网站上发布了我所做的事情,因为它适合我。OP和a
任何一个读过它的人都可以自由决定这对他们来说是否是一个好的解决方案。请再读一遍这篇文章。我没有说“永远等待”,只是等待了一段合理的时间,因为贝宝几乎总是在这段时间内做出回应。事实上,在你引用的其他案例中,返回页面似乎一开始就没有被访问过。我也说过,但你似乎也没有接受。@EJP我已经更新了我的帖子,意思现在应该更清楚了。请花点时间重新阅读它——这次要正确,不要只是略读——看看它现在对你是否有意义。你在这里对我造成了严重的伤害,你最初的轻蔑评论和否决票是完全没有道理的。简单地说,你搞错了。你能从自己身上找到承认这一点的理由吗因为这就是这里需要的。