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 öffnetMobile Integration Guide
Best Practices für mobile Checkout-Abläufe
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 Der Wert muss mit dem Schema in
${dodoCallbackScheme}. Daher ist diese eine Eigenschaft die gesamte Einrichtung – du fügst kein Manifest-XML hinzu:build.gradle.kts
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.- Launcher (Recommended)
- Suspend Function
Registriere den Vertrag mit
registerForActivityResult und starte ihn anschließend:Bedeutung des Ergebnisses
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
CheckoutResult.status.
Anpassung des Erscheinungsbilds
Passe die Symbolleiste, Schaltflächen und das Farbschema des Custom Tab übercustomization auf CheckoutParams an. Alle Felder sind optional; wenn
customization weggelassen wird, wird das standardmäßige Erscheinungsbild des Android Custom Tab verwendet.
Int?
Hintergrundfarbe der Symbolleiste als ARGB-Integer
Color.Farbe der Navigationsleiste.
Farbe der Trennlinie oberhalb der Navigationsleiste.
CloseButtonStyle
DEFAULT zeigt das Systemsymbol „X“ an; BACK zeichnet stattdessen einen Zurück-Pfeil.CloseButtonPosition
Auf welcher Seite der Symbolleiste die Schaltfläche zum Schließen angezeigt wird:
START oder END.Zeigt das Teilen-Symbol der Symbolleiste an.
Boolean
Zeigt den Seitentitel unter der URL in der Symbolleiste an.
Boolean
Ermöglicht das automatische Ausblenden der Symbolleiste beim Scrollen der Seite.
Boolean
Zeigt „Diese Seite als Lesezeichen speichern“ im Überlaufmenü an.
Boolean
Zeigt „Seite herunterladen“ im Überlaufmenü an.
ColorScheme
Erzwingt unabhängig von der Systemeinstellung des Geräts ein helles oder dunkles Erscheinungsbild:
SYSTEM, LIGHT oder DARK.Fehler
DodoCheckout.start löst CheckoutError nur bei Fehlbedienung oder einem Plattformfehler aus. Lies den Code aus CheckoutError.code:
INVALID_CHECKOUT_URL: keinecheckout.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 einesreturnUrl, dessen Schema nicht mit deinemdodoCallbackScheme-Platzhalter übereinstimmt.
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 oder vom Benutzer zwangsweise gestoppt wird, 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 Zeitstempel in Millisekunden seit der Unix-Epoche.
Verwandte Themen
Mobile Integration Guide
Best Practices für mobile Checkout-Abläufe
Kotlin SDK
Backend-SDK für serverseitige Vorgänge