Markus Michalski FAQ

Riverty Payments: Erweiterbarkeit

Riverty Payments für Sylius - austauschbare Interfaces als Service-Aliase, Service-Tags des Payment-Request-Systems, Events des Plugins und der Hinweis, dass es keine formale BC-Zusage gibt

English Version

Zurück zur Übersicht

Riverty Payments: Erweiterbarkeit

Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.

Das Plugin gibt keine formale Abwärtskompatibilitäts-Zusage ab. Form-Types, Twig-Erweiterungen und Event-Listener sind im Code ausdrücklich als @internal markiert: Konstruktoren und Interna können sich in einem Minor-Release ändern. Stütze dich für eigene Erweiterungen auf die Punkte dieser Seite.

Prüfe nach jedem Update, ob deine Erweiterungspunkte noch passen, weil es keine Kompatibilitäts-Zusage gibt.

Austauschbare Interfaces

Diese Interfaces sind als Service-Aliase eingerichtet. Du ersetzt die Implementierung, indem du den Alias in der services.yaml deiner Anwendung auf deinen Service zeigen lässt.

Interface Aufgabe
RivertyClientInterface Spricht mit der Riverty-API
RivertyCredentialsProviderInterface Liefert die API-Keys pro Land
RivertyAvailabilityInterface Fragt Riverty, welche Zahlarten für einen Warenkorb gelten
ApiCallRecorderInterface Schreibt den API-Log
CredentialCipherInterface Ver- und entschlüsselt API-Keys und Identifikationsnummern
RivertySettingsRepositoryInterface Zugriff auf die Channel-Einstellungen
CustomerOrderHistoryInterface Liest die frühere Bestellhistorie des Kunden für die Option Bestellhistorie
RivertyTransactionRepositoryInterface Zugriff auf die Riverty-Transaktionen
services:
    App\Riverty\MyClient: ~

    Mmd\SyliusRivertyPaymentsPlugin\Api\RivertyClientInterface:
        alias: App\Riverty\MyClient

Service-Tags

Das Plugin hängt sich über Standard-Tags in Sylius ein. Du kannst die Services dekorieren oder ersetzen:

Tag Wert Zweck
sylius.gateway_configuration_type type: riverty Gateway-Formular mit dem Feld Riverty-Zahlungsart
sylius.payment_request.command_provider gateway_factory: riverty Wählt den Command für Autorisierung und Status
sylius.payment_request.provider.http_response gateway_factory: riverty Leitet im Storefront zu Riverty oder zurück zur Bestellung
form.type_extension Zahlungsschritt Feld für die Identifikationsnummer
messenger.message_handler Bus sylius.payment_request.command_bus Handler für Autorisierung und Status

Der Gateway-Factory-Name ist riverty. Die Auflösung der Zahlarten dekoriert den Service sylius.resolver.payment_methods, das Plugin ist also selbst ein Beispiel für einen Dekorator. Weitere Dekoratoren hängst du genauso davor.

Events

Das Plugin hört auf diese Ereignisse. Eigene Listener auf denselben Ereignissen mit höherer oder niedrigerer Priorität sind möglich.

Ereignis Zweck im Plugin
workflow.sylius_order_shipping.completed.ship Merkt eine Bestellung für den Capture beim Versand vor, wenn ihre letzte Lieferung versendet wurde
workflow.sylius_payment.guard.complete Sperrt den Sylius-Übergang Complete für Riverty-Zahlungen
workflow.sylius_payment.guard.refund Sperrt den Sylius-Übergang Refund für Riverty-Zahlungen
kernel.terminate und console.terminate Führen den vorgemerkten Capture nach der Antwort aus
Messenger WorkerMessageHandledEvent und WorkerMessageFailedEvent Führen den vorgemerkten Capture in einem Worker nach jeder Nachricht aus
sylius.menu.admin.main Trägt den Menüpunkt unter MMKreativ Plugins ein

Capture beim Versand und das Sperren der Sylius-Buttons setzen den State-Machine-Adapter symfony_workflow voraus, den Sylius-Standard. Mit winzou_state_machine entfallen beide Funktionen.