【发布时间】:2015-03-29 22:16:32
【问题描述】:
我正在构建一个脚本来使用 Zapier WebHooks。 Zapier 将在 gmail 从支付网关收到一封包含特定主题和消息的电子邮件后,向此脚本发送一个 post 请求。
无论如何,其中一个钩子是主题为“订阅已取消”的消息。收到此帖子请求后,我无法将脚本设置为立即结束订阅,因为我需要保持客户访问权限,直到他的最后一个付费期结束(我有 3 个计划:1 个月、6 个月和 1 年的订阅,自动续订)。
网关发送的电子邮件附带数据,可让我知道首次购买订阅的时间,格式为:dd/mm/yyyy。
(放轻松,我快到了……)
所以我有购买日期和取消日期(这是我的脚本收到发布请求的日期)。现在我有疑问了:如何设置脚本以根据这两个日期定义 EOT(学期结束)?
例如,假设客户在 2015 年 3 月 2 日 (dd/mm/yyyy) 购买了他的月度会员资格。然后我的剧本被告知他于 29/03/2015 取消。我可以将这 2 个日期存储在 2 个变量中:$purchaseDate 和 $cancellationDate。现在我需要设置我的 PHP 代码,以便它可以计算 EOT ($eotDate),在这种情况下,它是 03/04/2015。
更具体:
1) 如果是一个月订阅,$eotDate 将是$cancellationDate 之后的下一个$purchaseDate 日(上例中的第03 天)。
2) 如果订阅 6 个月,$eotDate 将是 $purchaseDate 日(上例中的第 03 天)从$purchaseDate 起 6 个月后,只要它产生日期在将来。如果结果日期是(过去)过去,我们可以假设有更新,所以$eotDate 将是$purchaseDate 12 个月后的$purchaseDate 日(第 03 天)。以此类推。
3) 对于 1 年订阅,$eotDate 将是 $purchaseDate 日(上例中的第 03 天),从 $purchaseDate 开始 12 个月后,只要它产生日期在将来。如果结果日期是(过去)过去,我们可以假设有更新,所以$eotDate 将是$purchaseDate 24 个月后的$purchaseDate 日(第 03 天)。以此类推。
我还在学习 PHP,所以我只能定义今天的日期和 1 年(或者从今天开始的几天或几个月)。但首先我需要确定取消日。我不知道怎么做,因为date() 函数会给我当前日期(会不断变化)。
$cancellationDate = date("j/m/Y");// Today, 29/03/2015. This cannot be changed.
$purchaseDate = "03/02/2015"; //example
如你所见,我迷路了。
对于任何想提供帮助但认为任务太多的人,如果您只能提供 1 号(月订阅)的帮助,我将非常感激。
【问题讨论】: