Fix PayPal billing flow and mobile admin UX
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-02-05 10:19:29 +01:00
parent c43327af74
commit 0d7a861875
39 changed files with 1630 additions and 253 deletions

View File

@@ -88,6 +88,13 @@ return [
'limits_title' => 'Ihre Paketdetails',
'invoice_title' => 'Rechnung',
'invoice_link' => 'Rechnung öffnen',
'invoice_seller_label' => 'Anbieter',
'invoice_customer_label' => 'Kunde',
'invoice_item_label' => 'Leistung',
'invoice_type_label' => 'Typ',
'invoice_tax_label' => 'Steuer',
'invoice_total_label' => 'Gesamt',
'invoice_footer' => 'Dieser Beleg wurde automatisch von Fotospiel erstellt.',
'cta' => 'Zum Event-Admin',
'provider' => [
'lemonsqueezy' => 'PayPal',

View File

@@ -469,9 +469,9 @@
"secure_payment_desc": "Sichere Zahlung ueber PayPal.",
"lemonsqueezy_intro": "Starte den PayPal-Checkout direkt hier im Wizard ganz ohne Seitenwechsel.",
"guided_title": "Sichere Zahlung mit PayPal",
"guided_body": "Bezahle schnell und sicher mit PayPal. Dein Paket wird nach der Bestaetigung sofort freigeschaltet.",
"guided_body": "Bezahle schnell und sicher mit PayPal. Es oeffnet sich ein PayPal-Fenster kehre danach hierher zurueck.",
"lemonsqueezy_partner": "Powered by PayPal",
"guided_cta_hint": "Sicher abgewickelt ueber PayPal",
"guided_cta_hint": "Zahlung in PayPal abschliessen und hierher zurueckkehren.",
"lemonsqueezy_preparing": "PayPal-Checkout wird vorbereitet...",
"lemonsqueezy_overlay_ready": "Der PayPal-Checkout läuft jetzt in einem Overlay. Schließe die Zahlung dort ab und kehre anschließend hierher zurück.",
"lemonsqueezy_ready": "PayPal-Checkout wurde in einem neuen Tab geöffnet. Schließe die Zahlung dort ab und kehre dann hierher zurück.",
@@ -482,11 +482,88 @@
"pay_with_lemonsqueezy": "Weiter mit PayPal",
"paypal_partner": "Powered by PayPal",
"paypal_preparing": "PayPal-Checkout wird vorbereitet...",
"paypal_ready": "PayPal-Checkout ist bereit. Schließe die Zahlung ab, um fortzufahren.",
"paypal_ready": "PayPal-Checkout ist bereit. Schliesse die Zahlung in PayPal ab und kehre hierher zurueck.",
"paypal_error": "Der PayPal-Checkout konnte nicht gestartet werden. Bitte versuche es erneut.",
"paypal_not_configured": "PayPal ist noch nicht konfiguriert. Bitte kontaktiere den Support.",
"paypal_cancelled": "PayPal-Checkout wurde abgebrochen.",
"paypal_disclaimer": "Zahlungen werden sicher über PayPal verarbeitet. Du erhältst im Anschluss eine Bestätigung."
"paypal_cancelled": "PayPal-Checkout wurde abgebrochen. Du kannst es unten erneut versuchen.",
"paypal_disclaimer": "Zahlungen werden sicher über PayPal verarbeitet. Du erhältst im Anschluss eine Bestätigung.",
"resume_paypal": "Weiter in PayPal",
"resume_hint": "Falls PayPal nicht geoeffnet wurde oder geschlossen wurde, hier im neuen Tab fortsetzen."
},
"confirmation_step": {
"title": "Bestätigung",
"subtitle": "Alles erledigt!",
"description": "Dein Paket ist aktiviert. Prüfe deine E-Mails für Details.",
"welcome": "Danke, dass du die Fotospiel App gewählt hast!",
"package_summary": "Dein Paket <strong>{name}</strong> ist jetzt freigeschaltet. Du kannst sofort mit der Einrichtung loslegen.",
"email_followup": "Wir haben dir gerade alle Details per E-Mail geschickt inklusive Rechnung und den nächsten Schritten.",
"hero_badge": "Checkout abgeschlossen",
"hero_title": "Weiter geht's im Marketing-Dashboard",
"hero_body": "Wir haben deinen Zugang aktiviert und synchronisieren PayPal. Mit diesen Aufgaben startest du direkt durch.",
"hero_next": "Nutze den Button unten, um in deinen Kundenbereich zu wechseln diese Übersicht kannst du jederzeit erneut öffnen.",
"status_title": "Bestellstatus",
"status_subtitle": "Wir schließen die Aktivierung ab und synchronisieren dein Konto.",
"status_state": {
"processing": "Wird bestätigt",
"completed": "Bestätigt",
"failed": "Aktion nötig",
"action_required": "Aktion erforderlich"
},
"status_body_processing": "Wir synchronisieren dein Konto mit PayPal. Das kann einen Moment dauern.",
"status_body_completed": "Alles ist bereit. Dein Konto ist vollständig freigeschaltet.",
"status_body_failed": "Wir konnten den Kauf noch nicht bestätigen. Bitte prüfe den Status erneut oder kontaktiere den Support.",
"status_body_action_required": "PayPal benoetigt noch eine kurze Bestaetigung. Schliesse den Checkout ab, um dein Paket zu aktivieren.",
"status_manual_hint": "Dauert es zu lange? Du kannst den Status erneut prüfen oder die Seite aktualisieren.",
"status_retry": "Status prüfen",
"status_refresh": "Seite aktualisieren",
"status_action_hint": "Wir benoetigen noch deine PayPal-Bestaetigung, bevor wir dein Paket aktivieren koennen.",
"status_action_button": "PayPal-Checkout fortsetzen",
"status_action_back": "Zurueck zur Zahlung",
"status_failed_hint": "Die Zahlung wurde nicht abgeschlossen. Du kannst den Checkout erneut starten.",
"status_failed_back": "Zurueck zur Zahlung",
"status_items": {
"payment": {
"title": "Zahlung bestätigt",
"body": "Deine PayPal-Zahlung war erfolgreich."
},
"email": {
"title": "Beleg versendet",
"body": "Die Bestätigungsmail ist unterwegs."
},
"access": {
"title": "Zugang freigeschaltet",
"body": "Dashboard und PWA stehen bereit."
}
},
"onboarding_title": "Vorschau auf deine Onboarding-Schritte",
"onboarding_subtitle": "Diese Aufgaben erwarten dich direkt nach dem Login.",
"onboarding_badge": "Nächste Schritte",
"onboarding_items": {
"event": {
"title": "Erstes Event anlegen",
"body": "Titel, Datum und Highlights festlegen alles bleibt anpassbar."
},
"invites": {
"title": "QR-Einladungen aktivieren",
"body": "Teile deinen Event-QR-Code oder den Shortcut-Link mit Gästen."
},
"tasks": {
"title": "Fotoaufgaben planen",
"body": "Nutze Vorlagen oder füge eigene kreative Aufgaben hinzu."
}
},
"control_center_title": "Event Control Center (PWA)",
"control_center_body": "Alle Live-Aufgaben erledigst du später im Control Center optimiert für Mobilgeräte und offlinefähig.",
"control_center_hint": "Installiere die PWA direkt aus dem Dashboard.",
"package_title": "Dein Paket",
"package_body": "Dein Paket ist aktiviert und sofort einsatzbereit.",
"package_label": "Aktiviertes Paket",
"actions_title": "Nächste Schritte",
"actions_body": "Zum Adminbereich wechseln oder Profildaten prüfen.",
"package_activated": "Ihr Paket '{name}' ist aktiviert.",
"email_sent": "Wir haben Ihnen eine Bestätigungs-E-Mail gesendet.",
"open_profile": "Profil öffnen",
"to_admin": "Zum Admin-Bereich"
}
}
}

