Zum Hauptinhalt springen
Der Abschnitt checkout umfasst alles, was den Bestellprozess in der Storefront steuert: von der einfachen Gast- oder Schnellbestellung über eigene Eingabefelder bis zur Rundung von Zwischensummen. Er ermöglicht zudem eine schnelle Artikelerfassung per Artikelnummer, prüft bei Bedarf Warenkorbinhalte gegen Regeln (z. B. Pflichtzubehör), verwaltet Versandarten inklusive Preislogik und bindet Paketverfolgung an.

checkout* - Grundstruktur

Nachfolgend der Grundaufbau des Knotens checkout

Parameterübersicht

ParameterBeschreibung
checkoutÜbergreifende Checkout-Einstellungen für den Bestellprozess.
voucherEinstellungen für die Gutscheinverwendung im Bestellprozess.
directOrderKonfiguration für Direktbestellungen.
productDependencyRegeln für Produktabhängigkeiten im Checkout.
bankInfoFieldSteuerung von Bankdatenfeldern.
shippingMethodEinstellungen zu Versandarten.
shippingMethodGroupGruppen, zu denen Versandarten zusammengefasst werden können.
shipTrackOptionen für die Sendungsverfolgung.
fieldErrorVisibilitySteuert, wann Feldfehler im Checkout angezeigt werden.

checkout.checkout - Bestellablauf

Dieser Abschnitt bündelt die Einstellungen für den Checkout. Hier wird festgelegt, wie der Bestellprozess abläuft, welche Zusatzfelder angezeigt werden und wie beispielsweise Versandoptionen standardmäßig gewählt werden. Zudem lassen sich Regeln für Gutschein-Berechnungen, länderspezifische Versandfreiheit und optional für die Paketverfolgung definieren.

Beispielkonfiguration checkout.checkout

Parameterübersicht

