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

时间:2012-05-18 17:02:47

标签: paypal paypal-ipn

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

  1. 用户于2012年5月1日订阅,每月无限期付款。
  2. IPN发送到服务器,激活订阅
  3. 用户于2012年5月3日取消。
  4. 发送到服务器的IPN,订阅被取消,服务器取消了会员资格。
  5. 然而,当用户在2012年5月1日订阅时,如果他在一个月之前取消,他仍然有一些日子。有办法解决这个问题吗? PayPal是否会针对此类问题发送任何IPN?

    我想到的一个解决方案是每晚做一个cronjob来检查月份是否已经结束。

4 个答案:

答案 0 :(得分:3)

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

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

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

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

顺便说一下,付款和订阅活动可能会有不同的顺序(例如付款可以先到,然后是订阅通知);迎合这一点很重要。

答案 1 :(得分:2)

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

您可以在订阅当天和取消当天存储在数据库中。从那里您可以知道用户还有多少天。 Paypal在创建定期付款资料,付款本身和取消时都会发送IPN消息。

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

答案 2 :(得分:1)

IPN邮件中的一个D / V对是 next_payment_date ,后面是这样的日期: 03:00:00 2013年7月6日PDT

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

因此,如果订阅者取消,他们的 profile_status 会在数据库中更新为“已取消”且订阅者单元格已更新为FALSE。

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

答案 3 :(得分:1)

这是一个非常古老的问题(2012年),但是当我在2019年寻找该信息时,我便能够使用它进行搜索。

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

相关信息位于.resource.billing_info.next_billing_time

内部
相关问题