Skip to main content
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

Lägg till en URL-typ för ditt schema i ios/Runner/Info.plist:
ios/Runner/Info.plist
Vidarebefordra sedan inkommande URL:er (till exempel via 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

result.status är en UI-hint, inte ett bevis på betalning. Bekräfta varje betalning från din backend via payment.succeeded / subscription.active webhook.
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.
Bevilja åtkomst efter att något av dessa har bekräftat betalningen, aldrig enbart från result.status.

Anpassning av utseende

Anpassa checkout-webbläsarens verktygsfält, knappar och färgschema via customizationCheckoutParams. 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.
Color?
Bakgrundsfärg för verktygsfältet.
Color?
Färg på navigeringsfältet.
Color?
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å.
bool
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.
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 fullScreenpageSheet 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 giltig checkout.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.
Senast ändrad 17 augusti 2026