Skip to main content

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 .env och starta servern med make run.
  • Betalningsintegration: Ett checkout-flöde som skapar checkout-sessioner med dodopayments-go SDK.
  • 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, internal och templates.
  • 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:
Skapa båda nycklarna i testläge medan du utvecklar. Växla till testläge genom att stänga av reglaget Live Mode i sidofältet i instrumentpanelen.
4

Configure Environment Variables

Skapa en fil med namnet .env i projektroten från mallen:
Ange dessa värden i .env:
.env
Servern läser dessa variabler vid start: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.
Checka aldrig in filen .env i versionshanteringen. Repositoryts .gitignore utesluter den redan.
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:
Öppna http://localhost:8000 för att se din prissida.
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

Redigera internal/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
Mallen för prissidan lägger till suffixet /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:
Funktionen 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:
I Dodo Payments Dashboard lägger du till en endpoint med vidarebefordrings-URL:en som ngrok visar, följt av /api/webhook:
Kopiera endpointens signerigsnyckel till DODO_PAYMENTS_WEBHOOK_KEY och starta sedan om servern.

Driftsättning

Bygg för produktion

make build kompilerar servern till bin/server:
Om du vill bygga och starta den binära filen utan make kör du:

Distribuera till Vercel

[ Distribuera med Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate) När du har distribuerat lägger du till variablerna från filen .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 en Dockerfile i projektroten. Byggsteget måste använda Go 1.24.4 eller senare för att matcha go.mod:
Den slutliga avbildningen kopierar templates/ bredvid den binära filen, eftersom servern läser mallarna från arbetskatalogen. Bygg och kör avbildningen:
Containern lyssnar på värdet PORT från .env, så låt PORT=8000 matcha portmappningen.

Överväganden för produktion

Innan du distribuerar till produktion:
  • Ange DODO_PAYMENTS_ENVIRONMENT till live_mode.
  • Använd en API-nyckel i live-läge från instrumentpanelen.
  • Rikta webhook-endpointen mot din produktionsdomän och använd endpointens signerigsnyckel.
  • Ange DODO_PAYMENTS_RETURN_URL till en sida på din produktionsdomän.
  • Leverera alla endpoints via HTTPS.

Felsökning

Kontrollera att go version rapporterar Go 1.24.4 eller senare och hämta sedan modulerna igen:
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_ENVIRONMENT i .env är felaktig. En nyckel i testläge behöver test_mode.
  • Kontrollera serverloggarna för det exakta felet. Handlern loggar varje misslyckad förfrågan innan den returnerar 500.
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.
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:
Senast ändrad 26 september 2026