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:aiohttp:
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: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:
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
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. Skickatimeout i sekunder eller en httpx.Timeout för separata gränser för läsning, skrivning och anslutning:
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
Angemax_retries på klienten eller på en enskild request med with_options():
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änderclient från Snabbstart.
Skapa en Checkout Session
Skapa en checkout-session och omdirigera sedan kunden till den returneradecheckout_url:
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.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 dessevent_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 medasync for:
Manuell paginering
Om du vill arbeta med en sida i taget läser duitems 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örhttpx skickar du din egen http_client. DefaultHttpxClient behåller SDK:s standardgränser för anslutningar, timeout och omdirigeringar:
client.with_options(http_client=...).
Async med AIOHTTP
Som standard skickar den asynkrona klienten requests medhttpx. För bättre samtidighet installerar du tillägget aiohttp och skickar DefaultAioHttpClient() som http_client:
Loggning
SDK loggar med standardbiblioteketslogging-modul. Aktivera loggning genom att ange DODO_PAYMENTS_LOG till info:
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:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Öppna ett ärende i repositoryt.