Un marketplace a due lati mette in contatto chi offre e chi acquista — pensa a una piattaforma che collega artigiani e clienti, o professionisti e aziende. La sfida tecnica non è mostrare gli annunci: è gestire i soldi in modo sicuro, far arrivare la quota giusta a ciascun venditore e trattenere la commissione, senza mai toccare manualmente i pagamenti. Con Firebase e Stripe Connect si fa in modo robusto.
I due lati e il modello dati
In un marketplace convivono due ruoli: venditori (offrono prodotti o servizi) e acquirenti. Su Firestore conviene modellarli con raccolte distinte ma collegate: profili venditore, cataloghi, ordini e transazioni. Le regole di sicurezza di Firestore garantiscono che ognuno veda e modifichi solo ciò che gli compete — un venditore non deve poter leggere gli ordini di un altro.
Stripe Connect: il cuore dei pagamenti
Stripe Connect è la parte di Stripe pensata proprio per i marketplace. Permette di avere account collegati per ogni venditore e di dividere automaticamente ogni pagamento. Gli elementi chiave:
- Account connessi: ogni venditore ha il proprio account Stripe collegato alla piattaforma, con un processo di onboarding guidato (dati, verifica identità, coordinate per i payout).
- Pagamenti split: quando un cliente paga, Stripe accredita la quota al venditore e trattiene la commissione della piattaforma in un'unica operazione.
- Payout: Stripe gestisce i versamenti ai venditori secondo la pianificazione scelta, occupandosi anche degli aspetti normativi.
Il vantaggio enorme è che la piattaforma non custodisce il denaro né i dati delle carte: riduce drasticamente rischi e oneri di conformità.
Firebase come backend
Firebase tiene insieme il resto:
- Authentication per la gestione degli utenti (acquirenti e venditori) con vari metodi di accesso.
- Firestore come database in tempo reale per cataloghi, ordini e stati.
- Cloud Functions per la logica sensibile: creare i pagamenti, e soprattutto ricevere i webhook di Stripe.
I webhook sono il punto critico. Stripe notifica gli eventi (pagamento riuscito, rimborso, payout) a una Cloud Function, che aggiorna lo stato dell'ordine su Firestore. Va gestita in modo idempotente: lo stesso evento può arrivare più di una volta, e l'ordine non deve essere processato due volte. Si verifica sempre la firma del webhook per assicurarsi che la richiesta venga davvero da Stripe.
Il flusso, dall'inizio alla fine
- Il venditore completa l'onboarding e ottiene un account connesso.
- L'acquirente paga: una Cloud Function crea il pagamento con la divisione tra venditore e commissione.
- Stripe elabora il pagamento e invia un webhook.
- La funzione aggiorna l'ordine su Firestore; acquirente e venditore vedono lo stato aggiornato in tempo reale.
- Stripe versa al venditore secondo la pianificazione dei payout.
Le insidie da conoscere
- Idempotenza su pagamenti e webhook: indispensabile per non duplicare operazioni.
- Gestione degli errori: pagamenti falliti, rimborsi, dispute vanno previsti dal primo giorno, non rincorsi dopo.
- Onboarding incompleto: un venditore non completamente verificato non può ricevere payout; l'interfaccia deve guidarlo e mostrarne lo stato.
Messi insieme, Firebase e Stripe Connect coprono autenticazione, dati in tempo reale e pagamenti complessi con relativamente poca infrastruttura da mantenere: la combinazione ideale per far partire un marketplace serio senza reinventare la ruota.