Kontext: Aleta, Shopify und Grosshandelspartner
Aleta Distribution Sàrl ist ein Schweizer Distributionsunternehmen. Der Produktkatalog lebt in Shopify: Artikel, Varianten, Medien und Bestände werden dort als operative Quelle der Wahrheit geführt.
B2B-Partner — weitere Distributoren und Integratoren — brauchen einen zuverlässigen programmatischen Zugriff (Referenzpreise, Lager, Standorte), ohne Shopify-Admin-Tokens offenzulegen und ohne jedem Partner GraphQL-Komplexität aufzuerlegen.
d-side solutions hat eine öffentliche B2B-API unter api.aleta.ch konzipiert und betrieben, angebunden an den Shopify-Shop, inklusive Dokumentation und Onboarding für API-Kunden.
💡 Technische Einordnung
Es handelt sich um eine Symfony-Middleware, die Grosshandelsanforderungen (stabiles REST, JSON, abgegrenzte Zugriffe) in kontrollierte Aufrufe der Shopify-Admin-GraphQL-API übersetzt — mit Cache, Logging und konsumentengerechter Fehleroberfläche.
Die Herausforderung: Katalog öffnen ohne Shopify zu gefährden
Direkter Admin-API-Zugang für viele Distributoren erzeugt Sicherheits-, Governance- und Vertragsprobleme: jeder Partner hat andere kommerzielle Konditionen, und die Shopify-API wandelt sich mit jeder Version (entfernte Felder oder Schemaänderungen).
- ✗Kein geteiltes Admin-Token — Admin-Schlüssel an jeden Integrator zu verteilen, vervielfacht Risiken und erschwert Rotationen.
- ✗Katalogpreis ≠ Distributorpreis — Rabatte oder Margen müssen pro Konto deterministisch und nachvollziehbar angewendet werden.
- ✗GraphQL-Versions-Drift — gestern gültige Selektionen können nach einem API-Versionssprung scheitern.
- ✗Serverbetrieb — reproduzierbare Deployments, Dateirechte (Konfigurationsschreibzugriff) und strukturierte Logs für die Produktion.
🎯 Ziel
Eine versionierte REST-Oberfläche, API-Schlüssel pro Kunde mit Umfang (Produkte, Bestände, Standorte), eine Admin-Konsole zur Kontoverwaltung und eine beherrschbare Produktionspipeline.
Die Lösung: Symfony-Middleware zwischen Shopify und Integratoren
Die Symfony-8-Anwendung fungiert als Gateway: Sie authentifiziert B2B-Aufrufe (Header Authorization: Bearer … oder äquivalenter Query-Parameter), wendet kundenspezifische Preisregeln an, befragt Shopify über die Admin-GraphQL-API und liefert dokumentierte JSON-Antworten.
// Datenfluss
REST · API-Key · Scopes
Auth · Pricing · Cache
Katalog · Inventar
Beträge werden als Strings zurückgegeben, um JSON-Präzisionsfallen auf Kundenseite zu vermeiden.
Das Repository wird auf d-side-Infrastruktur ausgerollt (git pull, composer install, Symfony-Cache leeren) mit dokumentiertem Deploy-Skript — das standardisiert Releases und reduziert Umgebungsdrift.
Reales Incident: Shopify-Fehler in Produktion
Der Katalog-Endpunkt lieferte plötzlich einen generischen « Shopify upstream »-Fehler. Applikationslogs zeigten GraphQL-Fehler: Felder (weight, weightUnit auf ProductVariant) existierten in der konfigurierten Admin-API-Version nicht mehr. Die Behebung war eine Anpassung der GraphQL-Selektion an das unterstützte Schema — ein Muster, das jede Shopify-Integration langfristig einplanen muss.
Betrieb: Dateiberechtigungen
Ein weiteres typisches Thema trat in Produktion auf: Schreibfehler auf temporären Konfigurationsdateien für Kunden, wenn der Unix-Benutzer des Webservers nicht zum Deployment-Besitzer passt. Die Lösung sind konsistente Rechte und Ownership zwischen SSH-Deploy und Apache-Runtime — banal, aber für die Kontoverwaltung blockierend.
Hauptfunktionen
Versionierte REST-Oberfläche
Integratoren nutzen Endpunkte für Health-Checks, paginierte Produktlisten (Cursor, SKU, Status), Bestände und Standorte — einheitliche Authentifizierung und konfigurierbare Rate-Limits pro Kunde.
Kundenspezifische Preise
Die Middleware berechnet kontobezogene Preise (z. B. Rabatt auf Katalogpreis plus Regeln für Direktliefer-Szenarien) zentralisiert und testbar aus Shopify-Beträgen.
Admin-Konsole
Eine geschützte Web-Oberfläche erlaubt Anlegen und Deaktivieren von Kunden, Anpassen von Prozenten und Zugriffsbereichen sowie Kommunikation von Zugangsdaten ohne Offenlegung des Shopify-Admin-Tokens — jeder Partner erhält einen eigenen Schlüssel mit Präfix wie b2b_ und behandelt ihn wie jedes andere Geheimnis.
Signierte Webhooks
Ein eigener Endpunkt nimmt Shopify-Notifications mit Signaturprüfung (HMAC) entgegen und ermöglicht zuverlässige Serverreaktionen bei Katalog- oder Bestandsänderungen in Shopify.
Ergebnisse
- ✓Klares Integrationskontrakt — REST-JSON, verständliche Fehler, Dokumentation auf demselben Host wie die API.
- ✓Shopify bleibt Quelle der Wahrheit — kein manuelles zweites Katalogsil.
- ✓Robustheit gegen API-Evolution — gezielte GraphQL-Anpassung nach realem Produktionsvorfall.
- ✓Reproduzierbare Deployments — dokumentiertes Composer-Skript für Code- und Dependency-Updates auf dem Server.
Zusammenfassung
Für Aleta hat d-side solutions eine schlanke, aber vollständige B2B-Schicht über Shopify gebaut: getrennte Identitäten pro Distributor, serverseitige Preislogik und Betriebsdisziplin für Schemaänderungen und POSIX-Realität.
Dasselbe Muster — Fach-Middleware + stabile API + leichtes Admin-UI — lässt sich auf andere Marken übertragen, die ihren Katalog für Partner öffnen wollen, ohne Shopify-Sicherheit zu opfern.
Sie vertreiben B2B über Shopify und brauchen eine kontrollierte Partner-API? Kontaktieren Sie uns.
Luc Demierre
Gründer & IT-Berater — d-side solutions Sàrl, Bulle
Spezialisiert auf IT-Architektur, Systemsicherheit und E-Commerce-Integration für Schweizer KMU. Gründer von d-side solutions Sàrl seit 2022.