Zum Hauptinhalt springen

Lebenszyklus

Eine ConnectorSession durchläuft drei Phasen:

Procurement-System
│
│ Punchout-Aufruf → Transmission wird erzeugt
▼
┌─────────┐
│ LOGIN │ POST /agiqon/connector/session/login/{transmissionId}
└────┬────┘
│ Session wird erstellt & gespeichert
▼
┌──────────────────┐
│ AKTIVER EINKAUF │ Käufer browst und füllt den Warenkorb
└────────┬─────────┘
│
├── Warenkorb übertragen → POST /agiqon/connector/session/logout?transferred=1
│
└── Session beenden → POST /agiqon/connector/session/logout
GET /agiqon/connector/session/logout/redirect

HTTP-Endpunkte​

Alle Endpunkte sind im ConnectorSessionController definiert.

EndpunktMethodeBeschreibung
/agiqon/connector/session/login/{transmissionId}GET, POSTStartet eine Connector-Session anhand einer Transmission-ID
/agiqon/connector/session/logoutGET, POSTBeendet die aktive Session; optionaler Parameter transferred=1 löst den Warenkorb-Transfer aus
/agiqon/connector/session/logout/redirectGET, POSTBeendet die Session und leitet anschließend zur Startseite weiter
/agiqon/connector/session/getGETGibt den aktuellen Session-Status als JSON zurück

Login-Endpunkt​

Beim Login wird die Transmission aus der Datenbank geladen und auf Gültigkeit geprüft. Schlägt einer der folgenden Checks fehl, wird ein HTTP-Fehler zurückgegeben:

  • Bereits eine aktive Session vorhanden → 409 Conflict
  • Transmission nicht gefunden → 404 Not Found
  • Transmission wurde abgebrochen (Cancelled) → 400 Bad Request
  • Transmission wurde bereits übertragen (Transferred) → 400 Bad Request
  • Transmission hat bereits eine Bestellung erzeugt (OrderCreated) → 400 Bad Request

Logout-Endpunkt​

Der Parameter transferred bestimmt das Verhalten beim Logout:

transferredVerhalten
false (Standard)Session wird beendet, Warenkorb wird gelöscht – kein Transfer
trueConnectorTransferEvent wird ausgelöst, dann Session + Warenkorb gelöscht

Aktive Phase: Blockierte Routen​

Während eine Connector-Session aktiv ist, werden bestimmte Shopware-Seiten geblockt (Redirect zum Warenkorb). Dies verhindert, dass der Käufer den normalen Checkout-Prozess durchläuft, statt den Warenkorb ans Procurement-System zurückzuschicken.

Blockierte Routen:

Route
frontend.checkout.confirm.page
frontend.checkout.finish.page
frontend.account.login.page
frontend.account.home.page
frontend.account.profile.page
frontend.account.order.page
frontend.account.order.detail.page
frontend.account.edit-order.page
frontend.customer-group-registration.page