Par Hamza Makraz · · 7 min de lecture
Farblieferant : la boutique d'un revendeur Sto sous Symfony
Comment nous avons fait passer un revendeur Sto certifié du téléphone et de l'e-mail à une vraie boutique en ligne : conseiller produit, prix exacts au centime, paiement Stripe et lien ERP Sto.
- étude-de-cas
- e-commerce
- symfony
- stripe
Mettre un catalogue de peinture en ligne n’est pas le même problème que vendre des t-shirts. Farblieferant est un partenaire Sto certifié en Allemagne, et les produits Sto sont techniques : un enduit de façade n’a rien à voir avec une peinture silicate d’intérieur, les teintes entraînent des suppléments au litre, et le prix payé par le client doit correspondre — au centime près — à ce que l’ERP du fabricant facturera. L’équipe vendait à l’ancienne : téléphone, e-mail, contacts du métier. Elle voulait une vraie boutique. Pas un template.
Voici ce que cela a réellement demandé.
Le défi : un catalogue technique, des acheteurs non experts
Deux choses dépassaient le simple storefront générique.
D’abord, les acheteurs sont mixtes. Certains sont des peintres professionnels qui savent exactement quel produit Sto il leur faut. Autant sont des bricoleurs ambitieux qui connaissent le chantier — « je repeins une salle de bain humide » — mais pas le produit. Une barre de recherche sert le premier groupe et abandonne le second.
Ensuite, c’est l’Allemagne. La surface juridique — AGB, Widerrufsbelehrung, Impressum, Datenschutz, consentement cookies conforme au RGPD — n’est pas un sujet « de phase deux ». Cela part avec la première version, ou cela ne part pas.
Un conseiller produit plutôt qu’une barre de recherche
La pièce maîtresse du storefront n’est donc pas la recherche, mais un Produktberater guidé. L’acheteur répond à une courte série de questions (où peignez-vous, quelle surface, quelle finition) et la boutique réduit le catalogue à ce qui convient vraiment.
Sous le capot, c’est un petit moteur de recommandation. Chaque réponse est reliée à un ensemble de tags produit ; chaque produit porte ses propres tags. Au bout du parcours, nous notons chaque produit selon le nombre de tags sélectionnés qu’il satisfait, puis nous classons par ce recouvrement — ainsi les produits les plus pertinents remontent en premier, au lieu d’un résultat de filtre désordonné. La dernière étape peut même porter son propre titre et son texte : un parcours « salle de bain humide » arrive sur une page qui se lit comme un conseil, pas comme une requête.
Le tout est construit en Live Component Symfony UX : chaque réponse met à jour les résultats sur place — sans rechargement de page, sans framework single-page à maintenir.
Des prix qui doivent être exacts
Le prix d’une peinture est trompeusement difficile. Une déclinaison a un prix de base, une teinte peut ajouter un supplément au litre ou au kilo selon sa classe de couleur, une marge s’ajoute par-dessus — puis 19 % de TVA. Faites cela en virgule flottante et vous finirez, tôt ou tard, à un centime près sur une facture. Dans le commerce allemand, un centime d’écart est un vrai problème.
Il n’y a donc aucune arithmétique flottante dans le calcul monétaire. Chaque montant est stocké en centimes entiers et calculé avec une bibliothèque décimale précise. Le prix affiché par le conseiller, le prix dans le panier et le prix facturé sont le même nombre, dérivé de la même façon.
Branché sur l’ERP de Sto
Les prix et la disponibilité ne sont pas non plus des approximations. La boutique dialogue avec l’ERP de Sto (SAP, via sa couche Cloud Platform Integration) en deux phases :
- Simuler — avant qu’une commande soit passée, demander à l’ERP de confirmer le prix et la disponibilité actuels.
- Créer — une fois le paiement réussi, enregistrer la commande réelle dans SAP.
Ce flux en deux temps fait toute la différence entre une boutique qui semble connectée et une boutique qui ne vendra jamais ce qu’elle ne peut pas livrer.
Paiement, factures et l’essentiel allemand
Le paiement repose sur les Stripe Checkout Sessions — carte, PayPal et Klarna dans un seul flux, avec la référence de commande et l’éventuel code promo transmis en métadonnées. À chaque commande payée, un job asynchrone génère une facture PDF et l’envoie au client ; le gros du travail se fait hors de la requête, le paiement reste donc rapide.
Autour de cela, ce qu’une boutique allemande doit impérativement avoir : les pages légales gérées comme du contenu CMS éditable, un seuil de livraison gratuite et un moteur de codes promo, et le Google Consent Mode v2 relié à la couche analytics pour que GTM ne se déclenche qu’après le consentement réel du client.
La stack, et pourquoi
- Symfony 8 / PHP 8.5 côté backend — un choix ennuyeux et durable, que l’équipe peut exploiter pendant des années.
- Live Components + Stimulus pour l’interactivité (panier, conseiller, recherche) — une UX riche sans livrer ni maintenir une application front séparée.
- Asset Mapper + Tailwind CSS v4 — pas de Webpack, pas de config de bundler à surveiller.
- Un modèle de sécurité à deux firewalls — clients et équipe back-office totalement séparés, avec un troisième chemin non authentifié réservé au webhook Stripe.
- EasyAdmin pour le back-office : l’équipe gère catalogue, commandes et codes promo sans développeur dans la boucle.
Rien d’exotique. Les parties intéressantes sont propres à la peinture — le conseiller, le prix exact au centime, le lien ERP — pas le framework.
Le bilan
| Avant | Après |
|---|---|
| Commandes par téléphone, e-mail, contacts du métier | Une boutique complète en self-service : parcourir, configurer, payer, expédier |
| L’acheteur devait déjà connaître le produit | Un conseiller qui relie un chantier au bon produit |
| Prix indiqués manuellement | Prix exacts au centime, validés en direct contre l’ERP de Sto |
| Aucune présence web | Conforme au droit allemand dès la première version |
Si cela ressemble à votre problème
Nous avons conçu et construit Farblieferant de bout en bout — marque, storefront, moteur de prix, intégration ERP et le back-office que l’équipe utilise au quotidien. Nous n’avons pas lu des articles sur le prix exact au centime ou les flux de commande ERP en deux phases ; nous les avons mis en production.
Si vous êtes un revendeur ou une marque avec un catalogue technique et un numéro de téléphone là où devrait se trouver une boutique, c’est exactement le genre de travail que nous aimons. Dites-nous ce que vous cherchez à construire — nous répondons sous un jour ouvré.