diff --git a/aurora-livecam/api/stripe-webhook.php b/aurora-livecam/api/stripe-webhook.php new file mode 100644 index 0000000..98070bf --- /dev/null +++ b/aurora-livecam/api/stripe-webhook.php @@ -0,0 +1,56 @@ + 'Method not allowed']); + exit; +} + +// Payload lesen +$payload = file_get_contents('php://input'); +$signature = $_SERVER['HTTP_STRIPE_SIGNATURE'] ?? ''; + +if (empty($payload)) { + http_response_code(400); + echo json_encode(['error' => 'Empty payload']); + exit; +} + +// Webhook verarbeiten +try { + $handler = new WebhookHandler(); + $result = $handler->handle($payload, $signature); + + if ($result['success']) { + http_response_code(200); + } else { + http_response_code(400); + } + + header('Content-Type: application/json'); + echo json_encode($result); + +} catch (\Exception $e) { + error_log('Stripe Webhook Error: ' . $e->getMessage()); + http_response_code(500); + echo json_encode(['error' => 'Internal server error']); +} diff --git a/aurora-livecam/dashboard/billing.php b/aurora-livecam/dashboard/billing.php new file mode 100644 index 0000000..a6157a0 --- /dev/null +++ b/aurora-livecam/dashboard/billing.php @@ -0,0 +1,282 @@ +requireLogin(); + +// Prüfe ob Billing aktiviert +if (!$settingsManager->isBillingEnabled()) { + header('Location: /dashboard/'); + exit; +} + +$user = $auth->getUser(); +$tenantId = $user['tenant_id'] ?? 0; + +$flashMessage = null; +$flashType = 'info'; + +$stripe = new StripeService(); +$subscriptions = new SubscriptionManager(); + +// Aktuelle Subscription +$currentSub = null; +$plans = []; +$invoices = []; +$trialDays = 0; + +try { + $currentSub = $subscriptions->getSubscription($tenantId); + $plans = $subscriptions->getPlans(); + $invoices = $subscriptions->getInvoices($tenantId, 5); + $trialDays = $subscriptions->getTrialDaysRemaining($tenantId); +} catch (\Exception $e) { + $flashMessage = 'Fehler beim Laden der Abrechnungsdaten'; + $flashType = 'error'; +} + +// Checkout starten +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['plan_id'])) { + $planId = (int)$_POST['plan_id']; + $plan = $subscriptions->getPlan($planId); + + if ($plan && !empty($plan['stripe_price_id'])) { + $baseUrl = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']; + $session = $stripe->createCheckoutSession( + $tenantId, + $plan['stripe_price_id'], + $baseUrl . '/dashboard/billing.php?success=1', + $baseUrl . '/dashboard/billing.php?canceled=1' + ); + + if ($session && isset($session['url'])) { + header('Location: ' . $session['url']); + exit; + } else { + $flashMessage = 'Fehler beim Erstellen der Checkout-Session'; + $flashType = 'error'; + } + } +} + +// Billing Portal öffnen +if (isset($_GET['portal'])) { + $baseUrl = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']; + $session = $stripe->createPortalSession($tenantId, $baseUrl . '/dashboard/billing.php'); + + if ($session && isset($session['url'])) { + header('Location: ' . $session['url']); + exit; + } +} + +// Success/Cancel Messages +if (isset($_GET['success'])) { + $flashMessage = 'Zahlung erfolgreich! Ihr Abo ist jetzt aktiv.'; + $flashType = 'success'; +} +if (isset($_GET['canceled'])) { + $flashMessage = 'Checkout abgebrochen.'; + $flashType = 'warning'; +} + +$pageTitle = 'Abrechnung'; +$currentPage = 'billing'; + +ob_start(); +?> + + +
+ Trial endet in Tag +
+ ++ Nächste Abrechnung: +
+ +Kein aktives Abo
+ +| Datum | +Betrag | +Status | +|
|---|---|---|---|
| + | + | + + + + | ++ + + Download + + + | +
Erstellen Sie Ihre eigene Live-Webcam-Website mit Wetter-Widget, Timelapse, Analytics und mehr. Keine Programmierkenntnisse erforderlich.
+ +Professionelle Features für Ihre Live-Webcam
+HLS, RTMP oder WebRTC - verbinden Sie jeden Stream in Sekunden. Automatische Qualitätsanpassung inklusive.
+Zeigen Sie Temperatur, Wind, Luftdruck und mehr an. Kostenlose Open-Meteo Integration ohne API-Key.
+Automatische Zeitraffer-Erstellung. Scrubben Sie durch den ganzen Tag mit variabler Geschwindigkeit.
+Lassen Sie Besucher in Ihren Stream hineinzoomen. Unterstützt Touch-Gesten und Maus-Steuerung.
+Sehen Sie wer Ihre Webcam besucht. Echtzeit-Zuschauerzähler und detaillierte Statistiken.
+Ihr Logo, Ihre Farben, Ihre Domain. Machen Sie die Webcam zu Ihrer eigenen.
+In 3 Schritten zur eigenen Livecam
+Erstellen Sie in 30 Sekunden Ihr kostenloses Konto.
+Fügen Sie Ihre Stream-URL ein. Wir unterstützen alle gängigen Formate.
+Personalisieren Sie Ihre Seite und teilen Sie den Link.
+Tage kostenlos testen - keine Kreditkarte erforderlich
+ + Jetzt kostenlos starten + +Tage kostenlos testen - jederzeit kündbar
+ +