PHP - 理解时间戳参数(使用记录)
PHP - Understanding timestamp argument (usage records)
我正在尝试为来自条带的计量计费设置即将到来的发票。为此,我需要 运行 使用记录。我的理解是使用记录需要 运行 才能生成准确的即将开出的发票。我创建了一个名为 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"
));
}
这个功能确实达到了预期的效果。我 运行 遇到的唯一问题是我无法动态设置时间戳。如果我 运行 一个静态时间戳(在订阅日期 运行ge 内),它会按照我想要的方式工作,而不是增加它。但是如果我使用 php time()
将时间戳设置为当前时间,它会增加数量(当我需要更新它时)。
(在我的代码中,数量是由一个查询决定的,该查询计算订阅时间范围内在该位置购物的所有用户。这里我只是添加一个数字,这样更容易理解。)
如何设置时间戳来动态更新数量,而不是将其添加到具有不同时间戳的先前使用记录运行之上?
创建 UsageRecord
时,set
将覆盖给定时间戳的使用量。如果您创建的新记录具有不同的时间戳,它只会在期末添加到要收费的总额中,而不是覆盖。
解决此问题的方法是您可以使用选项 aggregate_usage=last_during_period
设置基础计划,以便在最终发票上仅使用时间戳的最后一条记录!
像这样:
\Stripe\Plan::create(array(
"amount" => 100,
"interval" => "month",
"product" => array(
"name" => "Gold Metered"
),
"currency" => "usd",
"id" => "gold-metered",
"usage_type" => "metered",
"aggregate_usage" => "last_during_period"
));
更多上下文在这里:
https://stripe.com/docs/billing/subscriptions/metered-billing#reporting-usage
我正在尝试为来自条带的计量计费设置即将到来的发票。为此,我需要 运行 使用记录。我的理解是使用记录需要 运行 才能生成准确的即将开出的发票。我创建了一个名为 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"
));
}
这个功能确实达到了预期的效果。我 运行 遇到的唯一问题是我无法动态设置时间戳。如果我 运行 一个静态时间戳(在订阅日期 运行ge 内),它会按照我想要的方式工作,而不是增加它。但是如果我使用 php time()
将时间戳设置为当前时间,它会增加数量(当我需要更新它时)。
(在我的代码中,数量是由一个查询决定的,该查询计算订阅时间范围内在该位置购物的所有用户。这里我只是添加一个数字,这样更容易理解。)
如何设置时间戳来动态更新数量,而不是将其添加到具有不同时间戳的先前使用记录运行之上?
创建 UsageRecord
时,set
将覆盖给定时间戳的使用量。如果您创建的新记录具有不同的时间戳,它只会在期末添加到要收费的总额中,而不是覆盖。
解决此问题的方法是您可以使用选项 aggregate_usage=last_during_period
设置基础计划,以便在最终发票上仅使用时间戳的最后一条记录!
像这样:
\Stripe\Plan::create(array(
"amount" => 100,
"interval" => "month",
"product" => array(
"name" => "Gold Metered"
),
"currency" => "usd",
"id" => "gold-metered",
"usage_type" => "metered",
"aggregate_usage" => "last_during_period"
));
更多上下文在这里: https://stripe.com/docs/billing/subscriptions/metered-billing#reporting-usage