Riverty Payments: Abgleich und Ablauf
Riverty Payments für Sylius - Abgleich offener Zahlungen per Konsolenbefehl, Überwachung der 30-Tage-Reservierung, Warnfenster, tägliche Digest-Mail und Cronjob-Optionen
Riverty Payments: Abgleich und Ablauf
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Offene Zahlungen abgleichen
Riverty sendet keinen Webhook. Ein Kunde, der bei Riverty bezahlt und dann den Browser schließt, kommt nie in den Shop zurück, die Sylius-Zahlung bliebe offen, obwohl Riverty eine angenommene Bestellung hält. Der Befehl mmd:riverty:reconcile findet diese Zahlungen und fragt Riverty danach. Richte ihn als Cronjob ein:
*/10 * * * * cd /pfad/zum/shop && bin/console mmd:riverty:reconcile
Was der Befehl tut
Für jede Riverty-Transaktion, die noch aussteht und deren Zahlung noch offen ist (neu oder in Bearbeitung):
| Antwort von Riverty | Folge |
|---|---|
| Angenommen | Die Zahlung wird autorisiert, genau als wäre der Kunde zurückgekehrt |
| Abgelehnt | Die Transaktion wird abgelehnt und die Zahlung schlägt fehl |
| Noch offen | Nichts passiert, der Kunde kann noch im Hosted Checkout sein. Ist das Angebot abgelaufen, das Riverty genannt hat, läuft die Transaktion ab und die Zahlung schlägt fehl. Ein fehlendes oder unlesbares Ablaufdatum lässt nie etwas ablaufen |
| Riverty nicht erreichbar oder unerwartete Antwort | Nichts ändert sich, weil Riverty eine gültige Autorisierung halten kann. Der nächste Lauf fragt erneut |
Was er nicht tut: Er fasst keine Transaktion an, die schon autorisiert, erfasst, storniert oder erstattet ist, er erfasst oder erstattet nichts und er storniert keine Bestellungen.
Optionen
| Option | Standard | Beschreibung |
|---|---|---|
--older-than=15 |
15 | Minuten, die eine Transaktion unberührt sein muss, damit ein Kunde, der noch zahlt, nicht gestört wird |
--limit=100 |
100 | Höchstens so viele Transaktionen pro Lauf, die ältesten zuerst |
--dry-run |
aus | Fragt Riverty und gibt aus, was passieren würde, ändert und sendet nichts |
--no-digest |
aus | Versendet die tägliche Digest-Mail nicht |
--api-log-days=7 |
30 | Aufbewahrung des API-Logs für diesen Lauf, siehe Konfiguration |
Die Ausgabe ist eine Tabelle mit Riverty-Referenz, Bestellnummer, Ergebnis und Zahlungsstatus sowie eine Zusammenfassung. Der Exit-Code ist nur dann 1, wenn jede versuchte Transaktion unerwartet fehlschlug.
Ablaufende Autorisierungen
Riverty storniert eine Autorisierung 30 Tage nach ihrer Erteilung von selbst und sagt dem Händler nichts. Eine versendete Bestellung, die nie erfasst wurde, bezahlt Riverty dann nicht, und nach Ende der Reservierung ist ein Capture nicht mehr möglich. Das Plugin überwacht das.
graph TD
A["Autorisierung erteilt"] --> B["Plugin merkt sich Erstellzeit plus 30 Tage"]
B --> C{"Warnfenster erreicht?"}
C -->|Nein| D["Nichts"]
C -->|Ja| E["Hinweis auf der Bestellseite und Eintrag in der Digest-Mail"]
E --> F{"Riverty meldet Ende?"}
F -->|Nein| G["Reservierung bleibt bestehen"]
F -->|Ja| H["Transaktion Authorization expired, Zahlung storniert"]
- Das Ende einer Reservierung wird aus dem Moment berechnet, in dem das Plugin die Riverty-Transaktion angelegt hat, plus 30 Tage (Riverty meldet kein Enddatum). Es steht auf der Bestellseite in der Riverty-Karte.
- Die Bestellseite sagt, was gilt: wie lange Riverty die Reservierung hält, dass sie bald endet, dass eine versendete Bestellung noch nicht oder nur teilweise erfasst ist (erfasse den Rest jetzt), dass die Reservierung vorbei ist und nicht mehr erfasst werden kann, oder dass eine versendete Bestellung ihre Reservierung verloren hat.
mmd:riverty:reconcilefragt Riverty zu jeder Autorisierung nach Ablauf der 30 Tage. Nur eine ausdrückliche Antwort von Riverty beendet eine Reservierung (StatusExpired,Cancelled,CanceledoderVoided): Die Transaktion wird zu "Authorization expired" und die Zahlung storniert. Die Bestellung selbst bleibt unberührt, du entscheidest, was daraus wird. Eine Reservierung, die Riverty noch hält, bleibt wie sie ist, und ein Status, den das Plugin nicht kennt, ändert nichts, taucht aber im Digest auf.- Das Warnfenster stellst du pro Channel auf der Einstellungsseite ein ("Warnung vor Ablauf einer Autorisierung", 1 bis 25 Tage, Standard 5).
Die tägliche Digest-Mail
Die Mail geht an die Kontakt-E-Mail des Channels (trage sie in den Channel-Einstellungen ein, die Einstellungsseite warnt, wenn sie fehlt), in der Standardsprache des Channels, höchstens einmal am Tag und nur, wenn es etwas zu melden gibt. Absender ist die Absenderadresse des Sylius-Mailers.
Reihenfolge der Meldungen:
- versendete Bestellungen, die nicht erfasst wurden
- Reservierungen, die Riverty storniert hat (werden einmal gemeldet)
- Reservierungen, die innerhalb des Warnfensters enden
- unbekannte Antworten von Riverty
Eine Bestellung steht nur einmal da, unter der dringlichsten Überschrift. Die Mail verlinkt die Bestellungen nur, wenn der Channel einen Hostnamen hat, und die Links nutzen https.
mmd:riverty:reconcile --no-digest überspringt die Mail, --dry-run fragt Riverty, ändert und sendet aber nichts.