Spark 默认情况下使用基于“用户”的计费。如果您的应用程序使用团队或其他模型进行计费,则需要相应地调整 Spark 安装。我们将使用团队计费实现作为示例,在以下文档中逐步介绍这些调整。
要将 App\Models\Team
模型设为我们的可计费模型,首先需要调整 Spark 的服务提供者。
现在,我们应该更新 SparkServiceProvider
以引用 Team
模型而不是 User
模型
use App\Models\Team;
use Spark\Spark;
class SparkServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*/
public function boot(): void
{
// Resolve the current team...
Spark::billable(Team::class)->resolve(function (Request $request) {
return $request->user()->currentTeam;
});
// Verify that the current user owns the team...
Spark::billable(Team::class)->authorize(function (Team $billable, Request $request) {
return $request->user() &&
$request->user()->id == $billable->user_id;
});
Spark::billable(Team::class)->checkPlanEligibility(function (Team $billable, Plan $plan) {
// ...
});
}
}
现在,我们可以更新 Team
模型以使用 Spark\Billable
特性,并实现一个 paddleEmail
方法,该方法返回团队所有者的电子邮件地址,以便在 Paddle 仪表板中显示为客户标识符
use Spark\Billable;
class Team extends JetstreamTeam
{
use Billable;
public function paddleEmail(): string|null
{
return $this->owner->email;
}
}
最后,更新应用程序的 config/spark.php
配置文件,使其定义一个 team
可计费模型
use App\Models\Team;
'billables' => [
'team' => [
'model' => Team::class,
'plans' => [
// ...
],
],
]