feat: add invoice

This commit is contained in:
2026-05-27 13:14:09 +02:00
parent a01387bb09
commit 1216c8a073
17 changed files with 352 additions and 2 deletions
@@ -51,11 +51,24 @@ class BillingController extends Controller
];
if ($creditProduct->type === CreditProductType::MONTHLY) {
if ($user->subscribed('default')) {
return response()->json([
'message' => __('api.billing.active_subscription_exists'),
], 409);
}
$checkout = $user
->newSubscription('default', $creditProduct->stripe_price_id)
->withMetadata($metadata)
->checkout($sessionOptions);
} else {
$sessionOptions['invoice_creation'] = [
'enabled' => true,
'invoice_data' => [
'metadata' => $metadata,
],
];
$checkout = $user->checkout([
$creditProduct->stripe_price_id => 1,
], $sessionOptions);
@@ -83,6 +96,12 @@ class BillingController extends Controller
$user = $request->user();
$this->ensureStripeCustomer($user);
if (! $user->subscribed('default')) {
return response()->json([
'message' => __('api.billing.no_active_subscription'),
], 409);
}
$portalUrl = $user->billingPortalUrl($this->redirectUrl('portal'));
return response()->json([
+1
View File
@@ -28,6 +28,7 @@ class UserResource extends JsonResource
'role' => $this->role,
'accountVerified' => $this->account_verified_at !== null,
'aiCreditsBalance' => (int) $this->ai_credits_balance,
'hasActiveSubscription' => $this->subscribed('default'),
'suspendedAt' => $this->suspended_at?->toISOString(),
'physicalActivityLevel' => $this->physical_activity_level,
'physicalActivityLevelLabel' => $this->physical_activity_level?->getLabel(),