GitHub Repository
Minimal Go + Dodo Payments-boilerplate
Översikt
Go-boilerplate-koden är en minimal Go-server som säljer dina Dodo Payments-produkter från en prissida. Den skapar checkout-sessioner, verifierar och hanterar webhooks samt öppnar Customer Portal. Klona den som utgångspunkt för din egen Go-backend.Boilerplate-koden kräver Go 1.24.4 eller senare, den version som anges i
go.mod. Den använder en layout med cmd, internal och templates, renderar prissidan med Go HTML-mallar och anropar Dodo Payments API via dodopayments-go SDK.Funktioner
- Snabb installation: Klona repositoryt, lägg till dina API-nycklar i
.envoch starta servern medmake run. - Betalningsintegration: Ett checkout-flöde som skapar checkout-sessioner med
dodopayments-goSDK. - Modernt gränssnitt: En mörk prissida byggd med Go HTML-mallar och Tailwind CSS.
- Webhook-hantering: Verifierar signaturen för varje webhook innan händelsen behandlas.
- Customer Portal: Självbetjänad prenumerationshantering via Customer Portal.
- Go-bästa praxis: En ren projektlayout med
cmd,internalochtemplates. - Förifylld checkout: Skickar kundens namn och e-postadress till checkout, så att kunden inte behöver ange dem igen.
Förutsättningar
Innan du börjar behöver du:- Go 1.24.4 eller senare. Kontrollera din version med
go version. - Ett Dodo Payments-konto, för att skapa en API-nyckel och en webhook-signeringsnyckel i instrumentpanelen.
- Minst en produkt, skapad under Products i instrumentpanelen.
Snabbstart
1
Clone the Repository
2
Install Dependencies
make install kör go mod download och därefter go mod tidy. Om du vill hämta modulerna utan make kör du:3
Get API Credentials
Registrera dig på Dodo Payments och kopiera sedan båda nycklarna från instrumentpanelen:
- API-nyckel: Developer → API Keys
- Webhook-nyckel: Developer → Webhooks. Varje webhook-endpoint har en egen signerigsnyckel. Information om hur du skapar en endpoint som når din lokala server finns i Testa webhooks lokalt.
4
Configure Environment Variables
Skapa en fil med namnet Ange dessa värden i Servern läser dessa variabler vid start:
.env i projektroten från mallen:.env:.env
Servern avslutas vid start om någon av de obligatoriska nycklarna saknas.
.env.example anger PORT och DODO_PAYMENTS_RETURN_URL till port 8080. Den här sidan använder port 8000, så ange båda till 8000 enligt exemplet, eller ersätt 8000 med 8080 i kommandona på den här sidan.5
Add Your Products
Ersätt exempelprodukten i
internal/lib/products.go med dina produkter. Kopiera varje produkt-ID från Products i instrumentpanelen:Price anger endast priset som prissidan visar, i den minsta valutaenheten: 9999 visas som $99.99. Checkout debiterar produktens pris i Dodo Payments.6
Run the Development Server
make run bygger servern till bin/server och startar den. Om du vill köra servern utan att först bygga en binärfil kör du:Du ser en mörk prissida som listar dina produkter och är redo för köp.
Projektstruktur
Repositoryt har följande layout:API-endpoints
Boilerplate-koden innehåller följande förkonfigurerade endpoints:Anpassning
Uppdatera produktinformation
Redigerainternal/lib/products.go för att ändra:
- Produkt-ID:n (från Products i din Dodo Payments-instrumentpanel)
- Namn
- Priser som visas på prissidan
- Funktioner
- Beskrivningar
/mo på varje pris och visar Custom i stället för ett pris när Price är 100000 eller högre. Ändra detta genom att redigera templates/index.html.
Förifyll kunddata
I.env skickar funktionen handleCheckout hårdkodad kunddata till /api/checkout. Ersätt den med data från din inloggade användare:
handlePortal återanvänder dessa kunddata och använder samma exempel på namn och e-postadress som reservvärden. I en produktionsapp injicerar du dessa värden från ditt autentiseringssystem i båda funktionerna.
Webhook-händelser
internal/api/webhook.go verifierar varje förfrågan med client.Webhooks.Unwrap och nyckeln i DODO_PAYMENTS_WEBHOOK_KEY och dirigerar sedan händelsen utifrån dess type. Dessa händelser har en handler, och varje handler loggar händelsedata:
Handlern accepterar även
subscription.on_hold, subscription.failed, subscription.expired och subscription.plan_changed utan någon åtgärd och loggar alla andra händelsetyper som ohanterade. Den svarar med 200 på varje verifierad händelse. Se Webhook Event Guide för alla händelsetyper.
Lägg till din affärslogik i handler-funktionerna för att:
- Uppdatera användarbehörigheter i databasen
- Skicka bekräftelsemeddelanden
- Ge åtkomst till digitala produkter
- Spåra analysdata och mätvärden
Testa webhooks lokalt
Dodo Payments kan inte nålocalhost. Om du vill ta emot webhooks under utvecklingen exponerar du din lokala server med en tunnel som ngrok:
/api/webhook:
DODO_PAYMENTS_WEBHOOK_KEY och starta sedan om servern.
Driftsättning
Bygg för produktion
make build kompilerar servern till bin/server:
make kör du:
Distribuera till Vercel
[.env i Vercel-projektets inställningar, eftersom .env inte finns i repositoryt. Ange sedan din webhook-endpoint i instrumentpanelen till https://yourdomain.com/api/webhook.
Docker
Skapa enDockerfile i projektroten. Byggsteget måste använda Go 1.24.4 eller senare för att matcha go.mod:
templates/ bredvid den binära filen, eftersom servern läser mallarna från arbetskatalogen. Bygg och kör avbildningen:
PORT från .env, så låt PORT=8000 matcha portmappningen.
Överväganden för produktion
Felsökning
Build errors or missing dependencies
Build errors or missing dependencies
Kontrollera att
go version rapporterar Go 1.24.4 eller senare och hämta sedan modulerna igen:Checkout session creation fails
Checkout session creation fails
Vanliga orsaker:
- Produkt-ID:t är ogiltigt. Kontrollera att det finns under Products i samma läge som din API-nyckel.
- API-nyckeln eller
DODO_PAYMENTS_ENVIRONMENTi.envär felaktig. En nyckel i testläge behövertest_mode. - Kontrollera serverloggarna för det exakta felet. Handlern loggar varje misslyckad förfrågan innan den returnerar
500.
Webhooks not receiving events
Webhooks not receiving events
För lokal testning exponerar du servern med ngrok:Ange webhook-URL:en i din Dodo Payments-instrumentpanel till ngrok-URL:en. Ange sedan
DODO_PAYMENTS_WEBHOOK_KEY i .env till endpointens signerigsnyckel. Om servern loggar webhook verification failed matchar nyckeln inte endpointen.Templates not loading
Templates not loading
Servern läser
templates/base.html och templates/index.html från arbetskatalogen. Starta servern från projektroten eller ändra mallsökvägarna i cmd/server/main.go.Läs mer
Go SDK
Fullständig Go SDK-dokumentation
Webhooks Documentation
Läs om alla webhook-händelser och bästa praxis
Checkout Sessions
Fördjupa dig i konfiguration av checkout-sessioner
API Reference
Fullständig dokumentation för Dodo Payments API
Support
Om du behöver hjälp med boilerplate-koden:- Ställ frågor i Discord-communityt.
- Se GitHub-repositoryt för problem och uppdateringar.
- Kontakta supportteamet.