Detta är det officiella Flutter-paketet för Dodo Payments (
dodopayments_checkout
på pub.dev). Det finns även ett separat, community-byggt paket, se
Community Projects.Checkout Sessions API
Skapa checkout_url som detta SDK öppnar, från din backend.
Mobile Integration Guide
Se hur detta passar in i det fullständiga mobila betalningsflödet.
dodopayments_checkout öppnar Dodos hostade checkout i
SFSafariViewController på iOS och i en Chrome Custom Tab på Android — samma
inbyggda kärnor som används av de fristående iOS- och
Android-SDK:erna. All checkoutlogik finns i
dessa inbyggda kärnor; Dart-lagret vidarebefordrar anropet via en typad
Pigeon-kanal. Det innehåller ingen API-nyckel och
anropar aldrig Dodo Payments API.
Kräver Flutter 3.44+ / Dart 3.12+, iOS 16+ och Android minSdk 23.
Installation
1
Add the Dependency
pubspec.yaml
2
Register a Callback URL Scheme
- iOS
- Android
Lägg till en URL-typ för ditt schema i Vidarebefordra sedan inkommande URL:er (till exempel via
ios/Runner/Info.plist:ios/Runner/Info.plist
app_links) till SDK:t, eftersom
SFSafariViewController inte kan fånga sin egen retur-URL:Det är säkert att vidarebefordra alla URL:er här.
handleOpenURL agerar endast på URL:er
som matchar ditt registrerade returnUrl och löser false för allt
annat.Användning
Vad resultatet betyder
CheckoutStatus
obligatorisk
En av
succeeded, failed, cancelled, pending, expired.String?
Anges när retur-URL:en innehöll en sådan. Visa den i UI:t, men använd den inte
för att bevilja åtkomst. Se Verifiera betalningen nedan.
String?
Anges för prenumerations-checkouter.
List<String>?
Anges när checkouten innehåller produkter med licensnycklar.
String?
Anges när checkouten samlar in en e-postadress.
Map<String, String>
Varje frågeparameter från retur-URL:en, ordagrant.
Verifiera betalningen
Webhooks
Dodo Payments anropar din backend när en betalning lyckas eller en prenumeration aktiveras.
Get Payment Detail
Slå upp
paymentId med din hemliga nyckel för att kontrollera dess status direkt.result.status.
Anpassning av utseende
Anpassa checkout-webbläsarens verktygsfält, knappar och färgschema viacustomization på CheckoutParams. Alternativen är grupperade efter plattform eftersom
Androids Custom Tab och iOS:s SFSafariViewController visar olika
inbyggda kontroller. Alla fält är valfria; om customization utelämnas används respektive
plattformens standardutseende.
Android — Custom Tab
Android — Custom Tab
Color?
Bakgrundsfärg för verktygsfältet.
Färg på navigeringsfältet.
Avdelarfärg ovanför navigeringsfältet.
CloseButtonStyle
standard visar systemets “X”-ikon; back visar i stället en bakåtpil.CloseButtonPosition
Vilken sida av verktygsfältet som stängningsknappen visas på.
Visar verktygsfältets delningsikon.
bool
Visar sidans titel under URL:en i verktygsfältet.
bool
Låter verktygsfältet döljas automatiskt när sidan rullas.
bool
Visar “Bokmärk den här sidan” i spillmenyn.
bool
Visar “Ladda ned sidan” i spillmenyn.
BrowserColorScheme
Tvingar fram ljust eller mörkt utseende oavsett enhetens systeminställning.
iOS — SFSafariViewController
iOS — SFSafariViewController
DismissButtonStyle
Etikett eller ikon för avvisningsknappen.
PresentationStyle
pageSheet visas som ett kort som kan svepas bort; fullScreen täcker hela skärmen.bool
Låter verktygsfältet fällas ihop vid rullning. Visas endast när
presentationStyle är fullScreen — pageSheet håller fälten fixerade oavsett denna inställning.BrowserColorScheme
Tvingar fram ljust eller mörkt utseende oavsett enhetens systeminställning.
Fel
start kastar CheckoutException endast vid felaktig användning eller ett plattformsfel.
En avbruten eller nekad betalning är alltid ett resultat, aldrig ett undantag.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): ingen giltigcheckout.dodopayments.com-session-URL.invalidReturnUrl(INVALID_RETURN_URL): ingen giltig absolut URL.alreadyInProgress(ALREADY_IN_PROGRESS): en checkout körs redan.platformError(PLATFORM_ERROR): oväntat plattformsfel.
Övergivna sessioner
Om appen avslutas mitt under checkout återställer du sessionen vid nästa start och
synkroniserar den med din backend.
Relaterat
Mobile Integration Guide
Samma kontrakt för Android, iOS och React Native.
Community Projects
Det finns även ett separat Flutter-paket som byggts av communityn.