Warenkorb-Integration
Der Warenkorb wird für die Bestellung von konfigurierten Artikeln verwendet. Er liegt immer auf dem Kundenserver, nicht auf web.3doffice.de.
Einrichtung
Mit dem URL-Parameter urlwarenkorb wird die externe Warenkorb-URL angegeben:
https://web.3doffice.de/webkatalog2_5/planning?urlwarenkorb=www.meinserver.de/warenkorb/kundenidHinweis
Die URL wird ohne http:// oder https:// angegeben. HTTPS:// wird automatisch vorangestellt.
Ablauf
sequenceDiagram
participant U as Benutzer
participant WK as WebKatalog
participant EK as Externer Warenkorb
U->>WK: Artikel konfigurieren
WK->>U: "In den Warenkorb"-Button anzeigen
U->>WK: Auf Button klicken
WK->>EK: Formular-POST (Feld shoppingCartData)
EK-->>U: Warenkorb-Seite wird angezeigt- Eine
urlwarenkorbwird hinterlegt - Im Artikelinformationsbereich erscheint ein "In den Warenkorb"-Button. Solange am Artikel noch ein Pflichtmerkmal offen ist (
obligatory2c), werden Warenkorb- und Merkzettel-Button nicht angezeigt. - Klick auf den Button sendet den aktuellen Artikel als Formular-POST an die hinterlegte URL; das Fenster (bzw. der iFrame) wechselt zur Warenkorb-Seite
- Immer der komplette Artikel wird gesendet (bei Meta-Planung: der oberste Artikel)
- Kindartikel können nicht einzeln gesendet werden
POST-Daten
Der WebKatalog sendet ein Formular (application/x-www-form-urlencoded) mit einem Feld shoppingCartData. Es enthält ein JSON-Objekt (als String) mit zwei Teilen: json ist der vollständige oberste Artikel (zum Speichern und Nachkonfigurieren), hierarchy eine vereinfachte Struktur mit Texten und Preisen für die Anzeige:
{
"json": {
"typename": "",
"id": "{815F0BB3-0BC2-4D9B-AE21-0B25F026A14F}",
"rootid": "{815F0BB3-0BC2-4D9B-AE21-0B25F026A14F}",
"manufacturer": "_dx",
"program": "webti",
"basearticlenumber": "27R0614Q",
"ocd": {
"finalarticlenumber": "27 R 06 14 KL Q",
"price": 540,
"currency": "EUR",
"shorttext": "Rechtecktisch, Tiefe 600 mm, Breite 1400 mm",
"reinitstring": "..."
}
},
"hierarchy": {
"manufacturer": "_dx",
"program": "webti",
"basearticlenumber": "27R0614Q",
"shorttext": "Rechtecktisch, Tiefe 600 mm, Breite 1400 mm",
"price": 540,
"currency": "EUR",
"id": "{815F0BB3-0BC2-4D9B-AE21-0B25F026A14F}"
}
}Auslesen in PHP:
$cart = json_decode($_POST['shoppingCartData']);
$article = $cart->json;Merkzettel
Mit urlmerkzettel erscheint der Button „Auf den Merkzettel“. Er sendet dieselben Daten wie der Warenkorb an diese URL. Button-Text: merkzettelbtntext. Ist zusätzlich urlwarenkorb gesetzt, erscheint der Merkzettel als Symbol-Button neben dem Warenkorb-Button; merkzettelbtntext ist dann dessen Tooltip.
Artikel-IDs
Jeder Artikel hat eine eindeutige ID. Diese sollte für die Speicherung im Kunden-Warenkorb verwendet werden. Auch eine Aktualisierung nach Nachkonfiguration kann über die ID gehandhabt werden.
Warenkorb-Regeln
- Speichern Sie immer den Top-Level-Artikel (id == rootid) mit vollständigem JSON-Payload
- Verwenden Sie id/rootid zum Gruppieren und Rekonfigurieren von Meta-Planungen
- Rekonfigurieren Sie niemals ein einzelnes Kind unabhängig von seinem Root
Nachkonfiguration
Um einen Artikel aus dem Warenkorb erneut zu konfigurieren:
- Das Top-Level-Artikel-JSON (Feld
jsonder POST-Daten) per POST an/api/ofml.dll/ofml/reinitsenden - Die zurückgegebene
idverwenden:{BASE}/planning?id={ID}
Ein Beispiel dafür ist der Demo-Warenkorb unten.
Demo-Warenkorb
Für Tests gibt es einen Demo-Warenkorb, der keine Artikel speichert:
https://web.3doffice.de/webkatalog2_5/planning?urlwarenkorb=web.3doffice.de%2Fwebkatalog2%2Fassets%2FDemo-Warenkorb%2Fwarenkorb.phpWARNING
Der Demo-Warenkorb speichert keine Artikel und ist nur für die einmalige Ansicht gedacht. Er kann nicht für den Live-Betrieb verwendet werden.
Parameter
| Parameter | Beschreibung |
|---|---|
urlwarenkorb | URL des externen Warenkorbs |
warenkorbbtntext | Custom Text für den Warenkorb-Button |
urlmerkzettel | URL des Merkzettels (allein oder zusätzlich zum Warenkorb) |
merkzettelbtntext | Eigener Text für den Merkzettel-Button (mit Warenkorb: Tooltip des Symbol-Buttons) |