【问题标题】:PayPal Subscription IPN Next Billing DatePayPal 订阅 IPN 下一个账单日期
【发布时间】:2014-02-21 02:21:54
【问题描述】:

我的网络应用程序使用 PayPal 每月订阅。我在付款、用户注册/取消等时收到 IPN 通知,这一切似乎都运行良好。

IPN 消息中似乎缺少的一件事是有关下一个计费日期的任何形式的指示。 https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNandPDTVariables/#id091EB0901HT

起初我以为既然是按月订阅,我可以简单地在上一个日期上加一个月,但 PayPal 似乎有一种很时髦的方法来计算下一个付款日期——它并不总是 30 或 31 天或月。

下一个计费日期可从 PayPal 内部获得,但似乎不会在任何 IPN 消息中一起发送。

有谁知道从 IPN 消息中可用的信息中解决此问题的简单方法?

【问题讨论】:

  • 您究竟为什么需要知道?我已经实现了一个 Paypal 订阅系统,我唯一注意到的是 subscr_signup,用于创建用户,然后是实际付款,以使他能够在另一个期限内访问相应的产品。没有报酬,没有访问权限。我保存了其他内容以用于会计目的,但我不需要知道下一个结算日期。
  • 嗨,我想为用户提供一个“支付截止日期”...我知道他们可以登录到 paypal 并找到这个,但如果知道他们的订阅时间是什么时候会很好支付给,以及下一次支付的时间。
  • 你知道,从最后付款日期和订阅期开始。下一笔付款应在到期前不久到期,但确切的付款时间取决于 Paypal,而这不一定是提前知道的。
  • 嗨,是的,这确实是我认为的唯一方法...尽管它变得有点复杂,因为可以在到期日和下一次付款后 3、5、7 等天重试错过的付款那么 date 就不是未来的完整计费周期。

标签: paypal paypal-ipn paypal-subscriptions


【解决方案1】:

我最近也遇到了这个问题。我不确定人们能否就订阅“一个月”的含义获得一致的方案。例如,如果您在 3 月 31 日注册服务,那么下一次付款是在 4 月 30 日还是 5 月 1 日到期?您只需要选择一个并将其清楚地传达给您的用户。不幸的是,PayPal 无法为我们提供这种礼遇。

最后,我决定为用户提供 32 天或 367 天的服务访问权限,分别用于月度和年度订阅。我知道您可能会在这里和那里“输掉”一两天,但我认为最好允许一些宽限访问,而不是冒险给用户的时间少于支付的费用。

如果一切顺利,如果您还收听subscr_eotsubscr_payment IPN(请参阅https://stackoverflow.com/a/1195246/1852838),那么您激活帐户的时间实际上并不重要。我从下一次付款之日起续订上述期限,以便订阅始终与 PayPal 付款周期同步。 PayPal 将在最后一个付费期结束时向您发送eot IPN,以便您可以在服务器端终止订阅。这意味着你决定给予他们多少“恩典”并不重要。

就提供“支付至”而言,我将简单地提供“宽限期”日期,因为您是实际决定该期限的人。但是,我建议您也让他们知道他们应该在下一次付款时按照最保守的估计付款。这将是最后一次付款后的 30 天或月末(如果在此之后)。

【讨论】:

    【解决方案2】:

    这可能会对您有所帮助。要准确指定天数,请不要使用贝宝的 MONTHLY 类型。而是像这样指定DAY

    以下将每 30 天向客户收费:

        ->setfrequency_interval('30')
        ->setfrequency('DAY')
    

    【讨论】:

      【解决方案3】:

      每月定期付款大约每 30 天收取一次。

      如果订阅条款为每月 25.99 美元,并且订阅者在 7 月 31 日星期四注册。订阅者的计费方式如下:

      • 7 月 31 日,星期四 = 25.99 美元
      • 8 月 31 日星期六 = 25.99 美元
      • 10 月 1 日,星期三 = 25.99 美元
      • 11 月 1 日星期六 = 25.99 美元

      【讨论】:

        【解决方案4】:

        最坏的情况是原始订阅日期是每月 31 日

        为了安全起见,我允许一个月,然后 +1 天,但后来发生了这种情况。

        31 日开始订阅

        客户在 1 月 31 日订阅并付款。因为那是当月的最后一天,PayPal 在 2 月 28 日再次向他们收费。然后我的代码计算出下一个付款日期(+1 天宽限期)= 3 月 29 日。但是,当然不是。现在是 3 月 31 日。

        我会跟踪那个“下一个付款日期”,即使它不是 100% 准确,也会显示在用户的个人资料页面上。 PayPal 没有在 IPN 数据中包含这一重要信息,这对我来说似乎很疯狂。

        解决方案 1

        一种选择是允许更长的宽限期,或者如果付款日期是任何给定月份的最后一天,则可以例外。这可以正常工作,但有时会向用户显示稍微错误的信息。

        解决方案 2

        跟踪订阅原始日期的月份值。这样你就可以随时参考它。因此,在我的示例中,该日期为 31。我保留该值,然后每当我需要更新“下一个付款日期”时,我就可以在下个月使用该月的那一天。对于较短的月份,如果它是

        【讨论】:

          猜你喜欢
          • 2018-03-15
          • 2012-05-19
          • 2010-11-06
          • 2014-11-08
          • 1970-01-01
          • 2019-12-29
          • 2012-12-17
          • 2017-02-10
          相关资源
          最近更新 更多