Vai al contenuto principale

Requisiti Preliminari

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 dal tuo dashboard
  • Progetto App Mobile: Applicazione Android, iOS, React Native o Flutter
  • Server Backend: Per gestire in modo sicuro la creazione della sessione di checkout

Flusso di Integrazione

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

Backend: Crea Sessione di Checkout

Documentazione API Sessione di Checkout

Scopri come creare una sessione di checkout nel tuo backend utilizzando Node.js, Python e altro. Vedi esempi completi e riferimenti ai parametri nella documentazione dedicata alla API delle Sessioni di Checkout.
Sicurezza: Le sessioni di checkout devono essere create sul tuo server backend, mai nell’app mobile. Questo protegge le tue chiavi API e garantisce una corretta validazione.
2

Mobile: Ottieni URL di Checkout

La tua app mobile chiama il tuo backend per ottenere l’URL di checkout:
func getCheckoutURL(productId: String, customerEmail: String, customerName: String) async throws -> String {
    let url = URL(string: "https://your-backend.com/api/create-checkout-session")!
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    
    let requestData: [String: Any] = [
        "productId": productId,
        "customerEmail": customerEmail,
        "customerName": customerName
    ]
    request.httpBody = try JSONSerialization.data(withJSONObject: requestData)
    
    let (data, _) = try await URLSession.shared.data(for: request)
    let response = try JSONDecoder().decode(CheckoutResponse.self, from: data)
    return response.checkout_url
}
Sicurezza: Le app mobili comunicano solo con il tuo backend, mai direttamente con l’API di Dodo Payments.
3

Mobile: Apri Checkout nel Browser

4

Backend: Gestisci il Completamento del Pagamento

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

Integrazione Specifica per Piattaforma

Scegli la tua piattaforma mobile qui sotto per esempi di implementazione completi:

Integrazione Android

Implementazione delle Chrome Custom Tabs

// Add Chrome Custom Tabs dependency to build.gradle
implementation 'androidx.browser:browser:1.5.0'

// In your Activity
class PaymentActivity : AppCompatActivity() {
    private var customTabsSession: CustomTabsSession? = null
    private var customTabsClient: CustomTabsClient? = null
    private var customTabsServiceConnection: CustomTabsServiceConnection? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Initialize Custom Tabs
        customTabsServiceConnection = object : CustomTabsServiceConnection() {
            override fun onCustomTabsServiceConnected(name: ComponentName, client: CustomTabsClient) {
                customTabsClient = client
                customTabsClient?.warmup(0L)
                customTabsSession = customTabsClient?.newSession(object : CustomTabsCallback() {
                    override fun onNavigationEvent(navigationEvent: Int, extras: Bundle?) {
                        // Handle navigation events
                    }
                })
            }
            override fun onServiceDisconnected(name: ComponentName) {
                customTabsClient = null
            }
        }
        CustomTabsClient.bindCustomTabsService(
            this,
            "com.android.chrome",
            customTabsServiceConnection!!
        )
        // Get checkout URL from backend and launch
        lifecycleScope.launch {
            try {
                val checkoutURL = getCheckoutURL("prod_123", "[email protected]", "Customer Name")
                val customTabsIntent = CustomTabsIntent.Builder(customTabsSession)
                    .build()
                customTabsIntent.launchUrl(this@PaymentActivity, Uri.parse(checkoutURL))
            } catch (e: Exception) {
                // Handle error
                Log.e("PaymentActivity", "Failed to get checkout URL", e)
            }
        }
    }
}

Migliori Pratiche

  • Sicurezza: Non memorizzare mai le chiavi API nel codice della tua app. Utilizza uno storage sicuro e SSL pinning.
  • Esperienza Utente: Mostra indicatori di caricamento, gestisci gli errori in modo elegante e fornisci messaggi chiari.
  • Test: Utilizza carte di test, simula errori di rete e testa su vari dispositivi.

Risoluzione dei Problemi

Problemi Comuni

  • WebView non apre il link di pagamento: Assicurati che il link di pagamento sia valido e utilizzi HTTPS.
  • Callback non ricevuto: Controlla il tuo URL di ritorno e la configurazione del webhook.
  • Errori di chiave API: Verifica che la tua chiave API sia corretta e abbia le autorizzazioni necessarie.

Risorse Aggiuntive

Per domande o supporto, contatta [email protected].