Skip to main content
Python SDK ger Python-applikationer typad åtkomst till Dodo Payments REST API. Det har en synkron klient, DodoPayments, och en asynkron klient, AsyncDodoPayments, som båda bygger på httpx. Kapslade request-parametrar är typade dictionaries och svar är Pydantic-modeller.

Installation

Installera SDK med pip:
Om du vill använda aiohttp som HTTP-backend för den asynkrona klienten installerar du tillägget aiohttp:
Om du vill verifiera webhook-signaturer med client.webhooks.unwrap() installerar du även tillägget webhooks: pip install "dodopayments[webhooks]".
SDK kräver Python 3.9 eller senare. Använd den senaste stabila Python-versionen för att få säkerhetsuppdateringar.

Snabbstart

Synkron klient

Skapa en klient och skapa sedan en checkout-session:
Om du utelämnar bearer_token läser klienten miljövariabeln DODO_PAYMENTS_API_KEY. Om du utelämnar environment ansluter klienten till live mode. En API-nyckel för test mode fungerar endast med environment="test_mode".

Asynkron klient

AsyncDodoPayments har samma metoder som DodoPayments. Vänta på varje anrop:
Förvara API-nycklar i miljövariabler eller en secrets manager. Checka aldrig in dem i versionshanteringen.

Kärnfunktioner

Pythonic Interface

Keyword-argument för parametrar, TypedDict-typer för kapslade objekt och Pydantic-modeller för svar.

Async/Await

AsyncDodoPayments för asyncio, med aiohttp som valfri HTTP-backend.

Type Hints

Type hints på varje metod för autokomplettering i editorn och typkontroll med mypy.

Auto-Pagination

List-metoder returnerar iteratorer som hämtar nästa sida medan du loopar.

Konfiguration

Miljövariabler

Lagra din API-nyckel i en miljövariabel:
.env
Klienten läser dessa variabler när du inte skickar motsvarande argument: Om DODO_PAYMENTS_BASE_URL är angiven och du även skickar environment genererar konstruktorn ett fel med texten “Ambiguous URL”. Om du vill använda environment i det fallet skickar du base_url=None. För att verifiera en webhook skickar du den råa request body:n och headers till client.webhooks.unwrap(payload, headers=headers). Den kontrollerar signaturen med din webhook-nyckel och returnerar den tolkade händelsen. client.webhooks.unsafe_unwrap(payload) tolkar body:n utan att verifiera den, så använd den endast för testning. Se Webhooks.

Tidsgränser

Requests får som standard timeout efter 1 minut, med en anslutningstimeout på 5 sekunder. Skicka timeout i sekunder eller en httpx.Timeout för separata gränser för läsning, skrivning och anslutning:
När en request får timeout genererar SDK APITimeoutError. Requests som får timeout försöks igen, så ett anrop kan ta längre tid än timeout innan det misslyckas.

Omförsök

Ange max_retries på klienten eller på en enskild request med with_options():
SDK försöker igen vid anslutningsfel och svar med status 408, 409, 429 eller 500 och högre. Som standard försöker den två gånger, med exponentiell backoff. När en request fortfarande misslyckas genererar SDK en subklass av dodopayments.APIError: Statusundantagen ärver från dodopayments.APIStatusError, som har attributen status_code och response. APITimeoutError är en subklass av APIConnectionError.

Vanliga åtgärder

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

Skapa en Checkout Session

Skapa en checkout-session och omdirigera sedan kunden till den returnerade checkout_url:
Varje checkout_url fungerar en gång och upphör efter 24 timmar. Se Checkout Sessions för alla sessionsalternativ.

Hantera kunder

Skapa en kund med en e-postadress och ett namn och hämta den sedan med ID:

Hantera prenumerationer

Skapa en prenumeration, debitera en on-demand-prenumeration och läs en prenumerations användningshistorik.
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 tvåbokstavs ISO-landskod. customer tar {"customer_id": ...} för att koppla en befintlig kund eller {"email": ..., "name": ...} för att skapa en. charge används för on-demand-prenumerationer, och product_price anges i den minsta valutaenheten. retrieve_usage_history returnerar en paginerad lista som du kan iterera över enligt Paginering.

Användningsbaserad debitering

Mata in användningshändelser

Skicka användningshändelser för en kund:
event_id är idempotency-nyckeln, så ge varje händelse ett unikt värde. Om samma event_id förekommer två gånger i en request avvisas hela requesten. Om en event_id redan har matats in ignoreras den nya händelsen. En request accepterar upp till 1 000 händelser. timestamp använder som standard aktuell tid och avvisas om den ligger mer än 1 timme bakåt eller mer än 5 minuter framåt.

Lista och hämta händelser

Hämta en enskild händelse med dess event_id eller lista händelser filtrerade efter kund och händelsenamn:
usage_events.list accepterar även filtren meter_id, start och end.

Paginering

Automatisk paginering

List-metoder returnerar en iterator som hämtar nästa sida medan du loopar:

Asynkron paginering

Med den asynkrona klienten loopar du med async for:

Manuell paginering

Om du vill arbeta med en sida i taget läser du items och anropar has_next_page() och get_next_page(). next_page_info() returnerar parametrarna för nästa request:

Konfiguration av HTTP-klient

Om du vill lägga till en proxy, en anpassad transport eller andra inställningar för httpx skickar du din egen http_client. DefaultHttpxClient behåller SDK:s standardgränser för anslutningar, timeout och omdirigeringar:
Om du vill använda en annan HTTP-klient för en request anropar du client.with_options(http_client=...).

Async med AIOHTTP

Som standard skickar den asynkrona klienten requests med httpx. För bättre samtidighet installerar du tillägget aiohttp och skickar DefaultAioHttpClient() som http_client:

Loggning

SDK loggar med standardbibliotekets logging-modul. Aktivera loggning genom att ange DODO_PAYMENTS_LOG till info:
För mer information anger du den till debug:

Framework-integrering

De här exemplen skapar en checkout-session från en webbendpoint och returnerar dess URL.

FastAPI

Den här endpointen använder den asynkrona klienten:

Django

Den här vyn använder den synkrona klienten:

Resurser

GitHub Repository

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

API Reference

Varje endpoint, parameter och svar.

Discord Community

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

Report Issues

Rapportera buggar eller föreslå funktioner.

Support

Om du behöver hjälp med Python SDK:

Bidra

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