ParameterTypBeschreibung
allowGuestAccountsboolErlaubt Bestellungen ohne Kundenkonto (Gastbestellung).
Default: true
allowGuestOrderWithRegisteredEmailboolLegt fest, ob eine Gastbestellung mit einer bereits registrierten E-Mail-Adresse erlaubt ist.
Default: true
subtotalRoundingobjectRundung der Zwischensumme vor weiteren Berechnungen (z.B. vor Versand / Gutscheinen).
activeboolAktiviert die Rundungslogik. Default: true
decimalPlacesuintAnzahl der Nachkommastellen für die Rundung.
Default: 2
voucherAppliesPerItemboolSteuert, ob Gutscheine pro Position (statt auf den Gesamtwarenkorb) angewendet werden.
minOrderValueCalculationenumLegt fest, wie der Mindestbestellwert berechnet wird, ab dem ein Gutschein angewendet werden kann.
Mögliche Werte:
sum - die Mindestbestellwerte aller verwendeten Gutscheine werden addiert. Hat z.B. Gutschein A einen Mindestbestellwert von 20€ und Gutschein B von 30€, muss der Warenkorb mindestens 50€ erreichen.
max - es gilt nur der höchste Mindestbestellwert aller verwendeter Gutscheine. Bei Gutschein A (20€) und Gutschein B (30€) reichen 30€ im Warenkorb aus.
minOrderValueIgnoreVoucherReductionboolBestimmt, welcher Warenwert für die Prüfung des Mindestbestellwertes herangezogen wird.
Mögliche Werte:
true - nur der reine Warenwert zählt.
false - der Warenwert abzüglich bereits angewandter Gutscheine wird verwendet.
freeShippingCountries
(zukünftiges Feature,
noch nicht vollständig
implementiert!)
multiAssocLänder, in denen versandkostenfrei geliefert wird.
Target: general.country
allowFastOrderboolErlaubt die Bestellung per Express-Checkout. Default: true
defaultFreeShippingMethodsingleAssocLegt die Standard-Versandart fest, die für Berechnungen zu “kostenlosem Versand” verwendet wird (z.B. Anzeige “noch 45€ bis zum kostenlosen Versand”). Target: checkout.shippingMethod
deliveryRequiredForOrderboolGibt vor, ob eine Versandart ausgewählt sein muss, damit die Bestellung abgeschlossen werden kann.
true - Checkout nur mit gewählter Versandart möglich.
false - Bestellung ohne Auswahl einer Versandart zulässig.
Default: true
freeFieldslist (object)Konfigurierbare Zusatzfelder im Checkout (z.B. Hinweise, Kundennotizen). Jedes Objekt beschreibt ein Feld.
idstringEindeutige Kennung des Zusatzfeldes.
namestringAnzeigename / Label im Checkout
requiredstringMarkiert das Feld als Pflichtfeld.
Default: false
typeoneOfFeldtyp und Detailkonfiguration.
textobjectTextfeld-Konfiguration.
checkboxobjectCheckbox-Konfiguration.
defaultsobjectDefiniert Standardwerte für Felder im Checkout.
defaultBillCountrysingleAssocStandardland für die Rechnungsadresse. Wird beim Anlegen einer neuen Adresse im Checkout vorausgefüllt - bei Nutzung der Draft-Adresse (draftBillAddress) sowie bei Gastbestellungen.
Target: general.country
defaultShippingCountrysingleAssocStandardland für die Lieferadresse. Wird beim Anlegen einer neuen Adresse im Checkout vorausgefüllt - bei Nutzung der Draft-Adresse (draftShippingAddress) sowie bei Gastbestellungen.
Target: general.country
defaultPaymentMethodsingleAssocZahlungsart, die im Checkout standardmäßig vorausgewählt wird.
Target: payment.payment
defaultShippingMethodsingleAssocLiefermethode, die im Checkout standardmäßig vorausgewählt wird.
Target: checkout.shippingMethod
autoSelectSingleOptionboolWenn aktiviert, wird automatisch eine Versandmethode oder Zahlungsart ausgewählt, sofern nur eine gültige Option verfügbar ist.
Default: true
prevSelectionInvalidAutoSelectenumSteuert, ob eine bereits gewählte Versand- oder Zahlungsart automatisch ersetzt wird, wenn sie durch eine Änderung des Bestellkontexts (z.B. Wechsel des Lieferlandes) ungültig wird. Gilt für Versand- und Zahlungsarten (keine getrennte Option je Art).
Mögliche Werte:
disabled - keine automatische Neuauswahl durch diese Option; die Auswahl wird als ungültig markiert und der Kunde wählt neu (autoSelectSingleOption greift weiterhin).
ifSingleOption - bleibt genau eine gültige Art übrig, wird diese automatisch gewählt (auch wenn autoSelectSingleOption deaktiviert ist); bleiben mehrere gültig, erfolgt keine automatische Auswahl.
always - es wird immer eine gültige Ersatz-Art gewählt: bevorzugt die konfigurierte Standard-Art (defaultShippingMethod bzw. defaultPaymentMethod), sofern gültig; andernfalls die einzige verbleibende gültige Art.
Default: disabled
Prioritätslogik für defaults: Wenn mehrere Quellen (z.B. Benutzerauswahl oder Kundenpräferenzen) einen Wert für ein Feld in defaults liefern, gilt folgende Rangfolge der Priorisierung:
  1. Aktive Benutzerauswahl in der aktuellen Sitzung - wird niemals automatisch überschrieben.
  2. Gespeicherte Kundenpräferenzen eines eingeloggten Kunden (sofern unterstützt).
  3. Händler-Konfiguration - die hier definierten defaults-Werte.
  4. System-Fallback - z.B. automatische Auswahl bei nur einer verfügbaren Option oder erste gültige Option nach Sortierung (siehe autoSelectSingleOption).
