PayPal定期付款已取消,剩余天数



我有一个基于订阅的成员资格,但是我遇到了以下问题:

  1. 用户于2012年5月1日订阅,每月无限期付款。
  2. IPN 发送到服务器,激活订阅
  3. 用户于 2012 年 5 月 3 日取消。
  4. IPN 发送到服务器,订阅被取消,服务器取消成员资格。

但是,由于用户在 2012 年 5 月 1 日订阅,如果他在一个月之前取消,他还有一些日子。有什么办法可以解决这个问题吗?PayPal是否针对此类问题发送任何 IPN?

我想到的一个解决方案是每天晚上做一个 cronjob 来检查这个月是否到了。

当我们在自己的网站上实现订阅服务时,我们基本上是这样处理事件:

  • 订阅确认 - 我们将用户在我们的服务器上的订阅标记为"自动续订">
  • 收到的款项 - 我们根据约定的期限(每月或每年(移动用户的订阅到期日期;使用试用期,此事件仅在试用期结束时发送
  • 订阅取消 - 我们将用户在服务器上的订阅标记为"手动续订">
  • 退款 - 我们会根据约定的期限将用户的订阅到期日期移回。

用户登录后,我们会检查订阅是否已过期(如果您将其存储在数据库中,这很容易(。

基本上,订阅事件与付款事件是分开的。订阅可以取消,但这并不意味着付款会退还;这将是一个单独的事件。

顺便说一句,付款

和订阅事件可以有不同的顺序(例如,付款可以先出现,然后是订阅通知(;满足这一点很重要。

当用户订阅时,PayPal将创建一个定期付款资料,这意味着用户必须在订阅当天(例如 5 月 1 日、6 月 1 日、7 月 1 日(每月(每年、每天,具体取决于个人资料(支付金额。当用户取消时,他会取消付款资料,而不是付款本身。因此,在那之后PayPal不会要求任何其他付款。如果要为用户提供剩余的天数,则必须存储有关订阅的信息。

您可以将他订阅的日期和取消的日期存储在数据库中。从那里你可以知道用户还有多少天。PayPal在创建定期付款资料、付款本身和取消时发送 IPN 消息。

您可以在此处找到有关 IPN 消息的信息:https://cms.paypal.com/cms_content/US/en_US/files/developer/IPNGuide.pdf

IPN 消息中的一个 D/V 对next_payment_date后跟如下所示的日期: 03:00:00 七月 06, 2013 PDT

我将日期转换为 YYYY-MM-DD,并将其存储在数据库中,以及 IPN 消息中出现的profile_status值。当个人订阅时,我在数据库中也有一个简单的 TRUE/FALSE 订阅者单元格。

因此,如果订阅者取消,其profile_status将在数据库中更新为"已取消",订阅者单元将更新为 FALSE。

当用户访问高级内容时,将检查数据库中的订阅者单元是否为 TRUE。如果是这样,他们就会得到内容。如果为 FALSE,则选中profile_status单元格,如果该单元格为"已过期"或 NULL,则它们不会获取内容。如果单元格的内容为"已取消",则会提取next_payment_date数据,添加一天(以处理时区问题(,如果它大于当前时间,则加载高级内容。如果小于当前日期,则其profile_status单元格将更新为"已过期",并且他们不会收到内容。

这是一个非常古老的(2012 年(问题,但我在 2019 年寻找这些信息时能够谷歌它。

目前,取消付款的PayPal网络钩子包括下一次付款的日期。这意味着您可以将用户状态标记为已取消,并将其帐户到期日期设置为下一个付款日期。

相关信息在里面.resource.billing_info.next_billing_time

最新更新