Questa pagina illustra l’SDK Android per il checkout,
com.dodopayments.api:checkout-android, che apre il checkout ospitato di Dodo Payments all’interno della tua app. Per chiamare l’API Dodo Payments dal tuo server, usa invece l’SDK Kotlin per il backend.Checkout Sessions API
Crea
checkout_url che questo SDK apre.Mobile Integration Guide
Best practice per i flussi di checkout mobile.
androidx.browser.customtabs) e restituisce un CheckoutResult tipizzato quando il cliente completa o abbandona il checkout. Il tuo backend crea la sessione di checkout e ne invia checkout_url all’app. L’SDK non contiene codice di rete e non conserva alcuna API key, quindi non chiama mai l’API Dodo Payments.
Requisiti: minSdk 23, Kotlin e Java 17. L’SDK dipende solo da androidx.activity, androidx.browser e kotlinx-coroutines-android.
Installazione
1
Add the Dependency
Aggiungi l’SDK da Maven Central al tuo La personalizzazione dell’aspetto richiede la versione 1.1.0 o successive.
build.gradle.kts del modulo app:build.gradle.kts
2
Register a Callback URL Scheme
Imposta lo schema di callback come manifest placeholder di Gradle. Il manifest dell’SDK dichiara il filtro intent dell’attività di reindirizzamento con il placeholder Usa lo stesso schema in
${dodoCallbackScheme}, quindi questa proprietà è l’unico passaggio di configurazione. Non devi aggiungere XML al manifest:build.gradle.kts
CheckoutParams.returnUrl, ad esempio myapp://checkout/return, e imposta lo stesso URL come return_url della sessione di checkout quando il tuo backend crea la sessione. L’SDK confronta l’URL di ritorno in base a schema, host e percorso e ignora la query string. Non è necessario che l’URL carichi una pagina reale.Se ometti il placeholder, la build fallisce con un errore di placeholder non risolto. Se il placeholder non corrisponde allo schema di
returnUrl, l’SDK genera PLATFORM_ERROR prima di aprire il checkout.Utilizzo
L’SDK offre due modi per avviare il checkout: un activity result launcher e una funzione suspend. Entrambi restituiscono lo stessoCheckoutResult.
- Launcher (Recommended)
- Suspend Function
Registra il contratto con
registerForActivityResult, quindi avvialo:Cosa significa il risultato
L’SDK creaCheckoutResult dai parametri di query presenti nell’URL di ritorno.
CheckoutStatus
obbligatorio
Uno di cinque valori:
SUCCEEDED: l’URL di ritorno contienestatus=succeeded(pagamento una tantum) ostatus=active(abbonamento).FAILED: il pagamento è stato rifiutato (status=failed).CANCELLED: il cliente ha chiuso la Custom Tab prima dell’arrivo dell’URL di ritorno. L’SDK non conosce l’esito e il pagamento potrebbe essere andato a buon fine, quindi non mostrare una schermata di errore. Riconcilia invece la sessione abbandonata.PENDING: il pagamento viene regolato in un secondo momento (status=processingo qualsiasi valorerequires_*) oppure il parametrostatusera mancante o non riconosciuto. Riconcilialo comeCANCELLED.EXPIRED: la sessione di checkout è scaduta (status=expired).
String?
Il parametro di query
payment_id, quando l’URL di ritorno ne include uno. Mostralo nell’interfaccia, ma non usarlo per concedere l’accesso. Consulta Verifica il pagamento.String?
Il parametro di query
subscription_id. Impostato per i checkout con abbonamento.List<String>?
Il parametro di query
license_key. Impostato quando il checkout include prodotti con chiavi di licenza.String?
Il parametro di query
email. Impostato quando il checkout acquisisce un indirizzo email.Map<String, String>
Ogni parametro di query dell’URL di ritorno, alla lettera.
Verifica il pagamento
Webhooks
Ascolta gli eventi di pagamento in tempo reale.
Get Payment Detail
Interroga lo stato del pagamento su richiesta.
payment.succeeded o subscription.active. Non fare affidamento solo su CheckoutResult.status.
Personalizzazione dell’aspetto
Per modificare la barra degli strumenti, i pulsanti e la combinazione di colori della Custom Tab, passa unBrowserCustomization come customization su CheckoutParams. Ogni campo è facoltativo e per impostazione predefinita è null. Per un campo null, l’SDK non imposta quell’opzione, quindi il browser che ospita la Custom Tab applica il proprio valore predefinito.
Int?
Colore di sfondo della barra degli strumenti, come intero ARGB
Color.Colore della barra di navigazione, come intero ARGB
Color.Colore del divisore sopra la barra di navigazione, come intero ARGB
Color.CloseButtonStyle?
DEFAULT mostra l’icona di sistema “X”. BACK mostra una freccia indietro disegnata dall’SDK.CloseButtonPosition?
Il lato della barra degli strumenti in cui appare il pulsante di chiusura:
START o END.Mostra l’icona di condivisione della barra degli strumenti.
false la nasconde.Boolean?
Mostra il titolo della pagina sotto l’URL nella barra degli strumenti.
Boolean?
Nasconde automaticamente la barra degli strumenti quando la pagina scorre.
Boolean?
Mostra “Aggiungi questa pagina ai preferiti” nel menu overflow.
Boolean?
Mostra “Scarica pagina” nel menu overflow.
ColorScheme?
LIGHT o DARK forza quell’aspetto indipendentemente dall’impostazione di sistema del dispositivo. SYSTEM segue l’impostazione di sistema.checkoutLauncher da Utilizzo:
Errori
DodoCheckout.start genera CheckoutError solo in caso di uso scorretto o di un errore della piattaforma. Leggi il motivo da CheckoutError.code:
INVALID_CHECKOUT_URL:checkoutUrlnon è un URL di sessione di checkouthttps(percorso che inizia con/session/) sucheckout.dodopayments.comotest.checkout.dodopayments.com.INVALID_RETURN_URL:returnUrlnon è un URL assoluto con schema e host.ALREADY_IN_PROGRESS: è in esecuzione un altro checkout. È possibile eseguire un solo checkout alla volta.PLATFORM_ERROR: errore imprevisto della piattaforma, incluso uno schemareturnUrlche non corrisponde al tuo placeholderdodoCallbackScheme.
CANCELLED o FAILED), mai un errore generato. Con il launcher, gli errori di convalida vengono generati da launcher.launch(...). Un errore della piattaforma dopo l’avvio non può essere generato tramite il callback del risultato dell’attività, quindi il launcher restituisce CANCELLED con il codice di errore in raw["error"].
Sessioni abbandonate
L’SDK registra la sessione di checkout quando il checkout inizia e cancella il record solo quando il checkout termina conSUCCEEDED, FAILED o EXPIRED. Il record rimane quando l’app viene terminata durante il checkout e dopo un risultato CANCELLED o PENDING, perché in questi casi l’SDK non conosce l’esito. Verifica la presenza del record al successivo avvio dell’app e dopo ogni risultato CANCELLED o PENDING:
abandoned.sessionId è l’ID della sessione di checkout, che inizia con cks_. abandoned.createdAt è l’ora di inizio del checkout, come timestamp epoch in millisecondi. Il tuo backend può cercare la sessione con Get Checkout Session, che restituisce payment_id e payment_status. Finché il pagamento non raggiunge uno stato finale, consideralo in sospeso, non fallito.
Correlati
Mobile Integration Guide
Best practice per i flussi di checkout mobile.
Kotlin SDK
SDK backend per le operazioni lato server.