我正在尝试为条带中的计量计费设置即将到来的发票。为此,我需要运行使用记录。我的理解是,将需要运行“用法”记录以生成准确的即将到来的发票。我创建了一个名为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()
将时间戳设置为当前时间,它将增加数量(当我需要更新它时)。
(在我的代码中,数量是由查询确定的,该查询计算的是在订阅时间范围内在该位置购物的所有用户。在这里,我只添加一个数字,以便于理解。)
如何设置动态更新数量的时间戳,而不是将其添加到之前使用不同时间戳的使用记录之上?
答案 0 :(得分:1)
创建datetime.date(2018, 10, 22)
时,UsageRecord
将在给定的时间戳上覆盖使用量。如果您创建的新记录具有不同的时间戳,它将仅添加到期末要收取的总额中,而不是覆盖。
解决此问题的方法是,您可以使用选项set
设置基础计划,以便最终发票上仅使用时间戳的最后一条记录!
类似这样的东西:
aggregate_usage=last_during_period
更多上下文在这里: https://stripe.com/docs/billing/subscriptions/metered-billing#reporting-usage