5.3 KiB
5.3 KiB
Payment Reminder Cron-Job Einrichtung
Übersicht
Der PaymentsReminders Command automatisiert das Senden von Zahlungserinnerungen basierend auf den konfigurierten Intervallen in der Datenbank.
Command ausführen
php artisan payments:reminders
Cron-Job Konfiguration
1. Crontab öffnen
crontab -e
2. Cron-Job hinzufügen
Täglich um 9:00 Uhr:
0 9 * * * cd /path/to/your/project && php artisan payments:reminders >> /dev/null 2>&1
Stündlich:
0 * * * * cd /path/to/your/project && php artisan payments:reminders >> /dev/null 2>&1
Alle 6 Stunden:
0 */6 * * * cd /path/to/your/project && php artisan payments:reminders >> /dev/null 2>&1
3. Cron-Job testen
# Teste den Command manuell
php artisan payments:reminders
# Prüfe die Logs
tail -f storage/logs/laravel.log
Funktionsweise
1. Intervall-basierte Verarbeitung
- Der Command holt alle aktiven
PaymentReminderaus der Datenbank - Gruppiert sie nach
clearingtype(z.B. 'invoice', 'prepayment') - Verwendet das kleinste Intervall pro
clearingtype
2. Zahlungsprüfung
- Sucht offene Zahlungen, die älter als das konfigurierte Intervall sind
- Berücksichtigt nur die neueste Zahlung pro Bestellung
- Prüft nur Live-Zahlungen (nicht Test)
3. Erinnerungslogik
- Erste Erinnerung: Nach X Tagen ab Bestelldatum
- Weitere Erinnerungen: Nach Y Tagen ab letzter Erinnerung
- Stoppt wenn alle konfigurierten Erinnerungen gesendet wurden
4. Automatische Aktionen
- E-Mail-Versand mit Platzhalter-Ersetzung
- Optional: Bestellung auf "Storniert" setzen
- Optional: Payment auf "non" Status setzen
- Logging aller Aktivitäten
Logging
Command-Logs
# Live-Logs während der Ausführung
php artisan payments:reminders
# Beispiel-Output:
RUN Command Payments Reminders: 15.12.2024 09:00
=== STARTE PAYMENT REMINDERS ===
Gefundene aktive PaymentReminder: 3
Gefundene clearingtypes mit kleinsten Intervallen:
- invoice: 7 Tage
- prepayment: 3 Tage
--- Verarbeite clearingtype: invoice mit Intervall: 7 Tage ---
Suche Zahlungen vor: 08.12.2024 09:00:00
Gefundene offene Zahlungen für invoice: 5
Verarbeite Order ID: 12345, Created: 05.12.2024 10:30:00, Amount: 5000, Reminder: 0
📧 Sende Erinnerung...
✅ Erinnerung erfolgreich gesendet
=== PAYMENT REMINDERS ABGESCHLOSSEN ===
Ausführungszeit: 2.34 Sekunden
Statistiken:
- Gesamt verarbeitet: 5
- Erinnerungen gesendet: 3
- Fehler: 0
- Übersprungen: 2
Laravel-Logs
# Logs in storage/logs/laravel.log
tail -f storage/logs/laravel.log | grep "Payment reminder"
Konfiguration
PaymentReminder Einstellungen
-- Beispiel-Konfiguration
INSERT INTO payment_reminders (clearingtype, interval, subject, message, action, active) VALUES
('invoice', 7, 'Zahlungserinnerung - Bestellung {order_number}', 'Sehr geehrte/r {billing_first_name}...', NULL, 1),
('invoice', 14, '2. Zahlungserinnerung - Bestellung {order_number}', 'Sehr geehrte/r {billing_first_name}...', NULL, 1),
('invoice', 21, 'Letzte Zahlungserinnerung - Bestellung {order_number}', 'Sehr geehrte/r {billing_first_name}...', 'set_order_status_cancelled', 1);
Platzhalter
{billing_first_name}- Vorname{billing_last_name}- Nachname{order_number}- Bestellnummer{order_date}- Bestelldatum{order_total}- Bestellsumme
Monitoring
1. Log-Statistiken
- Admin-Bereich:
/admin/payments/reminder/logs - Zeigt Statistiken der letzten 7, 30 und 90 Tage
- Filter nach Order ID, Aktion und Datum
2. Erfolgsrate
- E-Mails gesendet vs. Fehler
- Aktionen ausgeführt
- Übersprungene Erinnerungen
3. Performance
- Ausführungszeit pro Lauf
- Anzahl verarbeiteter Zahlungen
- Speicherverbrauch
Troubleshooting
Häufige Probleme
1. Command läuft nicht
# Prüfe PHP-Pfad
which php
# Prüfe Projekt-Pfad
pwd
# Teste Command manuell
php artisan payments:reminders
2. Keine E-Mails werden gesendet
# Prüfe Mail-Konfiguration
php artisan config:cache
# Prüfe Logs
tail -f storage/logs/laravel.log
3. Falsche Intervalle
# Prüfe PaymentReminder-Konfiguration
php artisan tinker
>>> App\Models\PaymentReminder::where('active', true)->get()
4. Cron-Job läuft nicht
# Prüfe Crontab
crontab -l
# Prüfe Cron-Logs
sudo tail -f /var/log/cron
# Teste mit absoluten Pfaden
0 9 * * * /usr/bin/php /path/to/project/artisan payments:reminders
Sicherheit
1. Berechtigungen
# Stelle sicher, dass der Webserver-Benutzer Schreibrechte hat
chown -R www-data:www-data storage/logs
chmod -R 755 storage/logs
2. Log-Rotation
# Konfiguriere Log-Rotation in /etc/logrotate.d/laravel
/path/to/project/storage/logs/*.log {
daily
missingok
rotate 52
compress
notifempty
create 644 www-data www-data
}
3. Backup
# Backup der PaymentReminder-Konfiguration
mysqldump -u username -p database payment_reminders > payment_reminders_backup.sql
Performance-Optimierung
1. Batch-Verarbeitung
- Der Command verarbeitet Zahlungen in Batches
- Verwendet Datenbank-Indizes für bessere Performance
2. Memory-Management
- Garbage Collection nach jeder Zahlung
- Begrenzte Anzahl von Logs
3. Timeout-Handling
- Lange Ausführungen werden abgebrochen
- Fehler werden geloggt und übersprungen