GitHub Repository
Minimal Go + Dodo Payments boilerplate
Översikt
Go boilerplate ger en produktionsklar startpunkt för att integrera Dodo Payments med din Go backend. Denna mall inkluderar hantering av checkout-sessioner, verifiering av webhooks, integration av kundportal och följer Go:s bästa praxis för att hjälpa dig att börja ta emot betalningar snabbt.Denna boilerplate använder Go 1.21+ med rena arkitekturmönster (
cmd, internal, templates), HTML-mallar och dodopayments-go SDK för sömlös API-integration.Funktioner
- Snabb installation - Kom igång på mindre än 5 minuter
- Betalningsintegration - Förkonfigurerad kassa med
dodopayments-goSDK - Modern UI - Ren, mörk-temad prissida med HTML-mallar
- Webhook-hantering - Säker verifiering och bearbetning av betalningsevenemang
- Kundportal - Självbetjäningshantering av prenumerationer
- Go-bästa praxis - Ren arkitektur med
cmd,internalochtemplates - Förifylld kassa - Visar hur man skickar kunddata för att förbättra användarupplevelsen
Förutsättningar
Innan du börjar, se till att du har:- Go 1.21+
- Dodo Payments-konto (för att få tillgång till API- och Webhook-nycklar från instrumentpanelen)
Snabbstart
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
Konfigurera miljövariabler
Skapa en Uppdatera värdena med dina Dodo Payments-uppgifter:
.env fil i rotkatalogen:.env
Lägg till dina produkter
Uppdatera
internal/lib/products.go med dina faktiska produkt-ID:n från Dodo Payments:Kör utvecklingsservern
Du bör se en mörk-temad prissättningssida med dina produkter redo att köpas.
Projektstruktur
API-endpunkter
Boilerplate inkluderar följande förkonfigurerade endpunkter:| Endpoint | Metod | Beskrivning |
|---|---|---|
/ | GET | Prissida med produktlista |
/api/checkout | POST | Skapa en ny kassa-session |
/api/webhook | POST | Hantera Dodo Payments webhooks |
/api/customer-portal | POST | Generera kundportal-URL |
Anpassning
Uppdatera produktinformation
Redigerainternal/lib/products.go för att ändra:
- Produkt-ID:n (från din Dodo-instrumentpanel)
- Priser
- Funktioner
- Beskrivningar
Förifyll kunddata
Itemplates/index.html, ersätt den hårdkodade kunddata med dina faktiska användardata:
Webhook-händelser
Boilerplate visar hur man hanterar webhook-händelser iinternal/api/webhook.go. Stödda händelser inkluderar:
| Händelse | Beskrivning |
|---|---|
subscription.active | Utlöses när en prenumeration blir aktiv |
payment.succeeded | Utlöses när en betalning är framgångsrik |
- 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
Bygg för produktion
Distribuera till Vercel
[Docker
Skapa enDockerfile:
Produktionsöverväganden
Felsökning
Byggfel eller saknade beroenden
Byggfel eller saknade beroenden
Se till att Go-moduler är korrekt nedladdade:
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 serverloggarna 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.Mallar laddas inte
Mallar laddas inte
Se till att du kör servern från projektets rotkatalog, eller att mallarnas sökväg är korrekt konfigurerad i din kod.
Lär dig mer
Go SDK
Komplett Go SDK-dokumentation
Webhooks Dokumentation
Lär dig om alla webhook-händelser och bästa praxis
Checkout-sessioner
Djupdykning i konfiguration av checkout-sessioner
API-referens
Komplett Dodo Payments API-dokumentation
Support
Behöver du hjälp med boilerplate?- 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