Neuauswahl, wenn eine gewählte Art nachträglich ungültig wird:Die Prioritätslogik oben gilt für die Erstauswahl. Wird dagegen eine bereits getroffene, aber inzwischen ungültige Auswahl behandelt - etwa weil der Kunde das Lieferland wechselt und die gewählte Versandart dort nicht angeboten wird -, steuert prevSelectionInvalidAutoSelect, wie der Shop reagiert (siehe Tabelle oben). autoSelectSingleOption bleibt dabei in allen Modi als Rückfallebene aktiv.
Hinweis zum Rundungsverhalten bei positionsbasierter Gutschein-Berechnung:
Wenn „voucherAppliesPerItem” auf „true” gesetzt ist und ein prozentualer Gutschein mit einem konfigurierten Maximalbetrag verwendet wird, kann der gewährte Rabatt diesen Maximalbetrag um bis zu 0,01 € überschreiten. Grund dafür ist, dass der Rabatt pro Position einzeln gerundet wird und die Summe dieser Rundungen minimal vom erwarteten Gesamtbetrag abweichen kann.

checkout.voucher - Einstellungen für Gutscheine

In diesem Abschnitt werden die Einstellungen für die Verwendung von Gutscheinen im Bestellprozess gebündelt. Hier wird unter anderem festgelegt, wie viele Gutscheine ein Kunde gleichzeitig einlösen kann und wie Rabattbeträge bei prozentualen Gutscheinen rechnerisch gerundet werden.

Beispielkonfiguration checkout.voucher :

Parameterübersicht

ParameterTypBeschreibung
maxNumberVouchersPerOrderuintMaximale Anzahl an Gutscheinen, die pro Bestellung angewandt werden können.
Mögliche Werte: 1 - 20
Default: 1
roundPercentalVoucherInBasketItemenumLegt fest, wie Rabattbeträge aus prozentualen Gutscheinen pro Artikel gerundet werden, wenn mehrere Gutscheine gleichzeitig aktiv sind.
Mögliche Werte:
sum - Der Rabatt jedes einzelnen Gutscheins wird pro Artikel zunächst ungerundet berechnet. Alle Rabattbeträge werden addiert und das Ergebnis erst am Ende gerundet.
single - Der Rabattbetrag jedes Gutscheins wird pro Artikel sofort einzeln gerundet. Weil jede Rundung einen kleinen Fehler einführen kann, weicht die Gesamtersparnis je nach Artikelpreis und Gutscheinhöhe um wenige Cent vom sum-Ergebnis ab.

checkout.directOrder - Onlinebestellschein

Ermöglicht eine schnelle Erfassung von Artikeln per Artikelnummer - beispielsweise für große oder wiederkehrende Bestellungen. Festgelegt wird, welche Spalten pro Zeile sichtbar sind (z.B. Artikelnummer, Menge). Auf Wunsch merkt sich das System die zuletzt verwendete Zeilenanzahl über saveCountInSession.

Beispielkonfiguration checkout.directOrder

Parameterübersicht

ParameterTypBeschreibung
fieldsmultiAssocLegt fest, in welchen Produktfeldern gesucht wird, um ein Produkt zu finden (z.B. content.productField.id, content.productField.itemnumber).
Beispiel: Wenn id oder itemNumber konfiguriert sind, kann der Nutzer entweder die Produkt-ID oder die Artikelnummer eingeben.
Target: [content.productField], [content.customProductField]
initialNumberintAnzahl der Zeilen, die beim ersten Laden sichtbar sind.
Default: 5
itemNumberFieldslist (object)Eingabefelder pro Zeile für die Artikelnummer-Erfassung - definiert Spalten / Felder und Beschriftungen (z.B. Reihenfolge, Label, Platzhalter).
maximalNumberintObergrenze der insgesamt zulässigen Eingabezeilen.
Default: 1000
refreshedNumberintAnzahl der verfügbaren Zeilen, die bei Klick auf den Button “Zeilen hinzufügen” hinzugefügt werden.
Default: 5
saveCountInSessionboolSpeichert die aktuelle Zeilenanzahl in der Session, damit sie beim nächsten Aufruf wiederhergestellt wird.
default: true

checkout.productDependency - Produktabhängigkeiten

Dieser Abschnitt legt fest, wann bestimmte Schritte oder Optionen im Checkout erlaubt sind. Er prüft dazu die Inhalte des Warenkorbs - etwa Eigenschaften wie Größe, Farbe oder ob ein Zusatzfeld ausgefüllt ist - und kann bei Nichterfüllung einen Hinweis anzeigen oder die Aktion sperren. Typische Einsatzfälle sind beispielsweise Pflichtzubehör oder das Verhindern verbotener Kombinationen im Checkout.

