Passer au contenu principal

Prérequis

Avant d’intégrer Dodo Payments dans votre application mobile, assurez-vous d’avoir :
  • Compte Dodo Payments : Compte marchand actif avec accès API
  • Identifiants API : Clé API et clé secrète de webhook depuis votre tableau de bord
  • Projet d’application mobile : Application Android, iOS, React Native ou Flutter
  • Serveur backend : Pour gérer en toute sécurité la création de sessions de paiement

Flux d’intégration

L’intégration mobile suit un processus sécurisé en 4 étapes où votre backend gère les appels API et votre application mobile gère l’expérience utilisateur.
1

Backend: Create Checkout Session

Checkout Session API Docs

Découvrez comment créer une session de paiement dans votre backend en utilisant Node.js, Python et plus encore. Consultez des exemples complets et les références des paramètres dans la documentation dédiée Checkout Sessions API.
Sécurité : les sessions de paiement doivent être créées sur votre serveur backend, jamais dans l’application mobile. Cela protège vos clés API et assure une validation correcte.
2

Mobile: Get Checkout URL

Votre application mobile appelle votre backend pour obtenir l’URL de paiement :
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
}
Sécurité : les applications mobiles ne communiquent qu’avec votre backend, jamais directement avec l’API Dodo Payments.
3

Mobile: Open Checkout in Browser

4

Backend: Handle Payment Completion

Traitez la finalisation du paiement via des webhooks et des URL de redirection pour confirmer le statut du paiement.

Intégration spécifique à la plateforme

Choisissez votre plateforme mobile ci-dessous pour des exemples d’implémentation complets :

Intégration Android

Mise en œuvre des onglets personnalisés Chrome

// 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", "customer@example.com", "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)
            }
        }
    }
}

Meilleures pratiques

  • Sécurité : Ne stockez jamais les clés API dans le code de votre application. Utilisez un stockage sécurisé et le pinning SSL.
  • Expérience utilisateur : Affichez des indicateurs de chargement, gérez les erreurs avec soin et fournissez des messages clairs.
  • Tests : Utilisez des cartes de test, simulez des erreurs réseau et testez sur divers appareils.

Dépannage

Problèmes courants

  • WebView n’ouvre pas le lien de paiement : Assurez-vous que le lien de paiement est valide et utilise HTTPS.
  • Rappel non reçu : Vérifiez votre URL de retour et la configuration du webhook.
  • Erreurs de clé API : Vérifiez que votre clé API est correcte et dispose des autorisations nécessaires.

Ressources supplémentaires

Pour toute question ou assistance, contactez support@dodopayments.com.