Abo-Recovery: fehlgeschlagene Folgezahlung im Checkout nachholen
- Pay-now-Flow: bei fehlgeschlagenem Abo (Status 3) begleicht der Inhaber die offene Rechnung im Standard-Checkout mit frei waehlbarer, abo-faehiger Zahlart (nur eigenes Abo: Berater me-View + Kundenportal), payNow-Controller + Routen - AboRecoveryCheckoutService baut die ShoppingInstance aus den Abo-Artikeln; neue Spalte shopping_orders.recovery_user_abo_id verknuepft Bestellung<->Abo - Bei Erfolg: AboHelper::advanceAboAfterRecoveryPayment schreibt das Abo fort (Status->2, next_date) und uebernimmt die gewaehlte Zahlart als neues Token fuer kuenftige Abbuchungen - Neue Pay-now-Fehlermail (AboPaymentFailedMail) ersetzt die generische Fehlermail im Abo-Cron; Link fuehrt auf die Abo-Detailseite (CRM bzw. Portal) - Retry-/"extern erledigt"-Buttons nur noch fuer Admins; tote user/portal- Retry-Routen entfernt - Checkout: Recovery-Hinweis statt "Abschluss des Abonnements", Lieferadresse vorbelegt, korrekter Zurueck-Link (Abo statt Shop) - UserAbo::selfServiceDetailUrl zentralisiert die Abo-URL (Mail, Back-Links) - Test-Command abo:test-recovery; Tests fuer payNow, Advance-Logik, Fehlermail Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
78db952130
commit
0660f4e0a0
28 changed files with 1535 additions and 181 deletions
|
|
@ -15,6 +15,7 @@ return [
|
|||
'abo_order_info_check' => 'Mit Abschluss des Abonnements wird eine regelmäßige Lieferung eingerichtet. Diese wird automatisch am gewählten Liefertag versendet und abgerechnet.',
|
||||
'abo_order_info_check_2' => 'Die erste Lieferung und Abrechnung erfolgt am Tag der Abo-Einrichtung. Danach erfolgt der Versand automatisch am gewählten Liefertag des Folgemonats.',
|
||||
'abo_order_info_check_3' => 'Als Zahlungsmethoden stehen PayPal und Kreditkarte zur Verfügung. <strong>Das Abo hat eine Mindestlaufzeit von :abo-min-duration Monaten.</strong> Danach kann es jederzeit pausiert, geändert oder gekündigt werden.',
|
||||
'abo_recovery_info_check' => 'Du begleichst hier die offene Rechnung deines bestehenden Abos. <strong>Die dabei gewählte Zahlart wird zusätzlich für alle zukünftigen Abbuchungen deines Abos gespeichert.</strong> Nach erfolgreicher Zahlung wird dein Abo wieder aktiviert und regelmäßig am gewählten Liefertag ausgeführt.',
|
||||
'abo_order_info_checkbox' => 'Ja, ich habe die Abo-Bedingungen verstanden!',
|
||||
'abo_order_info_checkbox_required' => 'Bitte bestätige die Abo-Bedingungen, um fortzufahren.',
|
||||
'abo_infos' => 'Abo Infos',
|
||||
|
|
@ -172,6 +173,16 @@ return [
|
|||
'retry_payment_confirm_copy' => 'Der Zahlungsversuch wird sofort gestartet und kann eine PayPal- oder Kreditkartenbuchung auslösen. Bitte nur ausführen, wenn die Ursache geprüft wurde.',
|
||||
'retry_payment_confirm_button' => 'Zahlung jetzt erneut versuchen',
|
||||
'retry_only_hold' => 'Der erneute Zahlungsversuch ist nur für angehaltene Abos möglich.',
|
||||
'pay_now_title' => 'Zahlung fehlgeschlagen – jetzt bezahlen',
|
||||
'pay_now_copy' => 'Die letzte Abbuchung für dein Abo ist fehlgeschlagen (z. B. Karte oder PayPal nicht mehr gültig). Im Checkout begleichst du jetzt die offene Rechnung mit einer Zahlart deiner Wahl – diese wird zusätzlich für alle zukünftigen Abbuchungen deines Abos gespeichert.',
|
||||
'pay_now_button' => 'Jetzt bezahlen',
|
||||
'pay_now_not_allowed' => 'Eine nachträgliche Zahlung ist für dieses Abo aktuell nicht möglich.',
|
||||
'pay_now_failed' => 'Der Checkout konnte nicht gestartet werden. Bitte versuche es später erneut.',
|
||||
'back_to_abo' => 'Zurück zu meinem Abo',
|
||||
'payment_failed_mail_subject' => 'Zahlung für dein Abo fehlgeschlagen',
|
||||
'payment_failed_mail_intro' => 'die letzte Abbuchung für dein Abo ist leider fehlgeschlagen (z. B. weil deine Kreditkarte oder dein PayPal-Konto nicht mehr gültig ist). Über den folgenden Link kannst du den offenen Betrag jetzt sicher bezahlen. Die dabei gewählte Zahlart wird auch für deine künftigen Abbuchungen gespeichert.',
|
||||
'payment_failed_mail_button' => 'Jetzt bezahlen',
|
||||
'payment_failed_mail_hint' => 'Falls der Button nicht funktioniert, kopiere diesen Link in deinen Browser:',
|
||||
'retry_only_active' => 'Der erneute Zahlungsversuch ist nur für aktive Abos möglich.',
|
||||
'retry_already_paid_today' => 'Für dieses Abo wurde heute bereits eine erfolgreiche Zahlung gespeichert.',
|
||||
'retry_error_shopping_user' => 'Der Shopping-User konnte für den erneuten Zahlungsversuch nicht erstellt werden.',
|
||||
|
|
@ -189,6 +200,11 @@ return [
|
|||
'extern_done_already_paid' => 'Diese Bestellung ist bereits bezahlt und kann nicht extern erledigt werden.',
|
||||
'extern_done_success' => 'Die Bestellung wurde als extern erledigt markiert. Punkte gutgeschrieben, Blockade aufgehoben.',
|
||||
'extern_done_error' => 'Die Bestellung konnte nicht als erledigt markiert werden: :error',
|
||||
'admin_delete' => 'Abo löschen',
|
||||
'admin_delete_confirm_title' => 'Abo löschen',
|
||||
'admin_delete_confirm_copy' => 'Das Abo wird gelöscht (deleted_at) und ist anschließend nicht mehr in der Übersicht sichtbar. Bitte nur ausführen, wenn dies wirklich gewünscht ist.',
|
||||
'admin_delete_confirm_button' => 'Abo jetzt löschen',
|
||||
'admin_delete_success' => 'Das Abo wurde gelöscht.',
|
||||
'team_subscriptions' => 'Team Abos',
|
||||
'team_customer_abos' => 'Team Kunden-Abos',
|
||||
'team_total' => 'Gesamt',
|
||||
|
|
@ -231,4 +247,35 @@ return [
|
|||
'customer_privacy_info' => 'Aus Datenschutzgründen werden keine persönlichen Kundendaten angezeigt.',
|
||||
'every_month_on' => 'monatlich am :day.',
|
||||
'back' => 'zurück',
|
||||
|
||||
// Kreditkarte aktualisieren
|
||||
'payment_method' => 'Zahlungsmethode',
|
||||
'update_payment_method' => 'Zahlungsmethode aktualisieren',
|
||||
'update_card_title' => 'Kreditkarte aktualisieren',
|
||||
'current_card' => 'Aktuelle Karte',
|
||||
'card_update_intro' => 'Hinterlegen Sie eine neue Kreditkarte für dieses Abo. Zur Verifizierung kann eine Autorisierung von 0,01 EUR erfolgen, die nicht belastet wird. Die nächste Abbuchung erfolgt über die neue Karte.',
|
||||
'card_security_notice' => 'Ihre Kreditkartendaten werden hier nicht gespeichert. Sie werden ausschließlich SSL-verschlüsselt direkt an unseren Zahlungsdienstleister PAYONE zur Verifizierung übermittelt.',
|
||||
'card_change_history' => 'Änderungsverlauf',
|
||||
'card_update_link_button' => 'Update-Link an Kunden senden',
|
||||
'card_update_link_sent' => 'Der Update-Link wurde an den Kunden gesendet.',
|
||||
'card_update_link_not_allowed' => 'Für dieses Abo kann kein Update-Link gesendet werden.',
|
||||
'card_update_link_invalid' => 'Dieser Link ist ungültig oder abgelaufen.',
|
||||
'card_update_link_mail_subject' => 'Kreditkarte für Ihr Abo aktualisieren',
|
||||
'card_update_link_mail_intro' => 'Bitte aktualisieren Sie die Kreditkarte für Ihr Abo über den folgenden sicheren Link. Ihre Kartendaten werden ausschließlich SSL-verschlüsselt an unseren Zahlungsdienstleister PAYONE übermittelt.',
|
||||
'card_update_link_mail_button' => 'Kreditkarte aktualisieren',
|
||||
'card_update_link_mail_hint' => 'Falls der Button nicht funktioniert, kopieren Sie diesen Link in Ihren Browser:',
|
||||
'card_update_done_success_title' => 'Kreditkarte aktualisiert',
|
||||
'card_update_done_success_copy' => 'Vielen Dank. Die nächste Abbuchung erfolgt über Ihre neue Karte.',
|
||||
'card_update_done_failed_title' => 'Aktualisierung fehlgeschlagen',
|
||||
'card_update_done_failed_copy' => 'Die Kreditkarte konnte nicht aktualisiert werden. Bitte fordern Sie bei Bedarf einen neuen Link an.',
|
||||
'card_update_portal_hint' => 'Dieses Abo finden Sie auch in Ihrem Kundenportal. Dort können Sie sich anmelden und Ihre Zahlungsmethode sowie Ihr Abo jederzeit selbst verwalten.',
|
||||
'card_update_to_portal' => 'Zum Kundenportal',
|
||||
'card_update_success' => 'Ihre Kreditkarte wurde aktualisiert. Die nächste Abbuchung erfolgt über die neue Karte.',
|
||||
'card_update_not_allowed' => 'Für dieses Abo kann die Kreditkarte nicht aktualisiert werden.',
|
||||
'card_update_failed' => 'Die Kreditkarte konnte nicht aktualisiert werden. Bitte versuchen Sie es erneut.',
|
||||
'card_holder_required' => 'Bitte geben Sie den Namen des Karteninhabers an.',
|
||||
'card_number_invalid' => 'Bitte geben Sie eine gültige Kreditkartennummer ein.',
|
||||
'card_expiry_invalid' => 'Bitte geben Sie ein gültiges Ablaufdatum an.',
|
||||
'card_type_invalid' => 'Bitte wählen Sie einen gültigen Kartentyp (Visa oder Mastercard).',
|
||||
'card_cvc_invalid' => 'Bitte geben Sie eine gültige Prüfziffer (CVC) ein.',
|
||||
];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue