PHP-了解时间戳参数(使用记录)

时间:2018-10-22 17:38:40

标签: php stripe-payments unix-timestamp

我正在尝试为条带中的计量计费设置即将到来的发票。为此,我需要运行使用记录。我的理解是,将需要运行“用法”记录以生成准确的即将到来的发票。我创建了一个名为stripeUsageRecord()的函数,该函数在生成发票之前会被调用。

  public function stripeUsageRecord()
  {
    $authUser = auth()->user();
    $sub_item = $authUser['subscription_item'];
    \Stripe\Stripe::setApiKey(env("STRIPE_SECRET"));
    return \Stripe\UsageRecord::create(array(
      "quantity" => 11,
      // "timestamp" => time(),
      "timestamp" => 1540225312,
      "subscription_item" => $sub_item,
      "action" => "set"
    ));
  }

此功能确实可以达到预期的效果。我遇到的唯一问题是我无法动态设置时间戳。如果我运行一个静态时间戳(在订阅日期范围内),它将按照我想要的方式运行,而不会增加它。但是,如果我使用php time()将时间戳设置为当前时间,它将增加数量(当我需要更新它时)。

(在我的代码中,数量是由查询确定的,该查询计算的是在订阅时间范围内在该位置购物的所有用户。在这里,我只添加一个数字,以便于理解。)

如何设置动态更新数量的时间戳,而不是将其添加到之前使用不同时间戳的使用记录之上?

1 个答案:

答案 0 :(得分:1)

创建datetime.date(2018, 10, 22)时,UsageRecord将在给定的时间戳上覆盖使用量。如果您创建的新记录具有不同的时间戳,它将仅添加到期末要收取的总额中,而不是覆盖。

解决此问题的方法是,您可以使用选项set设置基础计划,以便最终发票上仅使用时间戳的最后一条记录!

类似这样的东西:

aggregate_usage=last_during_period

更多上下文在这里: https://stripe.com/docs/billing/subscriptions/metered-billing#reporting-usage