Sommaire
Pour éviter un parcours de commande trop long, le plugin ACSEO Sylius Re Order apporte une réponse concrète aux projets Sylius. Il ajoute des actions de rachat depuis l’espace client et depuis la Shop API : recommander une commande complète ou racheter une seule ligne de commande.


En résumé
ACSEO Sylius Re Order Plugin permet à un client connecté de reprendre des produits depuis son historique de commandes.
Le plugin aide notamment à :
- recommander une commande passée dans le panier courant ;
- racheter un article précis depuis une ancienne commande ;
- proposer un parcours plus rapide aux clients récurrents ;
- exposer les mêmes actions via la Shop API ;
- respecter les droits du client connecté ;
- vérifier le channel, le stock, les prix et l’état courant du catalogue ;
- gérer les succès partiels quand certains produits ne sont plus disponibles.
Pourquoi le rachat est important
Le rachat est un levier simple d’expérience client. Il concerne autant les boutiques B2C que les catalogues B2B.
Quelques exemples :
- un client rachète les mêmes consommables chaque mois ;
- un acheteur professionnel reprend une commande type ;
- un client veut remplacer un produit déjà acheté ;
- une boutique vend des accessoires ou pièces détachées récurrentes ;
- un frontend mobile veut proposer un bouton « Acheter à nouveau ».
Dans tous ces cas, le client ne veut pas forcément naviguer à nouveau dans tout le catalogue. Il veut repartir de son historique, puis ajuster son panier.
Ce que le plugin ajoute à Sylius
Le plugin ajoute deux parcours principaux.
Recommander une commande
Depuis l’historique des commandes, un client peut remettre au panier les lignes encore éligibles d’une commande passée.
Route shop :
POST /{_locale}/account/orders/{number}/reorder
Le plugin vérifie que la commande appartient au client connecté, qu’elle correspond au channel courant et qu’elle peut être recommandée. Ensuite, chaque ligne est analysée avant ajout au panier.
Racheter une ligne
Le client peut aussi racheter un seul article d’une commande.
Route shop :
POST /{_locale}/account/orders/{number}/items/{id}/buy-again
C’est pratique quand une commande contient plusieurs articles mais que le besoin porte sur un seul produit.
Une logique de rachat fiable
Un bouton « Recommander » ne doit pas simplement copier les lignes d’une ancienne commande. Le catalogue a pu changer depuis l’achat initial.
Le plugin vérifie notamment :
- le propriétaire de la commande ;
- le channel de la commande ;
- l’état de la commande ;
- l’existence de la variante ;
- l’activation du produit ;
- l’activation de la variante ;
- la disponibilité du stock ;
- l’appartenance au channel courant ;
- l’existence d’un prix pour le channel.
Si une ligne n’est plus achetable, elle est ignorée et une raison est retournée.
Exemples de raisons :
missing_variant
product_disabled
disabled
out_of_stock
wrong_channel
no_channel_pricing
Cela permet de garder une expérience souple : le panier peut être reconstruit partiellement, sans bloquer tout le reachat à cause d’un seul produit indisponible.
Des retours clairs pour le client
Côté shop, les contrôleurs ajoutent des messages flash traduits.
Le client peut être informé que :
- les articles éligibles ont été ajoutés au panier ;
- certains articles n’ont pas pu être ajoutés ;
- un article précis a été ajouté ;
- un article précis n’a pas pu être ajouté.
L’objectif est d’éviter les ajouts silencieux ou les échecs incompréhensibles.
Une intégration dans l’espace client
Le plugin s’intègre avec les mécanismes Sylius :
- Twig hooks pour ajouter les actions sur les pages de commande ;
- actions de grille sur l’historique de commandes ;
- helpers Twig pour tester l’éligibilité et générer les tokens CSRF ;
- traductions anglaises et françaises pour les messages utilisateur.
Après import de la configuration, les actions standard sont disponibles sans devoir réécrire les templates applicatifs.
Une API pour les frontends headless
Les boutiques Sylius ne sont pas toujours servies par le front Twig. Le plugin expose donc aussi des endpoints Shop API.
POST /api/v2/shop/account/orders/{tokenValue}/reorder
POST /api/v2/shop/account/orders/{tokenValue}/items/{orderItemId}/buy-again
Exemple de requête :
{
« cartTokenValue »: « cart-token »
}
Exemple de réponse partielle :
{
« addedCount »: 1,
« skipped »: [
{
« reason »: « out_of_stock »,
« orderItemId »: 9,
« variantCode »: « SKU »,
« quantity »: 1
}
]
}
Cela permet à une PWA, une application mobile ou un frontend découplé de proposer le même parcours de rachat.
Sécurité et contexte client
Le plugin ne donne pas accès aux commandes d’autres clients.
Les actions shop sont protégées par :
- la session client Sylius ;
- les contrôles de propriétaire ;
- les contrôles de channel ;
- les tokens CSRF.
Les actions API reposent sur l’authentification Shop API.
Si une commande ne correspond pas au client connecté, au channel courant ou à un état re-commandable, le plugin refuse l’opération.
Configuration des routes
Tous les projets Sylius n’ont pas les mêmes URLs d’espace client. Le plugin permet donc d’adapter les prefixes.
Configuration par défaut :
acseo_sylius_re_order:
routing:
shop_account_prefix: account
shop_account_orders_prefix: orders
api_shop_account_prefix: shop/account
Exemple avec un espace client francisé :
acseo_sylius_re_order:
routing:
shop_account_prefix: mon-compte
shop_account_orders_prefix: commandes
api_shop_account_prefix: shop/mon-compte
Des points d’extension pour les projets métier
Chaque boutique peut avoir ses propres règles.
Un projet peut décorer les services du plugin pour :
- refuser certaines catégories de produits ;
- appliquer des règles B2B ;
- tenir compte d’une politique commerciale ;
- changer la logique de disponibilité ;
- journaliser les tentatives ;
- adapter les messages ou les résultats.
Les interfaces principales sont exposées :
- OrderReorderEligibilityCheckerInterface ;
- VariantReorderEligibilityCheckerInterface ;
- ReorderOrderServiceInterface ;
- BuyAgainItemServiceInterface.
Conclusion
ACSEO Sylius Re Order Plugin ajoute une fonctionnalité simple en apparence, mais importante pour l’expérience client : repartir d’une commande passée pour acheter plus vite.
Le plugin ne contourne pas les règles du catalogue. Il respecte l’état courant des produits, variantes, prix, stocks, channels et droits client.
Pour les boutiques avec des achats récurrents, des catalogues B2B ou des frontends headless, c’est un moyen direct de réduire la friction et de rendre l’historique de commandes vraiment actionnable.
Installez ACSEO Sylius Re Order Plugin dès maintenant ! (lien à venir)
À lire également
Découvrez nos autres plugin pour faire évoluer votre boutique Sylius :