Markus Michalski FAQ

Riverty Payment: Technische Details

Technische Details von Riverty für OXID eShop 7 - Checkout/Redirect-Flow, Order-Management-Flow, Modul-Struktur und Chain Extending.

English Version

Zurück zur Übersicht

Riverty Payment: Technische Details

Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net

Überblick

Eigenschaft Wert
Composer-Paket mmd/oxid7-riverty
Modul-ID mmd_riverty
Namespace Mmd\Riverty
API Riverty BNPL API v3 (/api/v3/...): checkout/authorize, checkout/payment-methods, orders/{nr}, orders/{nr}/captures, orders/{nr}/voids, orders/{nr}/refunds, version
Zahlungsart-Typ im Authorize Rechnungskauf und Lastschrift senden Invoice (Lastschrift zusätzlich directDebit.available), Ratenkauf und Pay in 3 senden PartPayment
HTTP-Client Guzzle

Flow 1: Checkout und Redirect

graph TD
    A["Kunde waehlt Riverty-Zahlart"] --> B["Authorize-Request aufbauen"]
    B --> C["RivertyClient: authorize()"]
    C --> D{"Ergebnis?"}
    D -->|Accepted| K["OXID Order-Finalisierung laeuft durch"]
    D -->|Pending| E["Warenkorb in Session sichern, Redirect zu Riverty"]
    D -->|Rejected| F["Fehlermeldung, zurueck zur Zahlartenauswahl"]
    E --> G["Kunde bestaetigt bei Riverty"]
    G --> H["Return-Controller mmd_riverty_return"]
    H --> I["Signatur pruefen oder Order-Lookup"]
    I -->|Akzeptiert| J["Warenkorb wiederherstellen, Bestellung abschliessen"]
    I -->|Abgelehnt oder Fehler| F
    J --> K
    K --> L["Danke-Seite mit Riverty-Infobox"]

Die Rückkehr verifiziert je nach Rücksprung entweder die Signatur (Parameter ordernumber, orderstatus, signature, geprüft mit dem API-Key des Landes) oder fragt den Bestellstatus per Lookup ab. Schlägt der Lookup fehl, wird die Zahlung sicherheitshalber abgelehnt.

Flow 2: Order Management (Admin oder Integration API)

graph TD
    A["Admin-Aktion oder Integration API Request"] --> B{"Herkunft?"}
    B -->|Integration API| C["Secret-Auth und Idempotency-Check"]
    B -->|Admin-Tab| D["Order-Aktion ausfuehren"]
    C --> E["Restmengen berechnen"]
    D --> E
    E --> F["Riverty-API aufrufen"]
    F --> G["Transaktionsstatus aktualisieren"]
    G --> H["Post-Capture- oder Post-Void-Aktionen je nach Aktion"]
    F --> L["API-Call protokollieren"]

Controller

Klasse / cl Zweck
mmd_riverty_return Rücksprung von Riverty, Verifikation und Bestellabschluss
mmd_riverty_order Riverty-Tab in der Bestellansicht (Capture, Void, Refund)
mmd_riverty_api_log, mmd_riverty_api_log_list, mmd_riverty_api_log_detail API-Log im Admin
mmd_riverty_integration_api Externe Integration API

Datenbanktabellen

Tabelle Zweck
mmd_riverty_transactions Transaktionen mit Status, Beträgen und Positionsverfolgung
mmd_riverty_api_logs Protokoll der API-Aufrufe
mmd_riverty_idempotency_keys Idempotency-Keys der Integration API

Zusätzlich legt die Zahlarten-Synchronisation Einträge in oxpayments und oxobject2payment an.

Modul-Struktur

src/
├── Core/              Aktivierungs-Events, Tabellen
├── Controller/
│   ├── Admin/         Bestell-Tab, API-Log
│   └── Api/           Integration API
├── Api/
│   ├── Request/
│   └── Response/
├── Payment/           Zahlart- und Status-Enums, PaymentHandler
├── Console/           oe:riverty:cleanup
├── Exception/
├── Config/            Konfigurations-Objekte und Factories
├── Service/
│   └── IntegrationApi/
├── Repository/
├── Model/
│   └── IntegrationApi/
└── Extension/
    ├── Controller/
    └── Model/

Chain Extending

Klasse Erweitert Zweck
OrderControllerExtension OrderController Greift beim Bestellabschluss ein, startet die Riverty-Autorisierung und leitet bei Bedarf zu Riverty weiter
PaymentControllerExtension PaymentController Filtert die Zahlartenliste gegen die Riverty-Verfügbarkeitsabfrage, liefert Infobox, Personennummer-Feld und Ratenzahlungs-Beispiel
ThankYouControllerExtension ThankYouController Stellt die Daten für die Riverty-Infobox auf der Danke-Seite bereit
ModuleConfigurationExtension Admin\ModuleConfiguration Formular-Aktionen (fnc) auf der Einstellungsseite mit anschließendem Neuladen: Secret generieren, API-Keys prüfen, Zahlarten abfragen und synchronisieren
ExtendedPaymentGateway PaymentGateway Gibt bei bereits autorisierter Riverty-Zahlung true zurück, damit OXID die Bestellung nicht verwirft
OrderOverviewExtension Admin\OrderOverview Hängt sich an sendorder(). Der Capture-Modus ist fest auf manuell gesetzt, die Erweiterung zieht daher keine Zahlung ein