Riverty Payments: Bestellverwaltung
Riverty Payments für Sylius - Capture, Void und Refund auf der Bestellseite, Teilmengen und Erstattung pro Capture, Capture beim Versand und die Riverty-Karte im Admin
Riverty Payments: Bestellverwaltung
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Riverty-Zahlungen verwaltest du mit den Riverty-Buttons Erfassen, Stornieren und Erstatten auf der Bestellseite (englisch Capture, Void und Refund) im Admin. Sie teilen Riverty die Änderung zuerst mit und setzen die Sylius-Zahlung erst um, wenn Riverty sie angenommen hat.
Die Riverty-Karte auf der Bestellseite
Die Bestellseite zeigt im Zahlungsfeld eine Riverty-Karte, einen Block pro Riverty-Zahlung:
- der Status und die Riverty-Referenz
- die autorisierten, erfassten, stornierten und erstatteten Beträge in der Bestellwährung
- der letzte Fehler, den Riverty oder das Plugin gemeldet hat
- nur die Buttons, die der Status erlaubt, jeweils mit einer Zeile, die sagt, was sie tut
- der Hinweis zur Reservierung, siehe Abgleich und Ablauf

Sylius-eigene Buttons sind für Riverty gesperrt. Die Buttons Complete und Refund einer Zahlung ändern nur den Status in Sylius und erreichen Riverty nie, die Bestellung würde "bezahlt" oder "erstattet" anzeigen, obwohl Riverty nichts weiß. Das Plugin sperrt diese beiden Übergänge für Riverty-Zahlungen mit Riverty-Transaktion, die Buttons verschwinden und die Buttons des Plugins erledigen die Arbeit. Das setzt den Standard-Adapter
symfony_workflowvoraus, mit dem altenwinzou_state_machinebleiben die Sylius-Buttons stehen.
Ganze Bestellung
Die Buttons wirken auf alles, was noch offen ist:
| Button | Wirkt auf | Ergebnis |
|---|---|---|
| Erfassen | alles, was weder erfasst noch storniert ist | Riverty erfasst den Betrag, die Zahlung ist abgeschlossen |
| Stornieren | alles, was weder erfasst noch storniert ist | Riverty gibt die Autorisierung frei, die Bestellung wird storniert |
| Erstatten | alles, was erfasst und noch nicht erstattet ist | Riverty erstattet, die Zahlung gilt als erstattet |
Stornieren (Void) zieht den Verkauf zurück: Nachdem Riverty die Autorisierung freigegeben hat, wird auch die Sylius-Bestellung storniert, ihre Zahlung wird Cancelled und es wird keine Ersatzzahlung geöffnet. Eine Bestellung, die in Sylius nicht mehr storniert werden kann, etwa eine erfüllte, behält ihren Status, nur ihre Zahlung wird storniert.
Teile einer Bestellung
Unter Positionen wählen auf der Riverty-Karte wählst du, wie viele Stück jeder Position du erfasst, stornierst oder erstattest. Der Versand ist eine eigene Position. So erfasst du zum Beispiel die Ware, die du heute versendet hast, und den Rest später.

