Skip to main content

Quick Start

Avvia l’integrazione dei pagamenti mobile in 4 semplici passaggi

Platform Examples

Esempi di codice completi per Android, iOS, React Native e Flutter
Dodo Payments offre un SDK ufficiale di checkout per Android, iOS, React Native, e Flutter. Ognuno racchiude il modello documentato di seguito (apertura dell’URL di checkout, acquisizione del ritorno, analisi del risultato) dietro una singola chiamata start(...) tipizzata, con il recupero delle sessioni abbandonate integrato. Utilizza una WebView manuale solo se nessuno di questi SDK è compatibile con il tuo stack.

Prerequisiti

Prima di integrare Dodo Payments nella tua app mobile, assicurati di avere:
  • Account Dodo Payments: Account commerciante attivo con accesso API
  • Credenziali API: Chiave API e chiave segreta webhook dalla dashboard
  • Progetto dell’app mobile: Applicazione Android, iOS, React Native o Flutter
  • Server backend: Per gestire in modo sicuro la creazione delle sessioni di checkout

Flusso di integrazione

L’integrazione mobile segue un processo sicuro in 4 passaggi, in cui il backend gestisce le chiamate API e l’app mobile gestisce l’esperienza utente.
1

Backend: Create Checkout Session

Checkout Session API Docs

Scopri come creare una sessione di checkout nel tuo backend usando Node.js, Python e altro. Consulta gli esempi completi e i riferimenti dei parametri nella documentazione dedicata delle Checkout Sessions API.
Sicurezza: le sessioni di checkout devono essere create sul server backend, mai nell’app mobile. Questo protegge le chiavi API e garantisce una validazione corretta.
2

Mobile: Get Checkout URL

La tua app mobile chiama il backend per ottenere l’URL di checkout. Autentica questa richiesta con il token di sessione dell’utente che ha effettuato l’accesso.
Sicurezza: le app mobile comunicano solo con il tuo backend, mai direttamente con Dodo Payments API.
3

Mobile: Open Checkout in Browser

Apri l’URL di checkout in un browser in-app sicuro per elaborare il pagamento. Oppure evita completamente la configurazione manuale con l’SDK ufficiale di checkout per la tua piattaforma.

Pick your mobile SDK

Passaggi di installazione e istruzioni di configurazione per Android, iOS, React Native e Flutter.
4

Backend: Handle Payment Completion

Elabora il completamento del pagamento tramite webhook e URL di reindirizzamento per confermare lo stato del pagamento.

Scegli il tuo SDK

Ogni SDK mobile espone lo stesso contratto: una singola chiamata start(...) apre il checkout ospitato di Dodo nel browser nativo della piattaforma e restituisce un CheckoutResult tipizzato, il cui status è succeeded, failed, cancelled, pending o expired. Nessuno di questi conserva una chiave API o chiama Dodo Payments API e tutti e quattro supportano il recupero delle sessioni abbandonate.

Android

com.dodopayments.api:checkout-android apre una Chrome Custom Tab. Richiede minSdk 23.

iOS

dodopayments-mobile-sdk-ios apre SFSafariViewController. Richiede iOS 16+.

React Native

@dodopayments/react-native-checkout, un Turbo Module basato su entrambi i core nativi. Richiede React Native 0.76+.

Flutter

dodopayments_checkout, un canale Pigeon basato su entrambi i core nativi. Richiede Flutter 3.44+.
status che ricevi è un’indicazione dell’interfaccia, non una prova del pagamento. Conferma ogni pagamento dal backend tramite il webhook payment.succeeded / subscription.active o recuperando il pagamento con la tua chiave segreta.

Registrazione di uno schema URL di callback

Tutti e quattro gli SDK restituiscono il controllo alla tua app tramite uno schema URL personalizzato che scegli tu, ad esempio myapp://checkout/return. Registralo una volta per piattaforma:
android/app/build.gradle
Il manifest dello SDK dichiara già l’attività di reindirizzamento, quindi non è necessario aggiungere XML al manifest.
Preferisci realizzarlo autonomamente? Apri checkout_url in una WebView e intercetta la navigazione verso return_url, quindi leggi i parametri di query status e payment_id. Gli SDK precedenti lo fanno per te nella superficie browser reale della piattaforma, motivo per cui Apple Pay e Google Pay continuano a funzionare.

Best practice

  • Sicurezza: non includere mai una chiave API nella tua app. Crea le sessioni di checkout nel backend e passa al client solo l’checkout_url risultante.
  • Autorità: tratta CheckoutResult.status come un’indicazione dell’interfaccia. Concedi l’accesso solo dopo che il backend ha confermato il pagamento.
  • Esperienza utente: mostra uno stato di caricamento mentre il backend crea la sessione e gestisci cancelled come un esito normale, non come un errore.
  • Test: usa la modalità di test e le carte di test e verifica il ciclo completo dell’URL di ritorno su un dispositivo reale oltre che su un simulatore.

Risoluzione dei problemi

Problemi comuni

  • Il callback non arriva mai: lo schema in returnUrl deve corrispondere a quello registrato. Su Android è il placeholder del manifest dodoCallbackScheme; su iOS e React Native è il tipo di URL Info.plist.
  • Il checkout torna al browser invece che alla tua app (iOS): non hai inoltrato l’URL in arrivo. Chiama DodoCheckout.handleOpenURL(url) da .onOpenURL, scene(_:openURLContexts:) o da un listener Linking di React Native.
  • PLATFORM_ERROR su Android: nella maggior parte dei casi si tratta di una mancata corrispondenza dello schema. Può verificarsi anche se MainActivity imposta android:taskAffinity="" (il valore predefinito standard flutter create), permettendo ad alcune build OEM di perdere il checkout in corso.
  • ALREADY_IN_PROGRESS: un checkout è ancora aperto. Attendi o chiudi quello precedente prima di avviarne un altro.
  • La build non riesce a causa di un placeholder non risolto: hai aggiunto l’SDK Android ma non hai mai impostato manifestPlaceholders["dodoCallbackScheme"].
  • Il pagamento è riuscito ma l’accesso non è stato concesso: è previsto se utilizzi il risultato mobile come riferimento. Concedi l’accesso dal webhook payment.succeeded / subscription.active invece.

Risorse aggiuntive

Per domande o assistenza, contatta support@dodopayments.com.
Ultima modifica il 31 luglio 2026