PayPal-Mailabruf: Parken statt Buchen, echter Probelauf, Regressionstest

Die Mail-Verarbeitung ignorierte bisher die PayPal-Schalter: eingehende
Zahlungen wurden auch dann automatisch gutgeschrieben, wenn der Betreiber
die Funktion gesperrt oder der Mandant PayPal abgeschaltet hatte. Jetzt
wird die Zahlung in dem Fall geparkt - gespeichert, aber ohne Buchung.
Wegwerfen liesse eine echte Zahlung unbemerkt verschwinden, buchen
widersprache der Abschaltung; die Zuordnungsseite bleibt fuer offene
Zahlungen ja erreichbar.

--dry-run war bisher irrefuehrend: es liess die Verarbeitung samt Buchung
laufen und uebersprang nur das Setzen des Gelesen-Flags - ausgerechnet beim
ersten Testlauf haette es also echtes Geld verbucht. Der Probelauf nutzt
jetzt paypal_preview(), das nichts schreibt und meldet, was passieren
wuerde (would_book/would_queue/would_park/duplicate).

scripts/check-paypal-inbox-flow.php deckt die Kette ohne IMAP ab:
Absenderpruefung, Token, Parser, Zuordnung, Netto-Buchung, Dedup, beide
Park-Faelle und die Schreibfreiheit der Vorschau.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-21 20:43:58 +02:00
co-authored by Claude Opus 5
parent 7df9c1fb4e
commit 9f9e4c7cd0
5 changed files with 329 additions and 8 deletions
+18
View File
@@ -186,3 +186,21 @@ weiterhin ausschließlich seinen eigenen Mandanten. Ein zweiter,
eingeloggter, aber nicht privilegierter Testnutzer bekommt auf
`backoffice.php` korrekt `403 Forbidden`. Alle Testdaten anschließend
vollständig entfernt.
## Eingehende PayPal-Mails bei abgeschalteter Funktion
Stand: 2026-08-21. Die Mail-Verarbeitung
(`scripts/fetch-paypal-payments.php``paypal_reconcile()`) prüft
dieselben zwei Ebenen wie das Menü. Ist PayPal für den Mandanten
abgeschaltet — vom Betreiber (`paypal_inbox`) oder vom Mandanten selbst
(`paypal_enabled`) —, wird eine eingehende Zahlung **geparkt**: sie wird
gespeichert (Status `unmatched`, Ergebnis `parked`), aber nicht
automatisch gutgeschrieben.
- **Warum nicht wegwerfen:** eine echte Zahlung würde unbemerkt
verschwinden; das Geld ist ja trotzdem angekommen.
- **Warum nicht buchen:** es soll gerade nichts über PayPal laufen — die
Entscheidung gehört dem Mandanten.
- Die Zuordnungsseite bleibt für offene Zahlungen erreichbar (siehe
`paypal_inbox_accessible()`), der Mandant sieht die geparkte Zahlung
also und kann sie zuordnen oder abhaken.