Panier et Paiement : Flux B2B Basé sur Devis
Cet article explique notre système de panier et de paiement conçu pour les ventes B2B basées sur devis.
Le Problème : B2B vs B2C
Le commerce électronique traditionnel est B2C (Business-to-Consumer) :
-
Prix fixes
-
Paiement instantané
-
Paiement par carte de crédit
-
Traitement automatisé
Notre activité est B2B (Business-to-Business) :
-
Tarification sur devis
-
Revue manuelle
-
Paiement par virement bancaire
-
Configurations personnalisées
Nous avons besoin d'un système de panier qui supporte les deux modèles.
Types de Panier
Panier Devis (Par Défaut)
Objectif : Demander un devis pour une configuration personnalisée
Flux : Ajouter des articles → Remplir les détails → Soumettre → Recevoir un devis par email
Paiement : Non requis initialement
Cas d'usage : Configurations personnalisées, commandes en gros, tarification négociée
Panier d'Achat (Google Shopping)
Objectif : Achat direct avec prix fixes
Flux : Ajouter des articles → Remplir les détails → Payer en ligne → Commande confirmée
Paiement : Requis initialement (Razorpay)
Cas d'usage : Configurations standard provenant de Google Shopping
Détection : gclid, gbraid, ou wbraid dans l'URL
Structure du Panier
Modèle de Panier
Champs :
-
Items: Liste des lignes d'articles (SKU, quantité, tarif unitaire, montant) -
CustomerName: Nom de l'acheteur -
CustomerEmail: Email de l'acheteur -
CustomerPhone: Téléphone de l'acheteur -
CustomerAddress: Adresse de livraison -
CustomerGSTIN: Numéro de taxe (optionnel) -
TotalAmount: Somme des lignes d'articles -
GSTAmount: Montant de la taxe -
NetAmount: Total + GST -
Currency: Devise du panier (INR, USD, etc.) -
Type: "cart" ou "quote"
Ligne d'Article
Champs :
-
SKU: Identifiant du produit -
quantity: Nombre d'unités -
Rate: Prix par unité -
Amount: Tarif unitaire × quantité
Flux d'Ajout au Panier
Ajout Direct (GET)
Ajouter un article via un paramètre d'URL avec le SKU.
Comportement :
- Créer un nouveau panier ou charger l'existant
- Ajouter le SKU avec la quantité 1
- Afficher la page du panier
Cas d'usage : Bouton "Ajouter au panier" sur la page produit
Ajout par Formulaire (POST)
Données du formulaire : SKU, quantité, détails client
Comportement :
- Valider que le SKU existe
- Ajouter au panier avec la quantité spécifiée
- Mettre à jour les totaux du panier
- Afficher la page du panier
Gestion Spéciale des V-SKU
Les V-SKU (produits virtuels/configurés) remplacent le contenu du panier :
Raison : Les V-SKU sont des systèmes complets, non compatibles avec d'autres articles
Comportement : Vider les articles existants, ajouter uniquement le V-SKU
Exception : Mode Google Shopping (autorise plusieurs articles)
Stockage du Panier
Emplacement : Session Flask côté serveur
Format : Dictionnaire sérialisé dans la session
Persistance : Jusqu'à la fermeture du navigateur ou l'expiration du cookie
Avantage : Aucune écriture en base de données avant le paiement
Flux de Paiement
Demande de Devis
Étapes :
- L'utilisateur remplit ses détails
- Clique sur "Obtenir un devis"
- Le panier est enregistré dans un ticket CRM
- Un email est envoyé à l'équipe commerciale
- L'équipe commerciale répond avec un devis
Pas de paiement : Le devis est envoyé par email
Achat Direct
Étapes :
- L'utilisateur remplit ses détails
- Clique sur "Procéder au paiement"
- Le panier est enregistré dans la table des commandes
- La page de paiement Razorpay s'affiche
- Le paiement est capturé
- La commande est confirmée
Paiement requis : Intégration Razorpay
Gestion des Devises
Devise du panier : Définie lors de la création du panier
Verrouillée : Impossible de changer de devise après l'ajout d'articles
Conversion : Tous les articles sont convertis dans la devise du panier
Affichage : Montre à la fois la devise du panier et l'équivalent en INR
Calcul de la GST
Inde (GSTIN fourni) : GST ajoutée au taux applicable
Inde (pas de GSTIN) : GST ajoutée au taux applicable
International : Pas de GST
Formule : Montant net = Montant total + GST
Paramètres de Suivi
Lors de la création du panier, nous stockons :
Paramètres de campagne : utm_source, utm_medium, utm_campaign
Identifiants de clic : gclid, gbraid, wbraid, fbclid
Stockage : Basé sur les cookies avec une fenêtre temporelle (30 minutes)
Objectif : Attribuer les conversions hors ligne aux campagnes en ligne via le suivi des contacts
Notifications par Email
Email de Demande de Devis
Destinataire : Équipe commerciale
Contenu : Détails du client, lignes d'articles, montant total
Pièces jointes : Aucune
Email de Confirmation de Commande
Destinataire : Client
Contenu : Détails de la commande, informations de paiement, prochaines étapes
Pièces jointes : PDF de facture (si paiement reçu)
Intégration de Paiement
Passerelle : Razorpay
Devises supportées : INR, USD, EUR, GBP
Méthodes : Carte de crédit, carte de débit, UPI, virement bancaire
Webhook : Mises à jour du statut de paiement via webhook
Voir : Intégration de paiement pour plus de détails
Validation du Panier
Avant le paiement :
Validation SKU : Tous les SKU doivent exister
Validation quantité : Nombres entiers positifs uniquement
Validation client : Nom, email, téléphone requis
Validation adresse : Requise pour la livraison
Validation GSTIN : Vérification du format si fourni
Références
Articles Connexes
-
Pages Produit - Bouton Ajouter au panier
-
Conversion de Devise - Devise du panier
-
Suivi Analytique - Attribution des campagnes
Résumé
Notre système de panier supporte à la fois les flux basés sur devis et les achats directs :
Types de panier :
-
Panier devis (par défaut, pas de paiement)
-
Panier d'achat (Google Shopping, paiement requis)
Fonctionnalités :
-
Panier multi-articles
-
Verrouillage de devise
-
Calcul de la GST
-
Gestion spéciale des V-SKU
-
Suivi des campagnes
Paiement :
-
Demande de devis (email aux ventes)
-
Achat direct (paiement Razorpay)
Stockage :
-
Basé sur session (pas de base de données avant paiement)
-
Persistance de 30 jours
Cette approche hybride sert à la fois les modèles B2B basés sur devis et B2C d'achat direct.