Beispielkonfiguration checkout.productDependency

Auswertungslogik

Die Regelgruppen und Bedingungen werden nach einem festen Schema ausgewertet:
  • dependencyGroups sind ODER-verknüpft: Es genügt, wenn eine der Gruppen vollständig erfüllt ist.
  • dependencies innerhalb einer Gruppe sind UND-verknüpft: Innerhalb einer Gruppe müssen alle Bedingungen erfüllt sein.
  • Ob eine einzelne Bedingung als erfüllt gilt, steuert zusätzlich basketBehavior: Bei matchOnce muss mindestens eine Warenkorb-Position die Bedingung erfüllen, bei matchAll alle Positionen, bei denen das geprüfte Feld einen Wert liefert.
Im Beispiel oben gilt die Abhängigkeit also als erfüllt, wenn entweder die erste Gruppe zutrifft (eine Position mit der Farbe camel und eine Position mit leerem Freifeld engraving im Warenkorb) oder die zweite Gruppe (eine Position mit Größe S, M oder L).

Parameterübersicht

ParameterTypBeschreibung
idstringEindeutige Kennung der Produktabhängigkeit, die selbst gewählt werden kann.
Die id wird in den Validierungen shippingMethodValidation.productDependency (Versandarten) und paymentValidation.productDependency (Zahlungsarten) angegeben.
Mehr dazu unter: Validierungs- und Prüfservices
disabledTextstringHinweis-/Fehlermeldung, die angezeigt wird, wenn Bedingungen nicht erfüllt sind.
Bei Versandarten wird der Text im Frontend über $wsCheckout.getShippingMethodDisabledErrors() ausgegeben.
dependencyGroupslist (object)Enthält eine oder mehrere Regelgruppen. Die Gruppen sind ODER-verknüpft (siehe Auswertungslogik oben).
dependencieslist (object)Liste einzelner Bedingungen innerhalb einer Gruppe. Die Bedingungen sind UND-verknüpft.
Jede Bedingung legt fest, welches Feld geprüft wird, wie geprüft wird und welcher Vergleichswert ggf. nötig ist.
targetoneOfDefiniert, welches Feld geprüft wird. (Pflichtfeld)
fieldsingleAssocReferenz auf ein Produktfeld, das geprüft wird.
Target: content.productField, content.customProductField
freeFieldstringName eines freien Feldes (z.B. Freifeld am Produkt/Warenkorb), das geprüft wird. (Alternativ zu field)
typeenumPflichtfeld Vergleichsart der Bedingung.
Die möglichen Werte sind in der Tabelle „Prüfarten” unten beschrieben.
inputoneOfVergleichswert der Bedingung. (nur erforderlich, wenn der type einen Vergleichswert benötigt).
Z.b. nicht erforderlich bei filled / empty.
textobjectTextbasierter Vergleichswert.
valuestringWert für textbasierte Vergleiche. (z. B. bei value, prefix, matchsimplewildcard)
listobjectWerteliste für Listenvergleiche (z. B. bei inlist, includedinlist).
valuelist (string)Werteliste für den Vergleich.
basketBehaviorenumLegt fest, wie viele Warenkorb-Positionen die Bedingung erfüllen müssen:
matchOnce = mind. eine Position
matchAll = alle Positionen, bei denen das geprüfte Feld einen Wert liefert.
Default:matchOnce

Prüfarten (type)

