Skip to main content
Questo è l’SDK ufficiale per il checkout iOS di Dodo Payments, per Swift. Apre il checkout ospitato di Dodo in una vista browser nativa e restituisce un risultato tipizzato.

Checkout Sessions API

Crea checkout_url dal tuo backend, che sarà aperto da questo SDK.

Mobile Integration Guide

Scopri come si integra nel flusso completo dei pagamenti mobile.
L’SDK iOS apre il checkout ospitato di Dodo in SFSafariViewController, non contiene alcuna API key e non chiama mai direttamente la Dodo API. Tutta la logica del checkout viene eseguita nel browser; l’SDK gestisce semplicemente il ciclo di vita della vista e acquisisce l’URL di ritorno. Richiede iOS 16+ e Swift 6.

Installazione

1

Add the Package

In Xcode, vai a File → Add Package Dependencies e inserisci:
Seleziona la versione 1.0.0 o una successiva.In alternativa, aggiungi al tuo Package.swift:
Package.swift
2

Register a Callback URL Scheme

La tua app deve registrare uno schema URL per ricevere l’URL di ritorno dal checkout. Aggiungi questo al tuo Info.plist:
Info.plist
Puoi anche aggiungerlo tramite l’interfaccia Info → URL Types di Xcode.

Utilizzo

Inoltro dell’URL di ritorno

SFSafariViewController non dispone di un modo in-process per intercettare il proprio URL di ritorno. La tua app deve inoltrare gli URL in ingresso all’SDK.
È sicuro inoltrare ogni URL qui. handleOpenURL agisce solo sugli URL che corrispondono al tuo returnUrl registrato e restituisce false per qualsiasi altro URL.

Significato del risultato

result.status è un’indicazione per l’interfaccia, non una prova di pagamento. Conferma ogni pagamento dal tuo backend tramite il webhook payment.succeeded / subscription.active.
CheckoutStatus
obbligatorio
Uno tra succeeded, failed, cancelled, pending, expired.
String?
Impostato quando l’URL di ritorno ne include uno. Visualizzalo nell’interfaccia, ma non usarlo per concedere l’accesso. Consulta la sezione Verifica del pagamento qui sotto.
String?
Impostato per i checkout degli abbonamenti.
[String]?
Impostato quando il checkout include prodotti con chiavi di licenza.
String?
Impostato quando il checkout acquisisce un’email.
[String: String]
Ogni parametro di query dell’URL di ritorno, invariato.

Verifica del pagamento

Webhooks

Dodo Payments chiama il tuo backend quando un pagamento va a buon fine o un abbonamento viene attivato.

Get Payment Detail

Cerca paymentId con la tua secret key per verificarne direttamente lo stato.
Concedi l’accesso dopo che uno di questi ha confermato il pagamento, mai basandoti solo su result.status.

Personalizzazione dell’aspetto

Personalizza il pulsante di chiusura del foglio, lo stile di presentazione e la combinazione di colori tramite customization su start(...). Tutti i campi sono facoltativi; se omesso, customization utilizza l’aspetto predefinito di SFSafariViewController su iOS.
DismissButtonStyle
Etichetta o icona per il pulsante di chiusura: done, close o cancel.
PresentationStyle
pageSheet viene visualizzato come una scheda con chiusura tramite scorrimento; fullScreen copre l’intero schermo.
Bool
Consente alla barra degli strumenti di comprimersi durante lo scorrimento. Visibile solo quando presentationStyle è fullScreenpageSheet mantiene le barre bloccate indipendentemente da questa impostazione.
ColorScheme
Forza l’aspetto chiaro o scuro indipendentemente dall’impostazione di sistema del dispositivo: system, light o dark.

Errori

start genera CheckoutError solo in caso di uso improprio o di un errore della piattaforma. Un pagamento annullato o rifiutato è sempre un risultato, mai un’eccezione.
  • invalidCheckoutUrl (INVALID_CHECKOUT_URL): URL della sessione non checkout.dodopayments.com.
  • invalidReturnUrl (INVALID_RETURN_URL): URL assoluto non valido.
  • alreadyInProgress (ALREADY_IN_PROGRESS): è già in corso un checkout.
  • platformError (PLATFORM_ERROR): errore imprevisto della piattaforma.

Sessioni abbandonate

Se l’app viene terminata durante il checkout, recupera la sessione al successivo avvio e riconciliala con il tuo backend.

Correlati

Mobile Integration Guide

Lo stesso contratto per Android, React Native e Flutter.

React Native SDK

Integra questo stesso core Swift su iOS.
Ultima modifica il 17 agosto 2026