Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Eigener Versand-Handler

Einen Versand-Handler für einen Exponential-Shop schreiben - die drei Methoden, die eZShippingManager aufruft, das Array, das getShippingInfo mit mehreren Versandposten und ihrer Umsatzsteuer zurückgibt, wie der Handler…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/e-commerce/extending/custom-shipping-handler.md

On this page

This page is a translation. Read the English original

Eigener Versand-Handler

Diese Seite ist für Entwickler, die Versandregeln jenseits des pauschalen Betrags des einfachen Versand-Ereignisses brauchen. Im Kernel wird kein Versand-Handler mitgeliefert; der Vertrag ist in kernel/classes/ezshippingmanager.php dokumentiert, und diese Seite macht daraus ein Rezept.

Inhalt

  1. Der Vertrag
  2. Was getShippingInfo zurückgibt
  3. Den Handler registrieren
  4. Wie der Versand in die Summen gelangt
  5. Übliche Modelle
  6. Testen

Der Vertrag

eZShippingManager lädt den in shop.ini [ShippingSettings] Handler genannten Handler und ruft drei Methoden auf, jeweils mit der ID der Produktsammlung des Warenkorbs:

MethodeAufgerufenGibt zurück
getShippingInfo( $productCollectionID )Immer wenn Warenkorb, Bestätigung oder Summen den Versand brauchenEin Array (unten) oder nichts für keinen Versand
updateShippingInfo( $productCollectionID )Wenn ein Artikel hinzugefügt wird (der Schritt update-shipping-info von addtobasket)Was immer Ihr Handler braucht; nutzen Sie ihn, um neu zu berechnen oder Auswahlen zu speichern
purgeShippingInfo( $productCollectionID )Wenn Versandinformationen entfernt werden sollenNichts

Der Klassenname ist <name>ShippingHandler in <name>shippinghandler.php.

Was getShippingInfo zurückgibt

Eine Versandzeile:

return array( 'description' => 'Standard delivery',
              'cost'        => 6.50,
              'vat_value'   => 20,
              'is_vat_inc'  => 1 );

Mehrere Zeilen, zum Beispiel wenn Pakete unterschiedliche Steuersätze tragen:

return array( 'shipping_items' => array(
                  array( 'description' => 'Parcel, standard VAT', 'cost' => 5.00, 'vat_value' => 20, 'is_vat_inc' => 1 ),
                  array( 'description' => 'Parcel, reduced VAT', 'cost' => 3.00, 'vat_value' => 5, 'is_vat_inc' => 1 ) ),
              'description' => 'Total shipping',
              'cost'        => 8.00,
              'vat_value'   => false,
              'is_vat_inc'  => 1 );
SchlüsselBedeutung
descriptionDem Kunden angezeigter Text
costBetrag als Float
vat_valueSteuersatz in Prozent als Zahl oder false, wenn die Summe mehrere Sätze kombiniert
is_vat_inc1, wenn cost die Umsatzsteuer enthält, 0, wenn nicht
jeder andere SchlüsselWird an Templates übergeben, zum Beispiel management_link zu einer Seite, auf der der Kunde eine Versandart wählt

Den Handler registrieren

In der settings/shop.ini.append.php Ihrer Erweiterung:

[ShippingSettings]
Handler=mystore
ExtensionDirectories[]=mystore_shop

und die Klasse in extension/mystore_shop/shippinghandlers/mystoreshippinghandler.php. Wird die Datei nicht gefunden, meldet das Debug-Log „Shipping handler 'mystore' not found“ mit den durchsuchten Verzeichnissen. Entfernen Sie den einfachen Versand-Workflow vom Trigger confirmorder, wenn der Handler live geht.

Wie der Versand in die Summen gelangt

eZShippingManager::vatPriceInfo() wandelt Ihr Array in Beträge je Steuersatz um, und der mitgelieferte Handler für Warenkorbinformationen (ezdefault) addiert sie zu den Preisinformationen des Warenkorbs je Steuersatz und zur Summe (Handler für Warenkorbinformationen und Bestellbestätigung). Der Schritt handle-shipping der Operation confirmorder wendet den Versand an, wenn die Bestellung bestätigt wird (Die Kassenoperationen Schritt für Schritt).

Übliche Modelle

ModellWas der Handler liest
Kostenloser Versand ab einem BetragDie Artikel der Produktsammlung und ihre Preise
Tarife nach Land oder ZoneDas Land des Kunden (eZVATManager::getUserCountry()) oder die Kontodaten
Tarife nach GewichtEin Gewichtsfeld in den Produktklassen, mal der Anzahl der Artikel
Der Kunde wählt eine VersandartEine Auswahl, die Ihre eigene View speichert (verlinkt mit management_link) und getShippingInfo() zurückliest
Tarifdienst eines VersanddienstleistersEin Aufruf beim Versanddienstleister mit Adresse und Paketdaten; speichern Sie die Antwort je Warenkorb im Cache

Ob der Versand Umsatzsteuer trägt und zu welchem Satz, ist eine Frage für Ihren Steuerberater.

Testen

  • To do: Unit-Tests für die Berechnung mit festen Warenkörben (PHPUnit-Tests ohne Datenbank).
  • To do: Warenkorb, Bestätigung, Bestellansicht und Mail zeigen denselben Versand.
  • To do: Geänderte Mengen ändern den Versand, wenn sie es sollen.
  • To do: Jedes Land oder jede Zone, die Sie unterstützen, und eines, das Sie nicht unterstützen.
  • To do: Keine zweite Versandzeile aus einem alten einfachen Versand-Workflow.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x