Skip to main content
Dies ist das offizielle iOS-Checkout-SDK von Dodo Payments für Swift. Es öffnet den gehosteten Checkout von Dodo in einer nativen Browseransicht und gibt ein typisiertes Ergebnis zurück.

Checkout Sessions API

Erstelle die checkout_url, die dieses SDK öffnet, in deinem Backend.

Mobile Integration Guide

Erfahre, wie dies in den vollständigen mobilen Zahlungsablauf passt.
Das iOS SDK öffnet den gehosteten Checkout von Dodo in SFSafariViewController, enthält keinen API-Schlüssel und ruft die Dodo API niemals direkt auf. Die gesamte Checkout-Logik läuft im Browser; das SDK verwaltet lediglich den Lebenszyklus der Ansicht und erfasst die Rückgabe-URL. Erfordert iOS 16+ und Swift 6.

Installation

1

Add the Package

Gehe in Xcode zu File → Add Package Dependencies und gib Folgendes ein:
Wähle Version 1.0.0 oder höher aus.Alternativ kannst du es zu deinem Package.swift hinzufügen:
Package.swift
2

Register a Callback URL Scheme

Deine App muss ein URL-Schema registrieren, um die Rückgabe-URL vom Checkout zu empfangen. Füge dies zu deinem Info.plist hinzu:
Info.plist
Du kannst dies auch über die Xcode-Oberfläche Info → URL Types hinzufügen.

Verwendung

Weiterleiten der Rückgabe-URL

SFSafariViewController kann seine eigene Rückgabe-URL nicht innerhalb des Prozesses abfangen. Deine App muss eingehende URLs an das SDK weiterleiten.
Es ist sicher, hier jede URL weiterzuleiten. handleOpenURL reagiert nur auf URLs, die deinem registrierten returnUrl entsprechen, und gibt für alles andere false zurück.

Bedeutung des Ergebnisses

result.status ist ein UI-Hinweis, kein Zahlungsnachweis. Bestätige jede Zahlung über dein Backend mithilfe des payment.succeeded / subscription.active Webhooks.
CheckoutStatus
erforderlich
Eines 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 jedoch nicht zur Zugriffserteilung. Siehe unten unter „Zahlung verifizieren“.
String?
Wird für Subscription-Checkouts gesetzt.
[String]?
Wird gesetzt, wenn der Checkout Produkte mit Lizenzschlüsseln enthält.
String?
Wird gesetzt, wenn der Checkout eine E-Mail-Adresse erfasst.
[String: String]
Jeder Query-Parameter aus der Rückgabe-URL, unverändert.

Zahlung verifizieren

Webhooks

Dodo Payments ruft dein Backend auf, wenn eine Zahlung erfolgreich ist oder ein Subscription aktiviert wird.

Get Payment Detail

Rufe paymentId mit deinem geheimen Schlüssel ab, um den Status direkt zu prüfen.
Gewähre den Zugriff erst, nachdem einer dieser Mechanismen die Zahlung bestätigt hat, niemals allein aufgrund von result.status.

Anpassung der Darstellung

Passe den Schließen-Button, den Präsentationsstil und das Farbschema des Sheets an über customization auf start(...). Alle Felder sind optional. Wenn customization weggelassen wird, wird die standardmäßige Darstellung von iOS SFSafariViewController verwendet.
DismissButtonStyle
Bezeichnung oder Symbol für den Schließen-Button: done, close oder cancel.
PresentationStyle
pageSheet wird als Karte mit Wischen zum Schließen dargestellt; fullScreen nimmt den gesamten Bildschirm ein.
Bool
Ermöglicht das Einklappen der Toolbar beim Scrollen. Nur sichtbar, wenn presentationStyle den Wert fullScreen hat — pageSheet hält die Leisten unabhängig von dieser Einstellung fixiert.
ColorScheme
Erzwingt unabhängig von der Systemeinstellung des Geräts eine helle oder dunkle Darstellung: system, light oder dark.

Fehler

start löst CheckoutError nur bei falscher Verwendung oder einem Plattformfehler aus. Eine stornierte oder abgelehnte Zahlung ist immer ein Ergebnis, niemals eine Exception.
  • invalidCheckoutUrl (INVALID_CHECKOUT_URL): keine gültige checkout.dodopayments.com-Session-URL.
  • invalidReturnUrl (INVALID_RETURN_URL): keine gültige absolute URL.
  • alreadyInProgress (ALREADY_IN_PROGRESS): Ein Checkout läuft bereits.
  • platformError (PLATFORM_ERROR): unerwarteter Plattformfehler.

Abgebrochene Sessions

Wenn die App während des Checkouts beendet wird, stelle die Session beim nächsten Start wieder her und gleiche sie mit deinem Backend ab.

Verwandte Inhalte

Mobile Integration Guide

Derselbe Vertrag für Android, React Native und Flutter.

React Native SDK

Umschließt denselben Swift-Kern auf iOS.
Zuletzt geändert am 17. August 2026