PayPal订阅 - IPN处理和网站流程?

4
对于我的会员网站,我已经完成了IPN处理程序。我的问题是关于网站的“流程”。
具体如下: 用户->着陆页->注册->验证->PayPal->感谢您
所以问题来了(可能只存在于我的头脑中)。假设您已经注册并验证了您的账户。然后您点击“订阅!”链接,被发送到PayPal - 在那里完成付款并被送到“感谢您”页面。
如果IPN不能迅速返回到我的网站怎么办?订阅链接仍然会在那里,用户可能会再次点击它,认为他们没有订阅(即使他们已经订阅,只是需要时间)。
如果我通过更新他们的个人资料来解决这个问题,例如当他们点击“订阅”链接时更新其资料为“激活中...”,如果他们没有完成PayPal过程...它可能会一直显示“激活中...”。
只是好奇,因为这是我第一次集成PayPal:
1. 您如何处理用户点击订阅链接和IPN处理完成之间的状态? 2. 您是否曾经遇到IPN没有及时到达的问题?
2个回答

1

我从未遇到过IPN没有及时到达的问题,但是我也从未拥有过一个有很多用户的大型网站。在收到IPN之前,我也没有对用户帐户进行任何重大更改。

我使用PayPal API为我的一个网站进行了付费注册。用户会填写他们的用户名、密码等信息,然后我会将变量传递给PayPal API。直到我收到IPN之前,这些数据都不会被执行。

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


如果IPN到达得很快,我可能正在发明一个尚不存在的问题。我的目标受众是日本人,所以我想确保它尽可能顺畅。谢谢! - Chaddeus

1

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

最好以同步方式编写,这样可以保证IPN返回。如果没有返回,则表示:

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

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

我会有一个单独的表来记录给定用户的交易,即:

一个用户,多个交易

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

我不确定PayPal是否允许这样的事情,但到目前为止,我从未因为我总是以同步方式编写而遇到PayPal的问题。

当然,如果需要异步,则您的ajax函数必须具有超时/错误处理程序--我当然推荐jQuery。


它已经是同步的了...如果您认为IPN会很快回来,那可能不是问题...而我正在想一些根本不存在的问题。 - Chaddeus
在编写代码时,考虑一些悲观场景总是有好处的,这样我们可以在代码中处理它 :) - Wayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接