是否可以减少 Metered Billing Plan 中的使用量(使用 Laravel Cashier - Stripe)
Is it possible to decrease the usage in Metered Billing Plan ( using Laravel Cashier - Stripe)
我正在创建一个约会应用程序,用户按约会计费,有时用户会取消订阅。在那个时候我们需要减少使用量,这是正确的方法吗?如果可以,Laravel 收银台是否有任何设施?
在 Stripe 文档中,它提到了 Action ENUM,我们可以使用它吗?
可以使用 set
而不是增量:
在源代码中我们可以看到如下SubscriptionItem#reportUsage
:
public function reportUsage($quantity = 1, $timestamp = null)
{
$timestamp = $timestamp instanceof DateTimeInterface ? $timestamp->getTimestamp() : $timestamp;
return $this->subscription->owner->stripe()->subscriptionItems->createUsageRecord($this->stripe_id, [
'quantity' => $quantity,
'action' => $timestamp ? 'set' : 'increment',
'timestamp' => $timestamp ?? time(),
]);
}
调用
public function reportUsage($quantity = 1, $timestamp = null, $price = null)
{
if (! $price) {
$this->guardAgainstMultiplePrices();
}
return $this->findItemOrFail($price ?? $this->stripe_price)->reportUsage($quantity, $timestamp);
}
所以如果你想递减你只会得到当前的用法并设置一个新的用法,你必须包含时间戳参数来使用set
而不是递增:
// get current usage
$newUsage = $currentUsage - $decrement;
$user = User::find(1);
$user->subscription('default')->reportUsage($newUsage, time());
正如所问,@Alex Harris 的回答是使用 Cashier 的一个很好的例子。为了将其推广到其他 Stripe 集成,在创建使用记录 (API ref) 时使用 action=set
支持:
curl https://api.stripe.com/v1/subscription_items/si_123/usage_records \
-u sk_test_456: \
-d quantity=100 \
-d action=set \
-d timestamp=1571252444
我正在创建一个约会应用程序,用户按约会计费,有时用户会取消订阅。在那个时候我们需要减少使用量,这是正确的方法吗?如果可以,Laravel 收银台是否有任何设施?
在 Stripe 文档中,它提到了 Action ENUM,我们可以使用它吗?
可以使用 set
而不是增量:
在源代码中我们可以看到如下SubscriptionItem#reportUsage
:
public function reportUsage($quantity = 1, $timestamp = null)
{
$timestamp = $timestamp instanceof DateTimeInterface ? $timestamp->getTimestamp() : $timestamp;
return $this->subscription->owner->stripe()->subscriptionItems->createUsageRecord($this->stripe_id, [
'quantity' => $quantity,
'action' => $timestamp ? 'set' : 'increment',
'timestamp' => $timestamp ?? time(),
]);
}
调用
public function reportUsage($quantity = 1, $timestamp = null, $price = null)
{
if (! $price) {
$this->guardAgainstMultiplePrices();
}
return $this->findItemOrFail($price ?? $this->stripe_price)->reportUsage($quantity, $timestamp);
}
所以如果你想递减你只会得到当前的用法并设置一个新的用法,你必须包含时间戳参数来使用set
而不是递增:
// get current usage
$newUsage = $currentUsage - $decrement;
$user = User::find(1);
$user->subscription('default')->reportUsage($newUsage, time());
正如所问,@Alex Harris 的回答是使用 Cashier 的一个很好的例子。为了将其推广到其他 Stripe 集成,在创建使用记录 (API ref) 时使用 action=set
支持:
curl https://api.stripe.com/v1/subscription_items/si_123/usage_records \
-u sk_test_456: \
-d quantity=100 \
-d action=set \
-d timestamp=1571252444