4

对于我的会员网站,我已经完成了 IPN 处理程序。我的问题是网站“流程”之一。

这是怎么回事:用户->登陆->注册->验证->贝宝->谢谢

所以这就是问题所在(这可能都在我的脑海中)。假设您已经注册并验证了您的帐户。然后你点击“订阅!” 链接并被发送到贝宝 - 在那里您完成付款并被发送到“谢谢”页面。

如果 IPN 没有快速返回到我的站点怎么办?订阅链接仍然存在,用户可能会再次单击它,以为他们没有订阅(即使他们已经订阅了,这只是需要时间)。

如果我通过更新他们的个人资料来解决这个问题,当他们点击“订阅”链接时说......“正在激活......”,并且他们没有完成 PayPal 流程......它可能永远在说“正在激活...... ”。

只是好奇,因为这是我第一次集成 PayPal:

  • 您如何处理用户单击订阅链接和 IPN 流程完成之间的状态?

  • 您是否遇到过 IPN 无法快速到达的问题?

4

2 回答 2

1

我从来没有遇到过 IPN 不能快速到达的问题,但话说回来,我从来没有真正拥有一个拥有大量用户的大型网站。在收到 IPN 之前,我也没有对用户帐户进行任何重大更改。

我使用 paypal API 为我的一个网站进行了付费注册。用户会填写他们的用户名、密码等,然后我会将变量传递给 paypal API。在我收到 IPN 之前,不会对数据采取行动。

如果您觉得状态“正在激活...”在用户配置文件中很重要,您可以始终将时间戳与待处理付款相关联。待付款可能会在 10 分钟后超时。

于 2009-07-07T04:12:25.370 回答
1

您的问题表明与远程服务器的连接是异步的(ajax)?

以同步方式编写它可能更容易,因此 IPN 保证返回。如果不是,则意味着:

a) 用户被重定向到远程服务器后关闭了浏览器;
b) 远程服务器没有响应。

如果用户点击“取消”按钮,好的支付网关会将用户重定向回您的网站,但永远不能保证返回,因此您需要正确处理它。

我将有一个单独的表来记录给定用户的事务;那是:

一个用户,多笔交易

一些支付网关允许您在交易完成时定义为对服务器的回调。也就是说,连接是由网关发起的——它不运行浏览器,因为用户可以关闭选项卡/窗口——在那里它会发布到您的回调 URL,然后您更新事务的状态。

我不确定 PayPal 是否允许这样的事情,但到目前为止,我从来没有遇到过 PayPal 的问题,因为我一直以同步方式编写它。

当然,如果需要异步,那么您的 ajax 函数必须有一个超时/错误处理程序——我当然推荐 jQuery。

于 2009-07-07T04:13:47.927 回答