Bindet einen PrestaShop-Shop an den everysize-Direktkauf an: Bestellungen, die Kundinnen auf everysize.com aufgeben, landen als Bestellung im Shop; Bestellnummer, Versand, Storno, Retoure und Erstattungen gehen zurück an everysize.
Modul-Name everysize_checkout, Version 1.1.0, MIT.
- PrestaShop 8.1 bis 9.x (getestet mit 9.2.0 / PHP 8.4)
- PHP ≥ 8.1 mit
curl - ein Cronjob (PrestaShop hat keinen eigenen Scheduler für Module)
Kein PayPal-Modul nötig: bezahlt wird bei everysize. Erstattet wird im Reiter „everysize" der Bestellung über everysize oder direkt im PayPal-Konto des Händlers. Ab 1.1.0 zahlt auch eine Gutschrift im Shop (Teil-/Standarderstattung, Rücksendung) den Betrag über everysize an PayPal zurück — abschaltbar, ab PrestaShop 9.
-
Im Backoffice unter Module → Modul-Manager → Modul hochladen das ZIP
everysize-checkout-prestashop-vX.Y.Z.ziphochladen (es enthält den Ordnereverysize_checkout/) und „everysize Checkout" installieren.Alternativ mit Composer im Verzeichnis des Shops:
composer config allow-plugins.composer/installers true composer require everysize/checkout-prestashopDas Paket landet in
modules/everysize_checkout/; danach im Modul-Manager installieren. Update:composer update everysize/checkout-prestashop, dann im Modul-Manager „Aktualisieren". -
Beim Update per ZIP das neue ZIP genauso hochladen; PrestaShop führt die Upgrade-Schritte des Moduls aus.
-
Module → Modul-Manager → everysize Checkout → Konfigurieren: Client-ID und Client-Secret aus everysize Business („Shop-Integration" → PrestaShop) eintragen, Versanddienstleister und Status-Zuordnungen prüfen, mit „Verbindung testen" prüfen.
-
Cronjob anlegen — alle 5 Minuten:
*/5 * * * * cd /pfad/zum/shop && php bin/console everysize:sync
Ohne Console-Zugang (Webcron):
https://<shop>/index.php?fc=module&module=everysize_checkout&controller=cron&token=<Token>(Token steht nach der Installation in den Moduleinstellungen.)
| Richtung | Was | Wann |
|---|---|---|
| everysize → Shop | neue Bestellungen (PROCESSING, auch bereits stornierte REVOKED) ohne Händler-Bestellnummer |
jeder Lauf |
| Shop → everysize | PrestaShop-Bestellnummer | direkt nach dem Import |
| Shop → everysize | Versand mit Sendungsnummer und Versanddienstleister | Bestellstatus = „Versandt" (einstellbar) |
| 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 im Reiter „everysize" |
| Shop → everysize | Erstattung über Gutschrift (Teil-/Standarderstattung, Rücksendung im Shop) | Gutschrift im PS-Admin, abschaltbar (ab PrestaShop 9) |
| Shop → everysize | volle Erstattung | automatisch nach einem Storno vor dem Versand, nur wenn noch gar nichts erstattet wurde (abschaltbar) |
| Shop → everysize | Storno MERCHANT_DECLINE |
Bestellung storniert, bevor der Versand gemeldet war |
| Shop → everysize | Retoure RETOUR |
Rücksendung „Paket erhalten" oder Bestellstorno nachdem der Versand gemeldet war |
- Zuordnung: Bestellpositionen über
sku= PrestaShop-Referenz der Kombination (z. B.CW2288-111-42.5); ohne Kombinationen die Artikel-Referenz. Exakter Treffer vor Groß-/Kleinschreibung, aktiver vor inaktivem Artikel; zwei gleich gute Treffer sind ein Fehler. - Preise: Bestellung mit den bei everysize bezahlten Bruttopreisen.
Netto und Mehrwertsteuer rechnet das Modul mit dem Steuersatz des Produkts
(Steuerregeln des Shops) zurück; Versandkosten erben den höchsten
Positionssatz. Weicht die erwartete Gesamtsumme von
grossPriceab, landet eine Warnung im Protokoll (Import läuft trotzdem). - Bestand: wird beim Import reduziert, auch unter 0 (Warnung im Protokoll); ein Storno/Rücksendung im Shop bucht ihn wie gewohnt zurück.
- 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 (customer.originalEmail) steht nur zur Information im Reiter „everysize". - Zahlart: importierte Bestellungen tragen „everysize (PayPal)" mit der PayPal-Capture-ID als Transaktions-ID. Das Geld ist bei everysize bezahlt.
- Status-Zuordnungen: welche Bestellstatus „bezahlt importiert", „storniert importiert", „versandt" und „storniert" bedeuten, ist in den Moduleinstellungen einstellbar (Defaults: „Zahlung akzeptiert", „Zahlung akzeptiert", „Versandt", „Storniert").
- Atomar: Validierung (Produkt, Land, Beträge) vor dem ersten Schreiben; schlägt ein Import fehl, bleibt die Bestellung bei everysize und wird im nächsten Lauf erneut versucht.
- Genau einmal: jede Meldung steht mit eindeutigem Schlüssel (Bestellung,
Art, SKU) in
everysize_report; ein zweiter Lauf meldet nichts doppelt. - Storno bei everysize: vor jeder Meldung fragt das Modul 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. - Testumgebung: Umgebungsvariable
EVERYSIZE_CHECKOUT_API_URLauf eine HTTPS-Adresse untereverysize.comsetzen (z. B. im Docker-Compose); alles andere wird abgelehnt, nie still auf Produktion gefallen. Die Moduleinstellungen zeigen die aktive Umgebung.
| Command | Wirkung |
|---|---|
everysize:sync |
Import und Export — der Cron-Job (empfohlen */5 * * * *) |
everysize:order:import |
nur Bestellungen holen + Bestellnummer melden |
everysize:order:export |
nur Versand/Storno/Retoure/Erstattungen melden |
Der Sync holt Bestellungen und meldet Status zurück — er sollte alle
5 Minuten laufen. Voraussetzungen: PHP ≥ 8.1 mit pdo_mysql, curl,
mbstring; PrestaShop 8.1 oder 9.x.
Empfohlen: System-Cron über die Konsole des Shops
*/5 * * * * php /pfad/zum/shop/bin/console everysize:sync --no-interaction >> /var/log/everysize-sync.log 2>&1
Der Befehl steht auch in den Moduleinstellungen („Sync“). Bei Fehlern landet ein Lauf nicht in einer Endlosschleife — nicht gemeldete Änderungen holen die nächsten Läufe nach.
Alternative: Webcron (Hoster ohne Konsole)
Die Moduleinstellungen zeigen die Webcron-URL mit Token
(index.php?fc=module&module=everysize_checkout&controller=cron&token=…).
Das Token wird bei der Installation erzeugt und kann alternativ im Header
X-Everysize-Token: <Token> übergeben werden. Ein Beispiel für
cron-job.org: URL eintragen, Intervall 5 Minuten, Header
X-Everysize-Token mit dem Token aus den Moduleinstellungen.
Das Modul legt vier Tabellen an (Präfix des Shops, Default ps_):
| Tabelle | Inhalt |
|---|---|
everysize_order |
Verlinkung Bestellung ↔ everysize-Order-ID, PayPal-Capture-ID, Original-E-Mail, Bestellnummer gemeldet |
everysize_order_item |
Positionen mit SKU (exakt wie von everysize geschickt) |
everysize_report |
jede Meldung genau einmal: (id_order, kind, sku) — fulfillment / revocation / tracking / refund |
everysize_protocol |
Protokoll der Läufe (31 Tage Retention, Aufräumen am Ende jedes Laufs) |
Bei der Deinstallation bleiben Tabellen und Zuordnungen erhalten („Daten behalten"); zum vollständigen Entfernen die vier Tabellen löschen.
- Eine Rücksendung oder ein Storno meldet die ganze Position einmal
an everysize; Teilmengen werden nicht gemeldet. Die Meldung wird pro
(Bestellung, Art, SKU)eindeutig gespeichert; eine weitere Rücksendung zur selben Position ändert die bereits gemeldete Revocation nicht. Einen Teilbetrag erstatten Sie über eine Gutschrift im Shop oder im Reiter „everysize" der Bestellung. - Die Bestellhistorie wird ab dem Stichtag der Installation
(
EVERYSIZE_CHECKOUT_HISTORY_SINCE, bei Installation/Upgrade auf „jetzt" gesetzt) durchsucht. Bestellungen, deren Historie vollständig davor liegt, werden nicht nachgemeldet — der erste Lauf nach der Installation meldet nicht den Altbestand.
MIT — siehe LICENSE.