Zum Inhalt springen

Shopware 6

Das punchout.dev-Plugin für Shopware 6.7 gibt das Script-Tag aus, markiert die Warenkorbseite für punchout.dev und meldet Punchout-Einkäufer in ihrem Kundenkonto an.

Voraussetzung Wert
Shopware 6.7 (>=6.7 <6.8)
PHP-Erweiterungen sodium, json
Plugin PunchoutDev, Version 2.0.1 oder neuer
Download PunchoutDev-<version>.zip aus dem Tab Einbindung des Shops im Portal (Shopsystem: Shopware)
  1. Laden Sie das Plugin im Tab Einbindung des Portals herunter.
  2. Laden Sie die Zip-Datei in der Shopware-Administration in der Erweiterungsverwaltung unter Erweiterungen hoch.
  3. Installieren und aktivieren Sie punchout.dev.

Entpacken Sie die Zip-Datei nach custom/plugins. Sie enthält einen Ordner, das Plugin landet also in custom/plugins/PunchoutDev. Führen Sie dann aus:

Terminal-Fenster
bin/console plugin:refresh
bin/console plugin:install --activate PunchoutDev
bin/console cache:clear

plugin:install führt die Migration des Plugins aus. Sie legt die Tabelle an, mit der das Plugin jedes Login-Token nur einmal annimmt. Ohne diese Tabelle schlägt jeder Auto-Login fehl, und der Einkäufer kauft als Gast ein.

Öffnen Sie in der Administration Erweiterungen und wählen Sie beim Eintrag punchout.dev die Aktion Konfigurieren. Jede Einstellung lässt sich je Verkaufskanal setzen.

Einstellung Wert
Snippet einbinden An (Standard). Bei Aus wird gar kein Script-Tag ausgegeben.
Snippet-URL https://js.punchout.dev/pob.js, aus dem Tab Einbindung des Portals. Bleibt das Feld leer, wird nichts ausgegeben.
API-Basis-URL (optional) Leer lassen.
Einstellung Wert
Auto-Login aktivieren An (Standard).
Shop-ID Die Shop-ID aus dem Tab Einbindung des Portals.
Public-Key-Zeilen Jede Zeile aus dem Tab Auto-Login des Portals, Abschnitt Öffentliche Schlüssel, eine je Zeile. Zeilen, die mit # beginnen, und leere Zeilen werden ignoriert.

Dieselben Werte auf der Kommandozeile:

Terminal-Fenster
bin/console system:config:set PunchoutDev.config.snippetUrl https://js.punchout.dev/pob.js
bin/console system:config:set PunchoutDev.config.tenantId pob_live_…
bin/console system:config:set PunchoutDev.config.publicKeys "k1=…"
bin/console cache:clear

Das Plugin gibt dieses Tag auf jeder Storefront-Seite im Block base_body_script aus:

<script async src="https://js.punchout.dev/pob.js" data-shop-id="pob_live_…"></script>

Auf der Warenkorbseite umschließt das Plugin den Twig-Block page_checkout_cart_product_table mit <div data-punchout-cart>. Dieser Block rendert die Tabelle der Positionen und sonst nichts: Die Bestellübersicht, das Formular für Aktionscodes und der Checkout-Button bleiben außerhalb. Das Plugin gibt den Marker auch aus, wenn Snippet einbinden aus ist. Für sich allein bewirkt der Marker nichts.

Der Login-Endpunkt des Plugins ist GET /punchout-dev/login?token=…. Richten Sie die Portalseite im Tab Auto-Login des Shops ein:

Portalfeld Wert
Adapter Shopware
Login-Pfad /punchout-dev/login für einen Shop direkt auf der Domain. Ein Shop in einem Unterverzeichnis stellt dessen Pfad voran, zum Beispiel /shop/public/punchout-dev/login.
Kundenreferenz Kunden-ID, Kundennummer oder E-Mail-Adresse. Unter Shopware funktionieren alle drei.

Tragen Sie dann im Tab Einkäufer für jeden Einkäufer-Zugang die Shop-Kundenreferenz ein: die Kunden-ID, die Kundennummer oder die E-Mail-Adresse des Kunden, je nach Auswahl oben.

Nach der Anmeldung leitet das Plugin unverändert auf den Landing-Pfad weiter und setzt den Basispfad des Shops nicht davor. Liegt der Shop in einem Unterverzeichnis, muss der Landing-Pfad im Tab Allgemein das Unterverzeichnis enthalten, zum Beispiel /shop/public/checkout/cart.

