Skip to main content
Kotlin SDK ger Kotlin-applikationer typad åtkomst till Dodo Payments REST API. Det använder Kotlin-typer genomgående: nullable-värden för fält som kan saknas, Sequence för att iterera över resultat och suspend-funktioner för asynkrona anrop.

Installation

Gradle (Kotlin DSL)

Lägg till beroendet i din build.gradle.kts:
build.gradle.kts

Maven

Lägg till beroendet i din pom.xml:
pom.xml
SDK-versioner lägger till stöd för API-ändringar. Om du vill hitta den senaste versionen kan du kontrollera Maven Central.
SDK kräver Java 8 eller senare. Det körs på JVM och Android och levereras med ProGuard- och R8-regler för att behålla kod.

Snabbstart

Skapa en klient och skapa sedan en checkout-session:
fromEnv() ansluter till live-läge om inte DODO_PAYMENTS_BASE_URL eller dodopayments.baseUrl anger något annat. Information om hur du använder testläge finns i Test Mode. En API-nyckel för testläge fungerar endast i testläge.
Förvara API-nycklar i miljövariabler eller en secrets manager. Checka aldrig in dem i versionshanteringen.

Kärnfunktioner

Coroutines

Metoderna i den asynkrona klienten är suspend-funktioner som du anropar från en coroutine.

Null Safety

Fält som kan saknas är nullable-typer, inte Optional.

Sequences

I den synkrona klienten returnerar autoPager() en Sequence som hämtar fler sidor medan du itererar. I den asynkrona klienten returnerar den en Flow.

Immutable Models

Modellklasser är oföränderliga och toBuilder() returnerar en builder för en modifierad kopia.

Konfiguration

Från miljövariabler

fromEnv() läser dina inställningar från miljövariabler eller systemegenskaper. Systemegenskaper har företräde:
API-nyckeln hämtas från DODO_PAYMENTS_API_KEY eller dodopayments.apiKey. Webhook-signaturhemligheten hämtas från DODO_PAYMENTS_WEBHOOK_KEY eller dodopayments.webhookKey, och bas-URL:en från DODO_PAYMENTS_BASE_URL eller dodopayments.baseUrl. Skapa en klient och återanvänd den, eftersom varje klient har sin egen connection pool och sina egna thread pools. Om du vill verifiera en webhook skickar du det råa request-innehållet och headers till client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), där headers är en com.dodopayments.api.core.http.Headers. Den kontrollerar signaturen med din webhook-nyckel och returnerar den tolkade händelsen eller kastar DodoPaymentsWebhookException. Utan headers verifierar unwrap inte signaturen. client.webhooks().unsafeUnwrap(rawBody) tolkar body utan att verifiera den, så använd den endast för testning. Se Webhooks.

Manuell konfiguration

Ange varje alternativ på buildern:

Testläge

Om du vill använda testläge (https://test.dodopayments.com) anropar du testMode() på buildern:

Tidsgränser och försök igen

Som standard försöker klienten två gånger och avbryter efter 1 minut. Den försöker igen vid anslutningsfel och svar med status 408, 409, 429 eller 500 och högre, med exponentiell backoff. Ange standardvärdena på klienten eller skicka RequestOptions till ett enskilt anrop:

Vanliga åtgärder

Exemplen i det här avsnittet använder client från Quick Start.

Skapa en checkout-session

Skapa en checkout-session och omdirigera sedan kunden till den returnerade checkout-URL:en:
checkoutUrl() returnerar en nullable String?. Varje checkout-URL kan användas en gång och upphör att gälla efter 24 timmar. Information om alla sessionsalternativ finns i Checkout Sessions.

Skapa en produkt

Skapa en produkt för en månadsprenumeration med priset $29.99:
price anges i den minsta valutaenheten. discountBps anger rabatten i basis points och ersätter det föråldrade fältet discount.

Aktivera licensnyckel

Aktivera en licensnyckel för en enhet eller installation. Om nyckeln har nått sin aktiveringsgräns returnerar API:et 422 och SDK kastar UnprocessableEntityException. En inaktiv nyckel returnerar 403 (PermissionDeniedException), och en okänd nyckel returnerar 404 (NotFoundException):

Hantera prenumerationer

Skapa en prenumeration och debitera den sedan om det är en on-demand-prenumeration.
POST /subscriptions (SDK:ts subscriptions().create()-metod) är föråldrad. Den fungerar fortfarande för befintliga integrationer, men nya integrationer bör skapa prenumerationer via en Checkout Session.
billing kräver endast country, en ISO-landskod med två bokstäver. Använd AttachExistingCustomer för att koppla en befintlig kund eller NewCustomer för att skapa en. charge är avsedd för on-demand-prenumerationer, och productPrice anges i den minsta valutaenheten.

Förbrukningsbaserad fakturering

Registrera användningshändelser

Skicka en användningshändelse för en kund. Mätare som spårar händelsens eventName aggregerar den:
eventId är idempotency-nyckeln, så ge varje händelse ett unikt värde. En request accepterar upp till 1 000 händelser.

Asynkrona åtgärder

Asynkron klient

Den asynkrona klienten har samma metoder som den synkrona klienten, men de flesta är suspend-funktioner. Anropa dem från en coroutine:
Du kan också anropa client.async() på en synkron klient för att hämta dess asynkrona version.

Felhantering

Vid en felstatus kastar SDK en underklass av DodoPaymentsServiceException, som har statusCode(), headers() och body(). Underklasserna är BadRequestException (400), UnauthorizedException (401), PermissionDeniedException (403), NotFoundException (404), UnprocessableEntityException (422), RateLimitException (429), InternalServerException (5xx) och UnexpectedStatusCodeException för andra statusar, till exempel 409:
Nätverksfel kastar DodoPaymentsIoException, och svar som SDK inte kan tolka kastar DodoPaymentsInvalidDataException. Alla SDK-undantag ärver från DodoPaymentsException.

Funktionell felhantering

Använd Result för funktionell felhantering:
runCatching fångar alla undantag, inklusive SDK-undantag, och returnerar dem som en misslyckad Result.

Android-integration

Kotlin SDK är ett server-SDK. Det autentiserar med din hemliga API-nyckel, och alla som har din APK kan extrahera en nyckel som kompilerats in i den. Använd det därför aldrig i en Android-app. Så här tar du betalt i en Android-app:
  1. Skapa checkout-sessionen på din server med detta SDK (se Ktor Integration) och returnera dess checkout_url.
  2. Hämta den checkout_url från din server i appen och öppna den med Android SDK, som inte innehåller någon API-nyckel.

Svarvalidering

Som standard kastar SDK:t DodoPaymentsInvalidDataException endast när du läser en property med en oväntad typ. Om du vill kontrollera hela svaret i förväg aktiverar du validering för en request eller anropar validate() på ett svar:

Avancerade funktioner

Proxykonfiguration

Om du vill skicka requests via en proxy skickar du en java.net.Proxy till buildern:

Tillfällig konfiguration

withOptions returnerar en klient med ändrade inställningar som delar den ursprungliga klientens anslutnings- och trådpooler. Den ursprungliga klienten ändras inte:

Ktor Integration

Skapa klienten en gång och anropa den från en route:

Resurser

GitHub Repository

Källkod, releaser och den fullständiga metodlistan.

API Reference

Alla endpoints, parametrar och svar.

Discord Community

Ställ frågor och prata med andra utvecklare.

Report Issues

Rapportera buggar eller efterfråga funktioner.

Support

För hjälp med Kotlin SDK:

Bidra

Om du vill bidra kan du läsa riktlinjerna för bidrag.
Senast ändrad 26 september 2026