Skip to main content
Dies ist das offizielle Android-Checkout-SDK (com.dodopayments.api:checkout-android), um den gehosteten Checkout von Dodo zu öffnen. Es unterscheidet sich vom Backend-Kotlin-SDK, das die Dodo Payments API von deinem Server aus aufruft.

Checkout Sessions API

Erstelle den checkout_url, den dieses SDK öffnet

Mobile Integration Guide

Best Practices für mobile Checkout-Abläufe
Das Android SDK öffnet den gehosteten Checkout von Dodo in einem Chrome Custom Tab mit androidx.browser.customtabs. Es enthält keinen Netzwerkcode und speichert keinen API-Key. Du übergibst ein checkoutUrl aus der Checkout-Session deines Backends, und das SDK gibt ein typisiertes CheckoutResult zurück, wenn der Benutzer den Ablauf abschließt oder abbricht. Voraussetzungen: minSdk 23, Kotlin, Java 17.

Installation

1

Add the Dependency

build.gradle.kts
2

Register a Callback URL Scheme

Lege dein Callback-Schema als Gradle-Manifest-Placeholder fest. Das Manifest der Bibliothek deklariert den Intent-Filter der Redirect-Aktivität bereits mit dem Token ${dodoCallbackScheme}. Daher ist diese eine Eigenschaft die gesamte Einrichtung – du fügst kein Manifest-XML hinzu:
build.gradle.kts
Der Wert muss mit dem Schema in CheckoutParams.returnUrl übereinstimmen (z. B. myapp://checkout/return).
Wenn du den Placeholder vollständig weglässt, schlägt der Build sofort mit einem Fehler wegen eines nicht aufgelösten Placeholders fehl, anstatt beim Checkout-Zeitpunkt still zu scheitern. Wenn du ihn festlegst, aber er nicht mit dem Schema von returnUrl übereinstimmt, löst DodoCheckout.start vor der Anzeige von irgendetwas PLATFORM_ERROR aus.

Verwendung

Das SDK unterstützt zwei Aufrufstile.

Bedeutung des Ergebnisses

Das Feld status ist ein UI-Hinweis und kein Zahlungsnachweis. Verifiziere die Zahlung immer in deinem Backend mithilfe von Webhooks oder des Endpunkts „Get Payment Detail“, bevor du Zugriff gewährst.
CheckoutStatus
erforderlich
Einer von SUCCEEDED, FAILED, CANCELLED, PENDING, EXPIRED.
String?
Wird gesetzt, wenn die Rückgabe-URL einen solchen Wert enthielt. Zeige ihn in der UI an, verwende ihn aber nicht, um Zugriff zu gewähren. Siehe unten „Zahlung verifizieren“.
String?
Wird für Subscription-Checkouts gesetzt.
List<String>?
Wird gesetzt, wenn der Checkout Produkte mit Lizenzschlüsseln enthält.
String?
Wird gesetzt, wenn der Checkout eine E-Mail-Adresse erfasst.
Map<String, String>
Jeder Query-Parameter aus der Rückgabe-URL, unverändert.

Zahlung verifizieren

Webhooks

Höre in Echtzeit auf Zahlungsereignisse

Get Payment Detail

Frage den Zahlungsstatus bei Bedarf ab
Gewähre dem Benutzer erst Zugriff, wenn einer dieser Mechanismen die Zahlung bestätigt. Verlasse dich nicht allein auf CheckoutResult.status.

Fehler

DodoCheckout.start löst CheckoutError nur bei falscher Verwendung oder einem Plattformfehler aus. Lies den Code aus CheckoutError.code:
  • INVALID_CHECKOUT_URL: keine gültige checkout.dodopayments.com-Session-URL.
  • INVALID_RETURN_URL: keine gültige absolute URL.
  • ALREADY_IN_PROGRESS: Ein Checkout läuft bereits.
  • PLATFORM_ERROR: unerwarteter Plattformfehler, einschließlich eines returnUrl, dessen Schema nicht mit deinem dodoCallbackScheme-Placeholder übereinstimmt.
Das Abbrechen durch den Benutzer oder eine abgelehnte Zahlung führt immer zu einem Ergebnis (CANCELLED oder FAILED), niemals zu einem ausgelösten Fehler. Beim Launcher-Stil werden Validierungsfehler aus launcher.launch(...) ausgelöst.

Abgebrochene Sessions

Wenn die App während des Checkouts beendet wird oder der Benutzer sie zwangsweise stoppt, speichert das SDK die Session lokal. Überprüfe beim nächsten Start der App, ob eine abgebrochene Session vorhanden ist, und gleiche sie mit deinem Backend ab:
abandoned.createdAt ist ein Epoch-Zeitstempel in Millisekunden.

Verwandte Themen

Mobile Integration Guide

Best Practices für mobile Checkout-Abläufe

Kotlin SDK

Backend-SDK für serverseitige Vorgänge
Zuletzt geändert am 31. Juli 2026