Das Plugin meldet einen Kunden nur an, wenn genau ein aktiver Kunde passt. Gastkonten passen nie, und ein Kunde, der an einen anderen Verkaufskanal gebunden ist, passt ebenfalls nicht. Die Kunden-ID funktioniert mit und ohne Bindestriche. Der vollständige Ablauf steht auf der Seite Auto-Login.

  1. Erzeugen Sie im Tab Einrichtung des Shops im Portal einen Setup-Link (standardmäßig 60 Minuten gültig).
  2. Legen Sie 2 oder 3 verschiedene Produkte in den Warenkorb.
  3. Öffnen Sie die Warenkorbseite mit dem Setup-Link.

Ist das Plugin aktiv, zeigt das Panel schon vor dem Klick „Shop-Plugin erkannt — der Warenkorb ist bereits markiert.“ Klicken Sie auf Warenkorb erkennen; das Ergebnis nennt die Quelle Shop-Plugin. Bestätigen Sie mit Ja, passt. Damit ist belegt, dass der Marker auf der Seite steht und das Tag mit der richtigen Shop-ID läuft, und der Schritt Warenkorb erkannt im Portal ist erledigt. Für den Warenkorb wird sonst nichts gespeichert, denn punchout.dev liest den Marker bei jedem Punchout neu.

Laden Sie die neue Zip-Datei aus dem Tab Einbindung herunter, entpacken Sie sie über custom/plugins/PunchoutDev und führen Sie dann aus:

Terminal-Fenster
bin/console plugin:refresh
bin/console plugin:update PunchoutDev
bin/console cache:clear

Für Shopware ist Version 2.0.0 ein neues Plugin: Deinstallieren Sie PunchoutNinja und löschen Sie seinen Ordner, bevor Sie PunchoutDev installieren. Betreiben Sie nie beide. Es wird nichts übernommen: Tragen Sie beide Karten neu ein und ändern Sie den Login-Pfad im Tab Auto-Login des Portals auf /punchout-dev/login.

Symptom Ursache Lösung
Kein pob.js-Tag im Seitenquelltext Snippet einbinden ist aus, oder Snippet-URL oder Shop-ID ist für diesen Verkaufskanal leer Schalten Sie Snippet einbinden ein und tragen Sie beide Werte ein, dann bin/console cache:clear
Das Setup-Panel meldet Voreinstellung oder Automatisch erkannt statt Shop-Plugin Der Marker kommt nicht auf der Seite an: Das Theme überschreibt page_checkout_cart_product_table, ohne parent() aufzurufen, oder der Storefront-Cache ist veraltet Rufen Sie im Block des Themes parent() auf, dann bin/console cache:clear
Jeder Login wird mit dem Grund replay abgelehnt Die Tabelle des Plugins für verwendete Login-Tokens fehlt bin/console plugin:update PunchoutDev
Jeder Login wird mit dem Grund expired abgelehnt Die Uhr des Shops geht vor Synchronisieren Sie die Serveruhr
Der Einkäufer landet auf einer 404-Seite Der Login-Pfad im Portal passt nicht zur Route, oft nach dem Umstieg von 1.x Setzen Sie ihn auf /punchout-dev/login, gegebenenfalls mit dem Präfix des Unterverzeichnisses
Auto-Login bewirkt nichts, der Einkäufer kauft als Gast ein Auto-Login ist im Portal an, aber im Plugin ist Auto-Login aktivieren aus, oder Shop-ID / Public-Key-Zeilen sind leer (Grund disabled oder not_configured). Das Plugin leitet ohne Anmeldung auf die Landing-Seite weiter. Füllen Sie die Karte Auto-Login aus, oder schalten Sie Auto-Login im Tab Auto-Login des Portals aus

Das Plugin schreibt je abgelehntem Login-Token eine Warnung mit einem Ablehnungsgrund ins Shopware-Log. Das Token und den Kunden protokolliert es nie. Die Ablehnungsgründe stehen auf der Seite Auto-Login.

Mehr unter Fehlersuche.

Die englische README des Plugins beschreibt die Prüfungen des Tokens, die Sicherheitshinweise und den Selbsttest für die Entwicklung: README des Shopware-Plugins.