在开发应用程序时,您可能希望在应用程序的数据库中“模拟”订阅记录,以便对 $billable->subscribed()
方法的调用返回 true
。
要实现此目的,您可以在可计费模型的 工厂类 中添加一个“状态”方法。通常,这将是您应用程序的 UserFactory
类。下面您将找到一个示例状态方法实现;但是,您可以根据应用程序的自身需求调整它。
use App\Models\User;
/**
* Indicate that the user should have a subscription plan.
*
* @return $this
*/
public function withSubscription(string|int $priceId = null): static
{
return $this->afterCreating(function (User $user) use ($priceId) {
optional($user->customer)->update(['trial_ends_at' => null]);
$subscription = $user->subscriptions()->create([
'type' => 'default',
'paddle_id' => fake()->unique()->numberBetween(1, 1000),
'status' => 'active',
'trial_ends_at' => null,
'paused_at' => null,
'ends_at' => null,
]);
$subscription->items()->create([
'product_id' => fake()->unique()->numberBetween(1, 1000),,
'price_id' => $priceId,
'status' => 'active',
'quantity' => 1,
]);
});
}
定义状态方法后,您可以在通过工厂创建模型时使用它。
$user = User::factory()->withSubscription($priceId = 'pri_monthly')->create();
$user->subscribed(); // true