Carrello e Checkout: Flusso B2B Basato su Preventivo

Questo articolo spiega il nostro sistema di carrello e checkout progettato per vendite B2B basate su preventivo.

Il Problema: B2B vs B2C

L'e-commerce tradizionale è B2C (Business-to-Consumer):

  • Prezzi fissi

  • Checkout immediato

  • Pagamento con carta di credito

  • Evasione automatizzata

La nostra attività è B2B (Business-to-Business):

  • Prezzi basati su preventivo

  • Revisione manuale

  • Pagamento tramite bonifico bancario

  • Configurazioni personalizzate

Abbiamo bisogno di un sistema di carrello che supporti entrambi i modelli.

Tipi di Carrello

Carrello Preventivo (Predefinito)

Scopo: Richiedere un preventivo per una configurazione personalizzata

Flusso: Aggiungi articoli → Compila dettagli → Invia → Ricevi preventivo via email

Pagamento: Non richiesto in anticipo

Caso d'uso: Build personalizzate, ordini all'ingrosso, prezzi negoziati

Carrello Acquisti (Google Shopping)

Scopo: Acquisto diretto con prezzi fissi

Flusso: Aggiungi articoli → Compila dettagli → Paga online → Ordine confermato

Pagamento: Richiesto in anticipo (Razorpay)

Caso d'uso: Configurazioni standard da Google Shopping

Rilevamento: gclid, gbraid o wbraid nell'URL

Struttura del Carrello

Modello Carrello

Campi:

  • Items: Lista di voci (SKU, quantità, tariffa, importo)

  • CustomerName: Nome acquirente

  • CustomerEmail: Email acquirente

  • CustomerPhone: Telefono acquirente

  • CustomerAddress: Indirizzo di spedizione

  • CustomerGSTIN: Partita IVA (opzionale)

  • TotalAmount: Somma delle voci

  • GSTAmount: Importo IVA

  • NetAmount: Totale + IVA

  • Currency: Valuta del carrello (INR, USD, ecc.)

  • Type: "cart" o "quote"

Voce del Carrello

Campi:

  • SKU: Identificativo prodotto

  • quantity: Numero di unità

  • Rate: Prezzo per unità

  • Amount: Tariffa × quantità

Flusso Aggiungi al Carrello

Aggiunta Diretta (GET)

Aggiungi articolo tramite parametro URL con SKU.

Comportamento:

  1. Crea nuovo carrello o carica esistente
  2. Aggiungi SKU con quantità 1
  3. Mostra pagina del carrello

Caso d'uso: Pulsante "Aggiungi al Carrello" sulla pagina prodotto

Aggiunta da Modulo (POST)

Dati modulo: SKU, quantità, dettagli cliente

Comportamento:

  1. Valida che lo SKU esista
  2. Aggiungi al carrello con la quantità specificata
  3. Aggiorna totali del carrello
  4. Mostra pagina del carrello

Gestione Speciale V-SKU

I V-SKU (prodotti virtuali/configurati) sostituiscono il contenuto del carrello:

Motivo: I V-SKU sono sistemi completi, non compatibili con altri articoli

Comportamento: Cancella articoli esistenti, aggiungi solo V-SKU

Eccezione: Modalità Google Shopping (consenti più articoli)

Archiviazione del Carrello

Posizione: Sessione Flask lato server

Formato: Dizionario serializzato nella sessione

Persistenza: Fino alla chiusura del browser o alla scadenza del cookie

Vantaggio: Nessuna scrittura su database fino al checkout

Flusso di Checkout

Richiesta Preventivo

Passaggi:

  1. L'utente compila i dettagli cliente
  2. Clicca su "Ottieni un Preventivo"
  3. Il carrello viene salvato come ticket nel CRM
  4. Email inviata al team vendite
  5. Il team vendite risponde con il preventivo

Nessun pagamento: Preventivo inviato via email

Acquisto Diretto

Passaggi:

  1. L'utente compila i dettagli cliente
  2. Clicca su "Procedi al Pagamento"
  3. Il carrello viene salvato nella tabella Ordini
  4. Viene mostrata la pagina di pagamento Razorpay
  5. Pagamento acquisito
  6. Ordine confermato

Pagamento richiesto: Integrazione Razorpay

Gestione Valuta

Valuta del carrello: Impostata alla creazione del carrello

Bloccata: Non si può cambiare valuta dopo aver aggiunto articoli

Conversione: Tutti gli articoli convertiti nella valuta del carrello

Visualizzazione: Mostra sia la valuta del carrello che l'equivalente in INR

Calcolo GST (IVA)

India (GSTIN fornito): GST aggiunto all'aliquota applicabile

India (nessun GSTIN): GST aggiunto all'aliquota applicabile

Internazionale: Nessun GST

Formula: Importo netto = Importo totale + GST

Parametri di Tracciamento

Quando il carrello viene creato, memorizziamo:

Parametri campagna: utm_source, utm_medium, utm_campaign

ID click: gclid, gbraid, wbraid, fbclid

Archiviazione: Basata su cookie con finestra temporale (30 minuti)

Scopo: Attribuire conversioni offline a campagne online tramite tracciamento contatti

Notifiche Email

Email Richiesta Preventivo

A: Team vendite

Contenuto: Dettagli cliente, voci, importo totale

Allegati: Nessuno

Email Conferma Ordine

A: Cliente

Contenuto: Dettagli ordine, informazioni pagamento, prossimi passi

Allegati: PDF fattura (se pagamento ricevuto)

Integrazione Pagamenti

Gateway: Razorpay

Supportate: INR, USD, EUR, GBP

Metodi: Carta di credito, carta di debito, UPI, net banking

Webhook: Aggiornamenti stato pagamento tramite webhook

Vedi: Integrazione pagamenti per i dettagli

Validazione del Carrello

Prima del checkout:

Validazione SKU: Tutti gli SKU devono esistere

Validazione quantità: Solo numeri interi positivi

Validazione cliente: Nome, email, telefono obbligatori

Validazione indirizzo: Obbligatorio per la spedizione

Validazione GSTIN: Controllo formato se fornito

Riferimenti

Articoli Correlati

Riepilogo

Il nostro sistema di carrello supporta sia flussi basati su preventivo che acquisti diretti:

Tipi di carrello:

  • Carrello preventivo (predefinito, nessun pagamento)

  • Carrello acquisti (Google Shopping, pagamento richiesto)

Funzionalità:

  • Carrello multi-articolo

  • Blocco valuta

  • Calcolo GST

  • Gestione speciale V-SKU

  • Tracciamento campagne

Checkout:

  • Richiesta preventivo (email al team vendite)

  • Acquisto diretto (pagamento Razorpay)

Archiviazione:

  • Basata su sessione (nessun DB fino al checkout)

  • Persistenza 30 giorni

Questo approccio ibrido serve sia i modelli B2B basati su preventivo che quelli B2C di acquisto diretto.


← Torna all'Indice della Documentazione