Страница оплаты в Filament
Давайте откроем страницу оплаты. Вместо Spark покажем свой экран внутри панели. Адрес команды ведёт на /admin/acme/billing, где команда подтверждает тариф.
Создадим ManualBillingProvider.php
в каталоге App\Billing.
Класс реализует
BillingProvider.
Метод getRouteAction
вернёт страницу оплаты:
<?php
namespace App\Billing;
use App\Filament\Pages\Billing;
use App\Http\Middleware\EnsureTeamIsSubscribed;
use Filament\Billing\Providers\Contracts\BillingProvider;
class ManualBillingProvider implements BillingProvider
{
public function getRouteAction(): string
{
return Billing::class;
}
public function getSubscribedMiddleware(): string
{
return EnsureTeamIsSubscribed::class;
}
}
?>
Сама страница короткая: заголовок и кнопка оплаты в шапке. Обработчик платежа добавим отдельно, когда подключим шлюз:
<?php
namespace App\Filament\Pages;
use Filament\Actions\Action;
use Filament\Pages\Page;
class Billing extends Page
{
protected static bool $shouldRegisterNavigation = false;
protected function getHeaderActions(): array
{
return [
Action::make('pay')
->label('Pay subscription'),
];
}
}
?>
В AdminPanelProvider.php
подставим свой провайдер
вместо Spark:
<?php
namespace App\Providers\Filament;
use App\Billing\ManualBillingProvider;
use App\Models\Team;
use Filament\Panel;
use Filament\PanelProvider;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('admin')
->login()
->tenant(Team::class)
->tenantBillingProvider(new ManualBillingProvider());
}
}
?>
Откройте свою страницу, где команда оплачивает подписку.