Fooodo / Documentazione

Pagamenti

Come i pagamenti fluiscono attraverso Fooodo — metodi e valute supportati, Mollie sotto il cofano, instradamento di mance e donazioni, la macchina a stati dei pagamenti e la riconciliazione dei webhook.

Auto-translated · pending native review. The English version is canonical.

Fooodo suddivide la gestione dei pagamenti in un servizio dedicato. L'app menu rivolta al cliente vi fa da proxy; il servizio di pagamento gestisce l'integrazione con Mollie, il perimetro PCI e la riconciliazione dei webhook.

Metodi supportati

In produzione oggi:

  • Carta (Visa, Mastercard) e addebito diretto bancario UE
  • Apple Pay
  • Google Pay
  • Trustly — pagamento diretto tramite home banking, principalmente per i mercati nordici e baltici dove l'autenticazione tramite app bancaria è il flusso predefinito per i consumatori

Il catalogo completo dei metodi di Mollie è tecnicamente disponibile attraverso la stessa integrazione; solo i metodi sopra indicati sono collegati al percorso di checkout in produzione. Metodi aggiuntivi (ad es. iDEAL, Bancontact) possono essere abilitati per singola distribuzione.

Il contante è supportato come flusso separato: un cameriere riscuote il contante al tavolo e contrassegna l'ordine come pagato direttamente nell'admin di Fooodo. L'ordine stesso scorre attraverso la stessa macchina a stati; viene bypassato solo il passaggio di creazione del pagamento su Mollie.

Valute supportate

Fooodo regola ogni ordine nella valuta configurata sul ristorante. Mollie supporta più di 30 valute; l'elenco pratico per i mercati serviti oggi da Fooodo:

RegioneValute
EurozonaEUR
Regno UnitoGBP
Europa orientale (non Euro)PLN (Polonia), CZK (Repubblica Ceca), HUF (Ungheria), RON (Romania), BGN (Bulgaria)
Paesi nordiciDKK, NOK, SEK
AltroCHF, USD

Il catalogo completo di Mollie (31 valute, tra cui AUD, CAD, JPY, ZAR) è tecnicamente disponibile; non tutti i metodi di pagamento coprono tutte le valute. EUR e i principali circuiti di carte (Visa, Mastercard) funzionano ovunque; la compatibilità metodo-valuta viene definita durante l'onboarding per le distribuzioni al di fuori dell'Eurozona.

Per le distribuzioni in Romania in particolare, RON è supportato tramite pagamenti con carta end-to-end; anche Apple Pay e Google Pay accettano carte RON.

Il ciclo di vita del pagamento

Menu appPayment serviceMollieGuest
01Create payment for order
02Build payload (tips · donations) and create payment
03Return checkout URL
04Pass checkout URL through
05Redirect guest to Mollie checkout
06Complete payment
07Webhook callback (payment ID only)
08Fetch authoritative status
09Notify status (queued, signed)
10Show success / cancel page
Payment lifecycle · sequence

La pipeline è guidata dai webhook ed è idempotente. Mollie può ritentare i webhook in caso di errori transitori; i replay sono sicuri — il servizio si interrompe anticipatamente se lo stato del pagamento non è cambiato dall'ultima esecuzione.

Stati del pagamento

Il servizio di pagamento tiene traccia della propria macchina a stati, parallela alla macchina a stati degli ordini nell'app menu:

StatoSignificato
OpenCreato, in attesa di risposta da Mollie
PendingMollie ha accettato, in attesa del cliente
AuthorizedAutorizzato ma non ancora acquisito
PaidAcquisito e definitivo
FailedErrore terminale
CancelledAnnullato dal cliente
ExpiredPagamento Mollie scaduto

Cancelled e Expired sono recuperabili — un cliente può riprovare sullo stesso ordine, il che crea un nuovo tentativo di pagamento a fronte dello stesso ordine.

Mance

Le mance vengono raggruppate in un'unica addebito Mollie insieme all'ordine — i clienti non vedono mai un secondo checkout per la mancia. Dopo il regolamento del pagamento, la mancia appare nel POS come riga separata sull'ordine, in modo che i flussi di rendicontazione e distribuzione delle mance funzionino come sempre. Il codice ricavo POS utilizzato per rappresentare i proventi delle mance è impostato per singolo ristorante nell'admin (R-Keeper è il connettore di riferimento attivo per questo; gli altri connettori POS espongono la stessa impostazione tramite il contratto del connettore).

Donazioni

Le donazioni funzionano allo stesso modo: un unico addebito Mollie al cliente, ma la quota della donazione viene instradata verso un account organizzazione separato all'interno di Mollie (la Croce Rossa è l'esempio di riferimento attivo). Dal punto di vista del cliente si tratta di un'unica transazione; dal punto di vista dell'operatore la donazione non compare nei ricavi del ristorante né nei report di vendita del POS — viene registrata in modo netto nei libri contabili dell'organizzazione partner.

Webhook

Sono coinvolti due webhook:

  • Mollie → servizio di pagamento. Endpoint pubblico che riceve solo un ID pagamento Mollie. Il servizio chiama quindi l'API di Mollie per recuperare lo stato autorevole — in questo modo una callback contraffatta non può spostare denaro né modificare lo stato dell'ordine. (Questo è il pattern di integrazione standard di Mollie; le loro callback sono intenzionalmente minimali.)
  • Servizio di pagamento → app menu. Autenticato tramite Bearer token, segreto per singola distribuzione. Questo è il canale che effettivamente cambia lo stato dell'ordine sul lato dell'app menu.

Se stai gestendo una distribuzione Fooodo, il segreto dell'app menu viene fornito durante l'onboarding. Se stai integrando Fooodo come partner, normalmente non vedrai nessuno dei due.

Cosa vedono i partner

I partner integratori non si integrano direttamente con il servizio di pagamento. Il contratto è:

  • Chiami l'API di creazione ordini dell'app menu.
  • Ricevi un ordine e (quando è richiesto il pagamento) un URL di checkout.
  • Non gestisci dati di carta, non chiami Mollie, non hai bisogno del perimetro PCI.

Questa è una delle ragioni portanti per cui il servizio di pagamento esiste come confine separato.

Rimborsi e storni

I rimborsi non sono una funzionalità di Fooodo: non esiste alcuna azione di rimborso nell'app menu né nell'admin del servizio di pagamento. Un rimborso viene emesso direttamente nella dashboard di Mollie a fronte del pagamento originale, e l'ordine viene stornato nel POS come sempre. I clienti non possono richiedere un rimborso dall'app.

In questa pagina