PHP 和 Paypal IPN 订阅和定期付款
Posted
技术标签:
【中文标题】PHP 和 Paypal IPN 订阅和定期付款【英文标题】:PHP and Paypal IPN Subscription and recurring payments 【发布时间】:2012-02-13 04:17:22 【问题描述】:我需要在网站上为我的客户设置 paypal 自动续订。 实际上,客户每月付款将获得 30 天的网站访问权。
如果每月自动付款没问题,我们可以将“网站访问”天数增加 30。 如果不是,则不会再向客户帐户添加任何天数。
这意味着我需要在我自己的网站上运行一个脚本,以在每次自动付款后检查并增加或阻止客户“网站访问”天数。
我们可以像这样设置贝宝自动续订吗?
每次自动续订后是否有任何方法可以运行脚本(mywebsite.com/renewalscript.php?customerid=123&payment=ok
)?
或者你有什么其他的想法来克服这个吗?
【问题讨论】:
【参考方案1】:AFAIK,对于每笔成功偿还的订阅费,您都会通过 IPN 获得信息。 “您需要运行的脚本”是 IPN 脚本。如果 PayPal 通过 IPN 通知您,您的 IPN 脚本需要处理请求/响应,如果有效,则在数据库中设置您的参数。这一切都在您网站上的 IPN 处理程序脚本中完成。
(请记住在对您的表格等进行任何本地更新之前先在此脚本中回答贝宝请求。如果您发送请求太晚,贝宝不接受它并稍后发送一个新请求)。
示例代码见https://cms.paypal.com/cgi-bin/marketingweb?cmd=_render-content&content_ID=developer/library_code_ipn_code_samples
【讨论】:
【参考方案2】:当txn_type
是subscr_eot
时,您可以通过收听IPN 来做到这一点。当订阅失败或被取消时,您可以禁止访问。
这个问题更多地解释了subscr_eot
:
Subscriptions with Paypal IPN
我使用这个类:PHP Paypal IPN Integration Class 并检查:
if($p->ipn_data['txn_type'] == 'subscr_eot')
然后将他们的status
设置为0
以禁止访问。
【讨论】:
subscr_* 状态真的是老方法吗?我正在努力回答这个问题。 ***.com/questions/13855287/…【参考方案3】:一个简单的方法可能是有一个valid_until
日期列或其他东西。当用户尝试查看内容时,只需检查该字段并查看他们是否应该能够。然后在 IPN 侦听器中,您可以将该日期提前 30 天,直到收到一笔可观的付款。
如果您在创建 IPN 侦听器方面需要帮助,您可能会发现我的教程很有帮助。
PayPal Instant Payment Notification (IPN)【讨论】:
以上是关于PHP 和 Paypal IPN 订阅和定期付款的主要内容,如果未能解决你的问题,请参考以下文章
如果用户付款或取消定期付款,Paypal IPN 会发送信息