GitHub Repository
Komplett FastAPI + Dodo Payments-mall
Översikt
FastAPI-mallen ger en produktionsklar startpunkt för att integrera Dodo Payments med din Python-backend. Denna mall inkluderar hantering av kassa-sessioner, verifiering av webhook, integration av kundportal och asynkrona API-mönster för att hjälpa dig att börja ta emot betalningar snabbt.Denna mall använder FastAPI med asynkron/await-mönster, Pydantic för validering och
dodopayments Python SDK för sömlös API-integration.Funktioner
- Snabb installation - Kom igång på mindre än 5 minuter
- Asynkront stöd - Byggd med FastAPIs inbyggda asynkron/await-mönster
- Kassa-sessioner - Förkonfigurerad kassa-flöde med Python SDK
- Webhook-hantering - Säker webhook-slutpunkt med signaturverifiering
- Kundportal - Enkel skapelse av kundportal-sessioner
- Typ-säkerhet - Full Pydantic-validering och typ-hints
- Miljökonfiguration - Klar att använda miljövariabelinställning
Förutsättningar
Innan du börjar, se till att du har:- Python 3.9+ (rekommenderat: Python 3.11+)
- pip eller uv för paketförvaltning
- Dodo Payments-konto (för att få tillgång till API- och Webhook-nycklar från instrumentpanelen)
Snabbstart
1
Klona Repositoriet
2
Skapa Virtuell Miljö
Ställ in en isolerad Python-miljö:Eller använd uv för snabbare hantering av beroenden:
3
Installera Beroenden
4
Få API-uppgifter
Registrera dig på Dodo Payments och få dina uppgifter från instrumentpanelen:
- API-nyckel: Instrumentpanel → Utvecklare → API-nycklar
- Webhook-nyckel: Instrumentpanel → Utvecklare → Webhooks
5
Konfigurera Miljövariabler
Skapa en Uppdatera värdena med dina Dodo Payments-uppgifter:
.env fil i rotkatalogen:.env
6
Kör Utvecklingsservern
Du bör se FastAPIs Swagger UI med alla tillgängliga slutpunkter redo att testas.
Projektstruktur
API-slutpunkter
Mallen inkluderar följande förkonfigurerade slutpunkter:| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/checkout | POST | Skapa en ny kassa-session |
/webhook | POST | Hantera Dodo Payments-webhooks |
/customer-portal | POST | Generera kundportal-URL |
Kodexempel
Skapa en Kassa-session
Hantera Webhooks
Integration av Kundportal
Webhook-händelser
Mallen demonstrerar hantering av vanliga webhook-händelser:| Händelse | Beskrivning |
|---|---|
payment.succeeded | Betalning genomförd framgångsrikt |
payment.failed | Betalningsförsök misslyckades |
subscription.active | Prenumeration är nu aktiv |
subscription.cancelled | Prenumeration avbröts |
refund.succeeded | Återbetalning genomförd framgångsrikt |
- Uppdatera användarbehörigheter i din databas
- Skicka bekräftelsemail
- Tillhandahålla åtkomst till digitala produkter
- Spåra analyser och mätvärden
Testa Webhooks Lokalt
För lokal utveckling, använd verktyg som ngrok för att exponera din lokala server:Distribution
Docker
Produktionsöverväganden
Felsökning
Importfel eller saknade moduler
Importfel eller saknade moduler
Se till att din virtuella miljö är aktiverad och att beroenden är installerade:
Kassa-session skapande misslyckas
Kassa-session skapande misslyckas
Vanliga orsaker:
- Ogiltigt produkt-ID - verifiera att det finns i din Dodo-instrumentpanel
- Fel API-nyckel eller miljöinställning i
.env - Kontrollera FastAPI-loggarna för detaljerade felmeddelanden
Webhooks tar inte emot händelser
Webhooks tar inte emot händelser
För lokal testning, använd ngrok för att exponera din server:Uppdatera webhook-URL:en i din Dodo-instrumentpanel till ngrok-URL:en. Se till att uppdatera din
.env fil med den korrekta webhook-verifieringsnyckeln.Webhook-signaturverifiering misslyckas
Webhook-signaturverifiering misslyckas
- Se till att
DODO_PAYMENTS_WEBHOOK_KEYär korrekt inställd i din.env - Verifiera att du använder den råa begärningskroppen för signaturverifiering
- Kontrollera att du läser
webhook-signatureheadern korrekt
Lär dig mer
Python SDK
Komplett Python SDK-dokumentation med asynkront stöd
Webhook-dokumentation
Lär dig om alla webhook-händelser och bästa praxis
Kassa-sessioner
Dyk djupt in i konfigurationen av kassa-sessioner
API-referens
Komplett Dodo Payments API-dokumentation
Support
Behöver du hjälp med mallen?- Gå med i vår Discord-community för frågor och diskussioner
- Kolla in GitHub-repositoriet för problem och uppdateringar
- Kontakta vårt supportteam för hjälp