feat: Complete checkout overhaul with Stripe PaymentIntent integration and abandoned cart recovery

This commit is contained in:
Codex Agent
2025-10-07 22:25:03 +02:00
parent dd5545605c
commit aa8c6c67c5
38 changed files with 1848 additions and 878 deletions

View File

@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
{{-- Inline script to detect system dark mode preference and apply it immediately --}}
<script>

View File

@@ -0,0 +1,47 @@
<!DOCTYPE html>
<html>
<head>
<title>{{ __('emails.abandoned_checkout.subject_' . $timing, ['package' => $package->name]) }}</title>
<style>
.cta-button {
background-color: #007bff;
color: white;
padding: 12px 24px;
text-decoration: none;
border-radius: 4px;
display: inline-block;
margin: 10px 0;
}
.benefits {
background-color: #f8f9fa;
padding: 15px;
border-radius: 4px;
margin: 15px 0;
}
.benefit-item {
margin: 5px 0;
}
</style>
</head>
<body>
<h1>{{ __('emails.abandoned_checkout.greeting', ['name' => $user->fullName]) }}</h1>
<p>{{ __('emails.abandoned_checkout.body_' . $timing, ['package' => $package->name]) }}</p>
<a href="{{ $resumeUrl }}" class="cta-button">
{{ __('emails.abandoned_checkout.cta_button') }}
</a>
<p>{{ __('emails.abandoned_checkout.cta_link', ['url' => $resumeUrl]) }}</p>
<div class="benefits">
<h3>{{ __('emails.abandoned_checkout.benefits_title') }}</h3>
<div class="benefit-item"> {{ __('emails.abandoned_checkout.benefit1') }}</div>
<div class="benefit-item"> {{ __('emails.abandoned_checkout.benefit2') }}</div>
<div class="benefit-item"> {{ __('emails.abandoned_checkout.benefit3') }}</div>
<div class="benefit-item"> {{ __('emails.abandoned_checkout.benefit4') }}</div>
</div>
<p>{!! __('emails.abandoned_checkout.footer') !!}</p>
</body>
</html>

View File

@@ -1,14 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>Purchase Confirmation</title>
<title>{{ __('emails.purchase.subject', ['package' => $package->name]) }}</title>
</head>
<body>
<h1>Kauf-Bestätigung</h1>
<p>Vielen Dank für Ihren Kauf, {{ $purchase->user->fullName }}!</p>
<p>Package: {{ $purchase->package->name }}</p>
<p>Preis: {{ $purchase->amount }} </p>
<p>Das Package ist nun in Ihrem Tenant-Account aktiviert.</p>
<p>Mit freundlichen Grüßen,<br>Das Fotospiel-Team</p>
<h1>{{ __('emails.purchase.greeting', ['name' => $user->fullName]) }}</h1>
<p>{{ __('emails.purchase.package', ['package' => $package->name]) }}</p>
<p>{{ __('emails.purchase.price', ['price' => $purchase->price]) }}</p>
<p>{{ __('emails.purchase.activation') }}</p>
<p>{!! __('emails.purchase.footer') !!}</p>
</body>
</html>

View File

@@ -1,14 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Fotospiel</title>
<title>{{ __('emails.welcome.subject', ['name' => $user->fullName]) }}</title>
</head>
<body>
<h1>Willkommen bei Fotospiel, {{ $user->fullName }}!</h1>
<p>Vielen Dank für Ihre Registrierung. Ihr Account ist nun aktiv.</p>
<p>Username: {{ $user->username }}</p>
<p>E-Mail: {{ $user->email }}</p>
<p>Bitte verifizieren Sie Ihre E-Mail-Adresse, um auf das Admin-Panel zuzugreifen.</p>
<p>Mit freundlichen Grüßen,<br>Das Fotospiel-Team</p>
<h1>{{ __('emails.welcome.greeting', ['name' => $user->fullName]) }}</h1>
<p>{{ __('emails.welcome.body') }}</p>
<p>{{ __('emails.welcome.username', ['username' => $user->username]) }}</p>
<p>{{ __('emails.welcome.email', ['email' => $user->email]) }}</p>
<p>{{ __('emails.welcome.verification') }}</p>
<p>{!! __('emails.welcome.footer') !!}</p>
</body>
</html>