Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/everysize/checkout-woocommerce/archive/refs/heads/main.zipOn Packagist as everysize/checkout-woocommerce:
composer require everysize/checkout-woocommerceeverysize Checkout für WooCommerce
Bestellungen, die Kundinnen und Kunden bei everysize aufgeben, landen als Bestellung im WooCommerce-Shop. Versand, Sendungsnummern, Stornos, Retouren und Erstattungen meldet das Plugin an everysize zurück; Erstattungen aus dem Shop heraus führt everysize im Namen des Händlers über PayPal aus. Bezahlt wird bei everysize — das Plugin braucht kein PayPal-Modul.
Voraussetzungen
- WordPress 6.5 oder neuer, WooCommerce 8.5 bis 11.2 (HPOS an oder aus)
- PHP ≥ 8.1 mit
curlundjson - eigene Tabellen benötigen InnoDB mit
ROW_FORMAT=DYNAMIC(MySQL 5.7+, MariaDB 10.2+); bei sehr alten MySQL-Installationen ggf. dasinnodb_default_row_formatprüfen - Abgleich über den WooCommerce Action Scheduler (mit WooCommerce
mitgeliefert); für zuverlässige Intervalle stattdessen einen System-Cron
mit
wp everysize syncnutzen
Ablauf
| Richtung | Was | Wann |
|---|---|---|
| everysize → Shop | neue Bestellungen (PROCESSING, auch bereits stornierte REVOKED) ohne Shop-Bestellnummer |
jeder Lauf |
| Shop → everysize | WooCommerce-Bestellnummer | direkt nach dem Import |
| Shop → everysize | Versand mit Sendungsnummer und Versanddienstleister | Bestellung auf „Fertiggestellt“ gesetzt |
| Shop → everysize | Sendungsnummer nachgetragen oder korrigiert | bis 14 Tage nach der Versandmeldung, nur wenn everysize sie noch nicht hat |
| Shop → everysize | Erstattung (ganz oder teilweise) | Button in der everysize-Box der Bestellung |
| Shop → everysize | volle Erstattung | automatisch nach einem Storno vor dem Versand (abschaltbar) |
| Shop → everysize | Storno MERCHANT_DECLINE |
Position oder Bestellung storniert, bevor der Versand gemeldet war |
| Shop → everysize | Retoure RETOUR |
Position oder Bestellung storniert, nachdem der Versand gemeldet war |
- Zuordnung: Bestellpositionen über
sku= SKU der Variante. Es gibt exakt einen passenden Artikel; zwei gleich gute Treffer sind ein Fehler. - Preise: Bestellung mit den bei everysize bezahlten Bruttopreisen. Netto und Mehrwertsteuer rechnet das Plugin mit dem Steuersatz des Shops zurück (nach Lieferland), der Versand wird genauso aufgeteilt.
- Bestand: wird beim Import reduziert, ein Storno bucht ihn wie gewohnt zurück (auch ins Negative — der Bestand wird nicht geprüft).
- Kunde:
customer.emailist eine Weiterleitungsadresse von everysize, stabil je Kundin; ein Wiederkauf landet am selben (Gast-)Konto. Mails des Shops gehen dorthin und laufen über everysize. Die Original-Adresse steht nur zur Information in der everysize-Box der Bestellung. - Zahlart: eigene Zahlungsart „everysize (PayPal)“, beim Aktivieren angelegt und im Checkout nie wählbar. Die PayPal-Capture-ID steht in der everysize-Box der Bestellung.
- Bestellstatus: importierte Bestellungen sind bezahlt — der Status ist einstellbar (Standard „In Bearbeitung“); der Import setzt danach auch das Bezahlt-Datum. Die Kunden-Bestellbestätigung des Shops ist standardmäßig aus: die Kundin hat die Bestätigung schon von everysize. Die „Neue Bestellung“-Mail an den Admin folgt der normalen WooCommerce- Einstellung.
- HPOS: das Plugin läuft mit HPOS (High-Performance Order Storage) und im klassischen Modus; beide Wege benutzen dieselben WooCommerce-CRUD- Methoden.
- Atomar: Bestellung, Positionen, Bestand und Verknüpfungen entstehen in einer Transaktion; ein Fehler hinterlässt nichts, die Bestellung bleibt bei everysize und wird im nächsten Lauf erneut versucht.
- Genau einmal: jede Meldung steht mit eindeutigem Schlüssel (Bestellung, Art, SKU) in den Plugin-Tabellen; ein zweiter Lauf meldet nichts doppelt.
- Storno bei everysize: vor jeder Meldung fragt das Plugin den Stand bei
everysize ab. Ist die Bestellung dort schon storniert (PayPal-Erstattung,
everysize Business), meldet es nichts: ein Versand würde sie auf
COMPLETEDzurücksetzen, ein Storno den Grund von everysize überschreiben. Es steht als Fehler im Protokoll. - Sendungsnummer nachmelden: jede gemeldete Nummer steht als Rückmeldung
tracking. Steht in der Bestellung später eine andere Nummer, geht sie einmal per erneuter Versandmeldung raus — bis 14 Tage nach dem Versand. everysize nimmt die wiederholte Meldung als Aktualisierung; die Kundin bekommt keine Mail. - Erstattung: Retouren und Teilerstattungen über den Erstattungsdialog von WooCommerce → „Rückerstattung über everysize (PayPal)“: WooCommerce erfasst die Erstattung und den Bestand, everysize erstattet die PayPal-Zahlung im Namen des Händlers. Für Kulanz ohne Retoure gibt es in der everysize-Box die eingeklappte „Kulanzerstattung“ (von WooCommerce nicht erfasst). Beide Wege prüfen vorher den bei everysize noch offenen Betrag; jede Erstattung trägt einen eigenen Idempotency-Key, doppelt abgeschickt erstattet sie einmal.
- Automatische Erstattung: nach einem gemeldeten Storno vor dem
Versand (
MERCHANT_DECLINE) erstattet das Plugin im nächsten Lauf den vollen Betrag, sobald keine Position der Bestellung mehr aktiv ist — es wurde nichts versendet, der Kundin steht alles zu. Retouren nicht (der Händler erstattet nach Wareneingang, ggf. mit Abzug). Ergebnis bzw. Ablehnung stehen als Notiz in der Bestellhistorie. Standard: an (Einstellung „Storno vor dem Versand automatisch erstatten“); erstattet werden nur Stornos ab dem Einschalten, höchstens 14 Tage zurück. - Bestellliste: Spalte „everysize“ mit der everysize-Bestellnummer und die Suche nach der everysize-Nummer (HPOS und klassisch).
- Protokoll: nur Läufe, die etwas übertragen haben oder fehlgeschlagen sind (WooCommerce → everysize Protokoll); 31 Tage.
- Selbstauskunft: jeder API-Aufruf trägt
ERP-Shop-System: WooCommerce, die WordPress-/WooCommerce-Version, die Plugin-Version und eineneverysizeCheckoutPlugin-WC/<Version>-User-Agent.
Eingehende Endpunkte gibt es keine — der Checkout ruft Shops nicht auf.
Installation
Aus Packagist:
composer require everysize/checkout-woocommerce
Das setzt eine per Composer verwaltete WordPress-Installation voraus (z. B.
Bedrock oder ein eigenes composer.json mit installer-paths für
type:wordpress-plugin). Über composer/installers landet das Plugin dann in
wp-content/plugins/everysize-checkout/; in der composer.json des Projekts
muss composer/installers unter config.allow-plugins erlaubt sein. Danach wie
jedes Plugin unter „Plugins“ aktivieren (oder wp plugin activate everysize-checkout). Laufzeit-Abhängigkeiten gibt es keine, das Plugin lädt
seine Klassen selbst.
Alternativ per ZIP: unter „Plugins → Installieren → Plugin hochladen“ die ZIP-Datei des Releases hochladen. Das ZIP enthält bereits das Übersetzungspaket (Deutsch).
Einrichtung
- „WooCommerce → everysize“ öffnen: Client-ID und Client-Secret aus everysize („Shop-Integration“) eintragen und mit „Verbindung testen“ prüfen. Ohne Zugangsdaten macht das Plugin keinerlei API-Aufrufe.
- Einstellungen nach Bedarf anpassen:
- Bestellstatus für neue Bestellungen (Standard „In Bearbeitung“)
- Bestellbestätigung an Kundin senden (Standard: aus — die Bestätigung kommt von everysize)
- Versanddienstleister (Standard „DHL“; wird mit der Sendungsnummer übermittelt, sobald die Bestellung auf „Fertiggestellt“ gesetzt wird; freier Text, maximal 31 Zeichen, Vorschläge aus der everysize-Dokumentation)
- Storno vor dem Versand automatisch erstatten (Standard: an)
- Der Abgleich läuft automatisch alle 5 Minuten über den Action Scheduler.
Für System-Crons stattdessen
wp everysize syncper CLI schedulen (importiert und meldet in einem Lauf, Exit-Code 0 bei Erfolg).
Versand und Sendungsnummern
Die Bestellung auf „Fertiggestellt“ setzen und die Sendungsnummer samt Versanddienstleister in der everysize-Box eintragen — beides kann in demselben Speichervorgang passieren, der Versand wird erst gemeldet, wenn die Bestellung gespeichert ist. Eine nachträglich geänderte oder korrigierte Nummer geht bis 14 Tage nach der Versandmeldung automatisch als Aktualisierung an everysize. Wer Sendungsnummern ohnehin in „WooCommerce Shipment Tracking“ oder „Advanced Shipment Tracking“ pflegt, liest das Plugin von dort.
Storno, Retoure und Erstattung
Ein Storno der Bestellung oder einer Position meldet das Plugin als
MERCHANT_DECLINE (vor der Versandmeldung) bzw. RETOUR (danach). Ein Storno
vor dem Versand wird auf Wunsch automatisch voll erstattet. Für Retouren
erstattet der Händler nach Wareneingang über den Erstattungsdialog von
WooCommerce — ganz oder teilweise; everysize führt die PayPal-Erstattung aus.
Kulanzbeträge ohne Retoure gehen über die Kulanzerstattung in der everysize-Box. War die
Bestellung bei everysize schon storniert, meldet das Plugin nichts und weist
in der Box darauf hin.
API-Umgebung
Standard ist immer Produktion (https://ext-checkout.everysize.com) —
eine Installation beim Händler braucht dafür nichts einzustellen.
Für Test- und Entwicklungsshops nennt everysize auf Anfrage die Adresse einer Testumgebung samt Test-Zugangsdaten. Sie wird in der Umgebung des PHP-Prozesses gesetzt (Webserver und Cron):
EVERYSIZE_CHECKOUT_API_URL=https://<von everysize genannt>.everysize.com
Erlaubt ist nur https:// mit einem Host unter everysize.com, ohne Port und
Pfad. Ein anderer Wert ist ein Fehler — es gibt bewusst keinen stillen
Rückfall auf Produktion, damit ein Testshop mit Tippfehler keine Bestellungen
an den Live-Checkout schickt. Bewusst keine Einstellung im Admin. Die aktive
Umgebung zeigt die Admin-Seite an.
Lizenz
MIT — siehe LICENSE.