Hoppa till huvudinnehåll

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 checkout-flöde med dodopayments-go SDK
  • Modern UI - Ren, mörk-temad prissättningssida med HTML-mallar
  • Webhook-hantering - Verifiera och bearbeta betalningsevenemang på ett säkert sätt
  • Kundportal - Självbetjäningshantering av prenumerationer
  • Go bästa praxis - Ren arkitektur med cmd, internal, och templates
  • Förifylld checkout - 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

1

Klona Repositoriet

git clone https://github.com/dodopayments/go-boilerplate.git
cd go-boilerplate
2

Installera beroenden

make install
Eller manuellt:
go mod download
3

Få API-uppgifter

Registrera dig på Dodo Payments och få dina uppgifter från instrumentpanelen:
Se till att du är i Testläge medan du utvecklar!
4

Konfigurera miljövariabler

Skapa en .env fil i rotkatalogen:
cp .env.example .env
Uppdatera värdena med dina Dodo Payments-uppgifter:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here
DODO_PAYMENTS_WEBHOOK_KEY=your_webhook_signing_key_here
DODO_PAYMENTS_RETURN_URL=http://localhost:8000
DODO_PAYMENTS_ENVIRONMENT=test_mode
Kom ihåg att aldrig begå din .env fil till versionskontroll. Den är redan inkluderad i .gitignore.
5

Lägg till dina produkter

Uppdatera internal/lib/products.go med dina faktiska produkt-ID:n från Dodo Payments:
var Products = []Product{
    {
        ProductID:   "pdt_001", // Replace with your product ID
        Name:        "Basic Plan",
        Description: "Get access to basic features and support",
        Price:       9999, // in cents
        Features: []string{
            "Access to basic features",
            "Email support",
            "1 Team member",
            "Basic analytics",
        },
    },
    // ... add more products
}
6

Kör utvecklingsservern

make run
Eller manuellt:
go run cmd/server/main.go
Öppna http://localhost:8000 för att se din prissättningssida!
Du bör se en mörk-temad prissättningssida med dina produkter redo att köpas.

Projektstruktur

go-boilerplate/
├── cmd/
│   └── server/             # Application entry point
├── internal/
│   ├── api/                # API handlers (Checkout, Portal, Webhook)
│   ├── core/               # Configuration and system core
│   └── lib/                # Shared logic (Products, Customer utils)
├── templates/              # HTML templates
├── Makefile                # Build and run commands
├── go.mod                  # Go module definition
├── go.sum                  # Dependency checksums
├── .env.example            # Environment template
└── README.md

API-endpunkter

Boilerplate inkluderar följande förkonfigurerade endpunkter:
EndpunktMetodBeskrivning
/GETPrissättningssida med produktlista
/api/checkoutPOSTSkapa en ny checkout-session
/api/webhookPOSTHantera Dodo Payments webhooks
/api/customer-portalPOSTGenerera URL för kundportal

Anpassning

Uppdatera produktinformation

Redigera internal/lib/products.go för att modifiera:
  • Produkt-ID:n (från din Dodo-instrumentpanel)
  • Priser
  • Funktioner
  • Beskrivningar
var Products = []Product{
    {
        ProductID:   "pdt_001", // Replace with your product ID
        Name:        "Basic Plan",
        Description: "Get access to basic features and support",
        Price:       9999,
        Features: []string{
            "Access to basic features",
            "Email support",
            "1 Team member",
            "Basic analytics",
        },
    },
}

Förifyll kunddata

I templates/index.html, ersätt den hårdkodade kunddatan med dina faktiska användardata:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "[email protected]"  // Replace with actual logged-in user's email
};
I en produktionsapp skulle du dynamiskt injicera dessa värden från ditt autentiseringssystem.

Webhook-händelser

Boilerplate demonstrerar hantering av webhook-händelser i internal/api/webhook.go. Stödda händelser inkluderar:
HändelseBeskrivning
subscription.activeUtlöses när en prenumeration blir aktiv
payment.succeededUtlöses när en betalning är framgångsrik
Lägg till din affärslogik inuti webhook-hanteraren för att:
  • 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:
ngrok http 8000
Uppdatera webhook-URL:en i din Dodo Payments Dashboard:
https://your-ngrok-url.ngrok.io/api/webhook

Distribution

Bygg för produktion

make build
Eller manuellt:
go build -o bin/server cmd/server/main.go
./bin/server

Distribuera till Vercel

[ Distribuera med Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate)

Docker

Skapa en Dockerfile:
FROM golang:1.21-alpine AS builder

WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go build -o bin/server cmd/server/main.go

FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/bin/server .
COPY --from=builder /app/templates ./templates

EXPOSE 8000
CMD ["./server"]
Bygg och kör:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Produktionsöverväganden

Innan du distribuerar till produktion:
  • Byt DODO_PAYMENTS_ENVIRONMENT till live_mode
  • Använd produktions-API-nycklar från instrumentpanelen
  • Uppdatera webhook-URL:en till din produktionsdomän
  • Aktivera HTTPS för alla endpunkter

Felsökning

Se till att Go-moduler är korrekt nedladdade:
go mod tidy
go mod download
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
För lokal testning, använd ngrok för att exponera din server:
ngrok http 8000
Uppdatera webhook-URL:en i din Dodo-instrumentpanel till ngrok-URL:en. Se till att uppdatera din .env fil med den korrekta webhook-verifieringsnyckeln.
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

Support

Behöver du hjälp med boilerplate?