WertBeschreibung
filledDas Feld ist gefüllt. Kein input erforderlich.
emptyDas Feld ist leer. Kein input erforderlich.
valueDer Wert des Feldes entspricht dem in input angegebenen Wert.
notvalueDer Wert des Feldes entspricht nicht dem in input angegebenen Wert.
inlistDer Wert des Feldes ist in der in input angegebenen Liste enthalten.
notinlistDer Wert des Feldes ist nicht in der in input angegebenen Liste enthalten.
prefixDer Wert des Feldes beginnt mit dem in input angegebenen Präfix.
notprefixDer Wert des Feldes beginnt nicht mit dem in input angegebenen Präfix.
greaterDer Wert des Feldes ist (numerisch) größer als der in input angegebene Wert.
smallerDer Wert des Feldes ist (numerisch) kleiner als der in input angegebene Wert.
includedinlistDer in input angegebene Wert ist in der Werte-Liste des Produktdatenfeldes enthalten (für Felder, die mehrere Werte enthalten).
notincludedinlistDer in input angegebene Wert ist nicht in der Werte-Liste des Produktdatenfeldes enthalten.
matchsimplewildcardDer Wert des Feldes stimmt mit dem in input angegebenen Muster überein. Als Platzhalter stehen ? (genau ein beliebiges Zeichen) und * (beliebig viele beliebige Zeichen) zur Verfügung; beide können mehrfach und an beliebiger Position verwendet werden.
notmatchsimplewildcardDer Wert des Feldes stimmt nicht mit dem in input angegebenen Muster überein.

checkout.shippingMethod - Versandarten

Definiert verfügbare Versandarten und deren Verhalten im Checkout. Neben Aktivierung, Name und Bestellhinweisen lassen sich Preisstaffeln nach Gewicht (weightCost) und nach Warenkorb-Zwischensumme (basicCost) konfigurieren. Über Validierungen (validations) können Bedingungen wie zulässige Länder, nur physische Produkte oder weitere Regeln hinterlegt werden. Ergänzend sind Beschreibung, Bild/Icon und externer Link (z. B. Carrier-Info) möglich. Über das Feld group lässt sich eine Versandart zudem einer Versandarten-Gruppe zuordnen. So entstehen klar benannte, regelkonforme Versandoptionen mit transparenter Preislogik und optionalen Einschränkungen.

Beispielkonfiguration checkout.shippingMethod

Parameterübersicht

ParameterTypBeschreibung
activeboolAktiviert / deaktiviert die Versandart im Shop.
idstringEindeutige Kennung der Versandart.
namestringAnzeigename der Versandart.
orderText
(zukünftiges Feature / befindet sich noch in Entwicklung)
textBestell- / Hinweistexte zur Versandart.
validationsmultiServiceListe von Prüf- / Freigaberegeln (z.B. Länder - / Produktbeschränkungen).
link
(zukünftiges Feature / befindet sich noch in Entwicklung)
textExterner Link mit Zusatzinfos.
description
(zukünftiges Feature / befindet sich noch in Entwicklung)
stringKurze Beschreibung der Versandart.
image
(zukünftiges Feature / befindet sich noch in Entwicklung)
stringBild- / Icon-URL der Versandart.
weightCostobjectStaffelpreise nach Gewicht.
basicCostobjectStaffelpreise nach Warenkorb-Zwischensumme.
taxableboolLegt fest, ob auf die Versandkosten Steuern berechnet werden. Bei false wird der Versandkosten-Steuersatz in der Bestellung mit 0 ausgewiesen.
typeenumstandard oder pickup.
Bei standard handelt es sich um einen “normalen” Versand über einen Versender wie DHL, UPS etc. pickup kennzeichnet, dass es sich um “Click and Collect” und somit um eine Abholung in einem Store, Markt oder einer Filiale handelt.
Für die Auswahl im Bestellablauf wird die Aktion CheckoutStoreIdSelect verwendet.
Wurde kein Markt ausgewählt wird Standardmäßig der Markt aus der allgemeinen Auswahl verwendet.
groupsingleAssocOrdnet die Versandart einer Versandarten-Gruppe zu.
Target: checkout.shippingMethodGroup

checkout.shippingMethodGroup - Versandarten-Gruppen

Definiert Gruppen, zu denen Versandarten zusammengefasst werden können (z. B. nach Anbieter oder Lieferart). Eine Versandart wird über ihr Feld group einer Gruppe zugeordnet. Je Gruppe lassen sich Name, Beschreibung, Bild und ein Link hinterlegen - etwa, um im Frontend mehrere Versandarten gebündelt und einheitlich darzustellen.

