Sequence för att iterera över resultat och suspend-funktioner för asynkrona anrop.
Installation
Gradle (Kotlin DSL)
Lägg till beroendet i dinbuild.gradle.kts:
build.gradle.kts
Maven
Lägg till beroendet i dinpom.xml:
pom.xml
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.
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:
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 skickaRequestOptions till ett enskilt anrop:
Vanliga åtgärder
Exemplen i det här avsnittet använderclient 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:et422 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.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ändelsenseventName 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 ärsuspend-funktioner. Anropa dem från en coroutine:
client.async() på en synkron klient för att hämta dess asynkrona version.
Felhantering
Vid en felstatus kastar SDK en underklass avDodoPaymentsServiceException, 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:
DodoPaymentsIoException, och svar som SDK inte kan tolka kastar DodoPaymentsInvalidDataException. Alla SDK-undantag ärver från DodoPaymentsException.
Funktionell felhantering
AnvändResult för funktionell felhantering:
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:- Skapa checkout-sessionen på din server med detta SDK (se Ktor Integration) och returnera dess
checkout_url. - Hämta den
checkout_urlfrån din server i appen och öppna den med Android SDK, som inte innehåller någon API-nyckel.
Svarvalidering
Som standard kastar SDK:tDodoPaymentsInvalidDataException 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 enjava.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:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Skapa ett issue i repositoryt.