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
Async/Await
Type Hints
Auto-Pagination
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
API Reference
Discord Community
Report Issues
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.