stripe_price_id_yearly : $plan->stripe_price_id_monthly; return $user ->newSubscription('default', $priceId) ->checkout([ 'success_url' => route('me.bookings.index', ['checkout' => 'erfolg']), 'cancel_url' => route('me.bookings.index', ['checkout' => 'abbruch']), ]); } /** * URL zum Stripe Billing Portal (Zahlungsmethode, Rechnungen, Kündigung). * Rücksprung auf die Buchungs-Seite. */ public function billingPortalUrl(User $user): string { return $user->billingPortalUrl(route('me.bookings.index')); } /** * Stripe-Checkout für eine Einzel-PM. Die `single_purchase_id` in den * Session-Metadaten schließt den Kreis: `checkout.session.completed` * markiert den Kauf über ProcessStripeWebhook als bezahlt. */ public function forSinglePurchase(User $user, SinglePurchase $purchase): Checkout { return $user->checkout([config('billing.single_pm_stripe_price_id') => 1], [ 'success_url' => route('me.bookings.index', ['checkout' => 'erfolg']), 'cancel_url' => route('me.bookings.index', ['checkout' => 'abbruch']), 'metadata' => ['single_purchase_id' => (string) $purchase->id], ]); } }