- Capture der gewählten Positionen. Die Zahlung wird mit dem Capture abgeschlossen, nach dem nichts mehr offen ist, bis dahin steht die Transaktion auf Teilweise erfasst.
- Void der gewählten Positionen. Die Autorisierung bleibt für den Rest offen. Werden die letzten offenen Positionen storniert, endet die Transaktion: Wurde nichts erfasst, wird die Bestellung wie nach einem vollständigen Void storniert. Wurde bereits erfasst, ist der Verkauf abgeschlossen, die Zahlung gilt als abgeschlossen und die Bestellung bleibt bestehen, sie wird nicht storniert.
- Refund der gewählten Positionen. Riverty erstattet pro Capture, und ein Capture ist für deinen Kunden eine eigene Rechnung. Die Erstattungstabelle hat deshalb einen Block pro Capture (mit Riverty-Nummer und Zeitpunkt) und zeigt, was daraus noch erstattet werden kann. Du wählst den Capture und die Mengen darin, genau diese Stücke werden gegen genau diesen Capture erstattet, ein Aufruf pro Capture. Der Button Erstatten ohne Auswahl erstattet alles, was übrig ist, Capture für Capture. Ein Capture aus der Zeit vor der Zeiterfassung steht ohne Zeitpunkt in der Liste.
Die Zahlung gilt als erstattet, wenn alles Erfasste erstattet und nichts mehr offen ist. Wird nur ein Teil einer teilweise erfassten Bestellung erstattet, bleibt die Transaktion Teilweise erfasst, damit der Rest noch erfasst oder storniert werden kann.
Rabatte
Eine Aktion auf einen Artikel wird auf seine Stücke verteilt und wandert mit den Stücken, die du wählst: Erfasst du eine von zwei rabattierten Tassen, geht die Tasse mit ihrem Anteil der Rabattzeile an Riverty. Ein Capture aus der Zeit, bevor Positionen erfasst wurden, zählt als Capture von allem.
Ob Riverty jede Teilanfrage in genau dieser Form annimmt (Positionszeilen, Rabattanteil, eine Erstattung pro Capture), lässt sich nur an deinem Riverty-Vertrag sehen. Teste zuerst in der Sandbox und schau in den API-Log, wenn Riverty eine Anfrage ablehnt.
Capture beim Versand
Riverty zahlt dir nur, was erfasst wurde, eine versendete Bestellung sollte also immer erfasst werden. Die Option Beim Versand automatisch erfassen (Capture) in der Karte Einstellungen der Channel-Einstellungen übernimmt das:
- Wird die letzte Lieferung einer Bestellung versendet (auf der Bestellseite, über die API oder anderswo; eine Bestellung mit mehreren Lieferungen wartet auf die letzte), wird alles erfasst, was bei Riverty noch offen ist, nach einem Teil-Capture nur der Rest.
- Die Option ist standardmäßig aus, weil ein Capture Geld bewegt.
- Der Capture läuft, nachdem die Lieferung gespeichert und die Antwort gesendet ist. Ein langsames oder nicht erreichbares Riverty kann den Versand deshalb weder verzögern noch rückgängig machen. In einem dauerhaft laufenden Worker (
messenger:consume) läuft er direkt nach jeder Nachricht, eine Bestellung, die ein Message-Handler versendet, wird also sofort erfasst und nicht erst beim Neustart des Workers. - Schlägt er fehl, ändert sich sonst nichts: Die Bestellung bleibt versendet, die Transaktion bleibt erfassbar und der Grund steht auf der Riverty-Karte ("Automatisches Capture beim Versand fehlgeschlagen: ..."), damit du von Hand erfassen kannst.
- Eine versendete Bestellung, die noch nicht erfasst ist (nur autorisiert oder teilweise erfasst mit offenem Rest), steht in der täglichen Digest-Mail ganz oben.
- Eine Transaktion, deren Autorisierung Riverty storniert hat, bleibt unberührt.
- Das setzt den Standard-Adapter
symfony_workflowvoraus.
Riverty ist die Quelle der Wahrheit
Das Plugin führt eigene Bücher darüber, welche Positionen es erfasst, storniert und erstattet hat. Eine Änderung direkt im Riverty-Portal oder ein Aufruf, den Riverty beantwortet hat, der das Plugin aber nie erreichte, wird nicht bemerkt: Beide Stände können auseinanderlaufen, und das Plugin kann das nicht selbst reparieren (der Reconcile-Befehl bringt nur Zahlungen zu Ende, die nie abgeschlossen wurden). Mache alle Änderungen an einer Riverty-Bestellung in Sylius und vergleiche mit dem Riverty-Portal, wenn etwas nicht stimmt.