feat: ensure stripe customer
Laravel CI-CD / Tests Unitaires (push) Successful in 1m34s Details
Laravel CI-CD / Deploy with Kamal (push) Successful in 1m49s Details

This commit is contained in:
Leon Morival 2026-05-27 10:31:34 +02:00
parent d13149a07b
commit 6a24d07cec
1 changed files with 17 additions and 1 deletions

View File

@ -29,6 +29,8 @@ class BillingController extends Controller
abort_unless(filled($creditProduct->stripe_price_id), 404);
$user = $request->user();
$this->ensureStripeCustomer($user);
$metadata = [
'credit_product_id' => $creditProduct->getKey(),
'credit_product_type' => $creditProduct->type->value,
@ -62,11 +64,25 @@ class BillingController extends Controller
public function portal(Request $request): JsonResponse
{
$user = $request->user();
$this->ensureStripeCustomer($user);
$portalUrl = $user->billingPortalUrl($this->redirectUrl('portal'));
return response()->json([
'url' => $request->user()->billingPortalUrl($this->redirectUrl('portal')),
'url' => $portalUrl,
]);
}
private function ensureStripeCustomer(mixed $user): void
{
if (! is_object($user) || ! method_exists($user, 'createOrGetStripeCustomer')) {
return;
}
$user->createOrGetStripeCustomer();
}
private function redirectUrl(string $status): string
{
$scheme = trim((string) config('app.mobile_scheme', env('APP_MOBILE_SCHEME', 'bowly')), ':/');