Comment construire une place de marché multi-vendeurs avec Laravel

Construire une place de marché est un problème de données.

La plupart des développeurs pensent que la partie difficile est le tableau de bord du vendeur. Ce n'est pas le cas. Le véritable défi est le multi-tenancy. Vous devez vous assurer que chaque requête répond à une seule question : à qui appartiennent ces données ?

Si vous construisez une boutique standard et essayez d'ajouter des vendeurs plus tard, vous devrez tout réécrire. Vous devrez injecter un ID vendeur dans chaque modèle, chaque requête et chaque panier. Si vous oubliez un seul filtre, un vendeur verra les commandes d'un autre vendeur. C'est une fuite de données.

Vous avez trois choix :

  • Le construire vous-même : Vous écrivez chaque clause de portée (scoping clause). C'est coûteux et risqué.
  • Utiliser une boutique mono-tenant avec des extensions : Vous greffez des colonnes vendeur sur un schéma qui n'a pas été conçu pour cela. L'isolation reste fragile.
  • Utiliser une base multi-tenant : Utilisez un package comme Aimeos qui intègre l'isolation directement dans le modèle de données dès le premier jour.

Voici comment transformer une boutique unique en place de marché en utilisant Aimeos :

1. Installer la base

Exécutez cette commande pour commencer : composer create-project aimeos/aimeos myshop

2. Activer le mode multi-vendeur

Vous n'avez pas besoin de réécrire votre base de données. Changez simplement une ligne dans votre fichier .env : SHOP_MULTISHOP=true

Ce flag limite automatiquement chaque route, API et panneau d'administration à un site spécifique. Le système gère la séparation des données pour vous.

3. Activer l'inscription en libre-service

Pour passer à l'échelle, laissez les vendeurs s'inscrire eux-mêmes. Ajoutez ceci à votre .env : SHOP_REGISTRATION=true

Les nouveaux vendeurs n'ont accès qu'à leur propre catalogue, leurs commandes et leurs clients. Ils ne peuvent rien voir d'autre.

Pourquoi cela fonctionne :

Aimeos organise tout autour du « site ». Chaque produit, prix et commande porte un ID de site. La couche de données filtre cela automatiquement. Vous n'avez pas à écrire where site_id = ? car le système le fait pour vous.

Cette approche résout trois problèmes majeurs :

  • Sécurité : L'isolation des données est une propriété de la base de données, et non un morceau de code que vous pourriez oublier.
  • Complexité : Les vendeurs peuvent gérer des produits complexes comme des abonnements ou des lots sans que vous ayez à modifier le schéma.
  • Paiements : Vous pouvez utiliser des extensions comme Stripe pour fractionner les paiements instantanément. La plateforme prélève une commission et le vendeur reçoit le reste.

Arrêtez de construire de la tuyauterie. Commencez à construire votre place de marché.

Source : https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a