Übersicht
OCI 5.0 unterstützt sogenannte Function Calls: Anfragen, bei denen das Procurement-System nicht nur einloggt, sondern eine bestimmte Aktion ausführen möchte – z. B. direkt ein Produkt validieren, in eine Suchergebnisseite navigieren oder den Katalog als JSON abrufen.
OciFunctionDispatcher
Der OciFunctionDispatcher ist der zentrale Einstiegspunkt. Er erhält den function-Parameter, normalisiert ihn mit strtoupper() und routet ihn per match an den passenden Controller:
// OciFunctionDispatcher::dispatch()
return match (strtoupper($function)) {
'DETAIL' => $this->ociDetailController->handle(...),
'VALIDATE' => $this->ociValidateController->handle(...),
'SOURCING' => $this->ociSourcingController->handle(...),
'BACKGROUND_SEARCH' => $this->ociBackgroundSearchController->handle(...),
'DOWNLOADJSON' => $this->ociDownloadJsonController->handle(...),
'QUANTITYCHECK' => $this->ociQuantityCheckController->handle(...),
default => $this->ociUndefinedFunctionController->handle($function, $params),
};
Der function-Parameter ist case-insensitiv: detail, Detail und DETAIL führen alle zum gleichen Controller.
Zwei SalesChannelContexts
Alle Function-Controller erhalten zwei separate SalesChannelContexts:
| Parameter | Bedeutung |
|---|---|
$dataFeedContext | Für Produktabfragen und DataField-Auflösung; nutzt den konfigurierten Datenfeed-SalesChannel des OCI-Systems |
$cartContext | Für Cart-Operationen (Produkt hinzufügen); nutzt den SalesChannel des eingeloggten Käufers |
Diese Trennung ermöglicht z. B. unterschiedliche Preisgruppen: Produktdaten (und OCI-Feldauflösung) laufen über den Datenfeed-Kontext, Warenkorboperationen über den Käufer-Kontext.
Unterstützte Funktionen
function-Wert | Controller-Klasse | Pflicht-Parameter | Response-Typ |
|---|---|---|---|
DETAIL | OciDetailController | productid | Redirect zur Produktdetailseite |
VALIDATE | OciValidateController | productid, quantity | OCI-Form HTML |
SOURCING | OciSourcingController | searchstring | Redirect zur Suchergebnisseite |
BACKGROUND_SEARCH | OciBackgroundSearchController | searchstring | OCI-Form HTML |
DOWNLOADJSON | OciDownloadJsonController | – | JSON-Produktkatalog |
QUANTITYCHECK | OciQuantityCheckController | productid | JSON-Verfügbarkeit |
| (unbekannt) | OciUndefinedFunctionController | – | Flash-Meldung + Redirect Startseite |
Fallback: Unbekannte Funktionen
Unbekannte function-Werte landen im OciUndefinedFunctionController. Er gibt eine Flash-Warnung aus und leitet zur Shopware-Startseite weiter:
OCI function "UNKNOWN_FUNCTION" is not supported.
Session-Verhalten
Nicht alle Funktionen behalten die ConnectorSession:
| Funktion | Session nach Aufruf |
|---|---|
DETAIL | Aktiv (Käufer bleibt eingeloggt) |
SOURCING | Aktiv (Käufer bleibt eingeloggt) |
VALIDATE | Gelöscht |
BACKGROUND_SEARCH | Gelöscht |
DOWNLOADJSON | Gelöscht |
QUANTITYCHECK | Gelöscht |