Beispielkonfiguration checkout.shippingMethodGroup

Parameterübersicht

ParameterTypBeschreibung
idstringEindeutige Kennung der Versandarten-Gruppe.
nametextAnzeigename der Gruppe.
descriptiontextBeschreibung der Gruppe.
imagestringBild- / Icon-URL der Gruppe.
linkstringExterner Link mit Zusatzinfos zur Gruppe.
Im Template werden die Gruppen über $wsConfig.shippingMethodGroups gelesen. Die einer Versandart zugewiesene Gruppe steht dort im Feld group der Versandart.

checkout.shipTrack - Paketverfolgung

Konfiguriert die Anbindung an Versanddienstleister zur Sendungsverfolgung. Hinterlegt werden Provider-Kennung und Zugangsdaten (API-User/Token) sowie ein Sprachcode für Provider-Antworten und Labeling. Auf Basis dieser Daten lassen sich Tracking-Links und Statusinformationen im Checkout bzw. im Kundenkonto bereitstellen und automatisiert in Benachrichtigungen verwenden.

Beispielkonfiguration checkout.shipTrack

Parameterübersicht

ParameterTypBeschreibung
idstringEindeutige Kennung der Versand-Tracking-Konfiguration.
providerstringAnbieter-Kennung. Derzeit wird ausschließlich DHL unterstützt - der Wert muss exakt so geschrieben werden (Groß-/Kleinschreibung beachten), sonst kann die Tracking-Integration nicht zugeordnet werden.
usernamestringAPI-Benutzername / Zugang für den Provider.
passwordstringAPI-Passwort / Token für den Provider.
languageCodestringSprachcode für Labels / Antworten des Providers (ISO, z.B. de, en).
Leer = bei DHL wird de verwendet.

checkout.fieldErrorVisibility - Fehleranzeige

Legt fest, wann Fehlermeldungen im Checkout angezeigt werden, z.B. ob ein Hinweis auf ein fehlendes Pflichtfeld sofort erscheint, auch ohne dass der Kunde das Feld berührt hat, oder erst, wenn der Kunde auf “Kaufen” klickt.

Beispielkonfiguration checkout.fieldErrorVisibility

Parameterübersicht

ParameterTypBeschreibung
showMissingBeforeSubmitboolWenn true, werden “Pflichtfeld fehlt”-Felder bereits angezeigt, bevor der Kunde auf “Kaufen” klickt.
Wenn false, erscheinen diese erst nach dem Klick auf “Kaufen”.
showInvalidBeforeSubmitboolWenn true, werden Validierungsfehler (z.B. ungültige PLZ, fehlerhaftes Datumsformat) sofort nach der Eingabe angezeigt.
Wenn false, erscheinen diese erst nach dem Klick auf “Kaufen”.
showIncompatibleBeforeSubmitboolWenn true, werden Inkompatibilitätsfehler (z.B. Zahlart für dieses Land nicht verfügbar) sofort angezeigt.
Wenn false, erscheinen diese erst nach dem Klick auf “Kaufen”.
Nach dem Klick auf “Kaufen” werden standardmäßig alle Fehler angezeigt, unabhängig von dieser Einstellung.Im Checkout gibt es grundsätzlich zwei Arten von Fehlern:
  • Fehler, die das System selbst erkennt (z.B. “Pflichtfeld leer”, “ungültige PLZ”):
    Diese werden über $wsCheckout.problems.* bereitgestellt und lassen sich vollständig über die show*BeforeSubmit-Parameter steuern.
  • Fehler, die der Server zurückmeldet (z.B. nach dem Klick auf “Kaufen”):
    Hier greifen die Einstellungen der show*BeforeSubmit-Parameter nur teilweise. Bei Kundendaten und Draft-Adressen steht $wsCheckout.problems.* nicht zur Verfügung, deshalb werden die Serverfehler dort stattdessen über die show*BeforeSubmit-Parameter gefiltert. In allen anderen Bereichen des Checkouts (z.B. bei der Zahlungsart) werden Serverfehler immer sofort angezeigt, unabhängig von der Konfiguration.