View File

@@ -87,6 +87,13 @@ return [
'limits_title' => 'Your package details',
'invoice_title' => 'Invoice',
'invoice_link' => 'Open invoice',
'invoice_seller_label' => 'Seller',
'invoice_customer_label' => 'Customer',
'invoice_item_label' => 'Item',
'invoice_type_label' => 'Type',
'invoice_tax_label' => 'Tax',
'invoice_total_label' => 'Total',
'invoice_footer' => 'This receipt was generated automatically by Fotospiel.',
'cta' => 'Open Event Admin',
'provider' => [
'lemonsqueezy' => 'PayPal',

View File

@@ -465,9 +465,9 @@
"secure_payment_desc": "Secure payment with PayPal.",
"lemonsqueezy_intro": "Start the PayPal checkout right here in the wizard - no page changes required.",
"guided_title": "Secure checkout with PayPal",
"guided_body": "Pay quickly and securely with PayPal. Your package unlocks immediately after confirmation.",
"guided_body": "Pay quickly and securely with PayPal. A PayPal window opens; return here after approval to finish.",
"lemonsqueezy_partner": "Powered by PayPal",
"guided_cta_hint": "Securely processed via PayPal",
"guided_cta_hint": "Complete the payment in PayPal and return here to finish.",
"lemonsqueezy_preparing": "Preparing PayPal checkout...",
"lemonsqueezy_overlay_ready": "PayPal checkout is running in a secure overlay. Complete the payment there and then continue here.",
"lemonsqueezy_ready": "PayPal checkout opened in a new tab. Complete the payment and then continue here.",
@@ -478,11 +478,88 @@
"pay_with_lemonsqueezy": "Continue with PayPal",
"paypal_partner": "Powered by PayPal",
"paypal_preparing": "Preparing PayPal checkout...",
"paypal_ready": "PayPal checkout is ready. Complete the payment to continue.",
"paypal_ready": "PayPal checkout is ready. Complete the payment in PayPal and return here.",
"paypal_error": "We could not start the PayPal checkout. Please try again.",
"paypal_not_configured": "PayPal checkout is not configured yet. Please contact support.",
"paypal_cancelled": "PayPal checkout was cancelled.",
"paypal_disclaimer": "Payments are processed securely by PayPal. You will receive a receipt after purchase."
"paypal_cancelled": "PayPal checkout was cancelled. You can try again below.",
"paypal_disclaimer": "Payments are processed securely by PayPal. You will receive a receipt after purchase.",
"resume_paypal": "Continue in PayPal",
"resume_hint": "If PayPal did not open or you closed it, continue in a new tab."
},
"confirmation_step": {
"title": "Confirmation",
"subtitle": "All Done!",
"description": "Your package is activated. Check your email for details.",
"welcome": "Thank you for choosing the Fotospiel App!",
"package_summary": "Your <strong>{name}</strong> package is now active. You're ready to get everything set up.",
"email_followup": "We've just sent a confirmation email with your receipt and the next steps.",
"hero_badge": "Checkout complete",
"hero_title": "You're ready for the Marketing Dashboard",
"hero_body": "We activated your access and are syncing PayPal. Follow the checklist below to launch your first event.",
"hero_next": "Use the button below whenever you're ready to jump into your customer area—this summary is always available.",
"status_title": "Purchase status",
"status_subtitle": "We are finishing the handoff and syncing your account.",
"status_state": {
"processing": "Finalising",
"completed": "Confirmed",
"failed": "Needs attention",
"action_required": "Action required"
},
"status_body_processing": "We are syncing your account with PayPal. This can take a minute.",
"status_body_completed": "Everything is ready. Your account is fully unlocked.",
"status_body_failed": "We could not confirm the purchase yet. Please try again or contact support.",
"status_body_action_required": "PayPal still needs a quick confirmation. Complete the checkout to activate your package.",
"status_manual_hint": "Still waiting? You can re-check the status or refresh the page.",
"status_retry": "Check status",
"status_refresh": "Refresh page",
"status_action_hint": "We still need PayPal approval before we can activate your package.",
"status_action_button": "Continue PayPal checkout",
"status_action_back": "Back to payment",
"status_failed_hint": "The payment did not complete. You can start the checkout again.",
"status_failed_back": "Back to payment",
"status_items": {
"payment": {
"title": "Payment confirmed",
"body": "Your PayPal payment was successful."
},
"email": {
"title": "Receipt sent",
"body": "A confirmation email is on its way."
},
"access": {
"title": "Access unlocked",
"body": "Your dashboard and PWA access are active."
}
},
"onboarding_title": "Preview your onboarding steps",
"onboarding_subtitle": "These are the first tasks you'll see after logging in.",
"onboarding_badge": "Next steps",
"onboarding_items": {
"event": {
"title": "Create your first event",
"body": "Set title, date, and highlights. You can adjust everything later."
},
"invites": {
"title": "Activate QR invites",
"body": "Share your event QR code or shortcut link with guests."
},
"tasks": {
"title": "Plan photo tasks",
"body": "Pick from the library or add your own creative prompts."
}
},
"control_center_title": "Event Control Center (PWA)",
"control_center_body": "You handle live moderation and uploads in the Control Center — mobile-first and offline-ready.",
"control_center_hint": "Install the PWA directly from the dashboard.",
"package_title": "Your package",
"package_body": "Your plan is active and ready to use.",
"package_label": "Activated package",
"actions_title": "Next actions",
"actions_body": "Jump into your admin area or update profile details.",
"package_activated": "Your package '{name}' is activated.",
"email_sent": "We have sent you a confirmation email.",
"open_profile": "Open Profile",
"to_admin": "To Admin Area"
}
}
}