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.
Detta boilerplate använder Go 1.21+ med ren arkitektur (cmd, internal, templates), HTML-mallar och dodopayments-go SDK för sömlös API-integrering.

Funktioner

  • Snabb uppstart – Kom igång på under 5 minuter
  • Betalintegration – Förkonfigurerat checkout-flöde med dodopayments-go SDK
  • Modern UI – Ren, mörkprydd prislista med HTML-mallar
  • Webhook-hantering – Verifiera och bearbeta betalevents säkert
  • Kundportal – Självbetjäningshantering av prenumerationer
  • Go-bästa praxis – Ren arkitektur med cmd, internal och templates
  • Förifylld checkout – Visar hur du skickar kunddata för att förbättra UX

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

Clone the Repository

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

Install Dependencies

make install
Eller manuellt:
go mod download
3

Get API Credentials

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

Configure Environment Variables

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
Lägg aldrig till din .env-fil i versionskontrollen. Den ingår redan i .gitignore.
5

Add Your Products

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

Run the Development Server

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örkprydd prislista 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:
EndpointMethodDescription
/GETPricing page with product listing
/api/checkoutPOSTCreate a new checkout session
/api/webhookPOSTHandle Dodo Payments webhooks
/api/customer-portalPOSTGenerate customer portal URL

Anpassning

Uppdatera produktinformation

Redigera internal/lib/products.go för att ändra:
  • Produkt-ID:n (från din Dodo-instrumentpanel)
  • Prissättning
  • 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 de hårdkodade kunduppgifterna med dina faktiska användaruppgifter:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "john@example.com"  // 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

Boilerplaten visar hur webhook-events hanteras i internal/api/webhook.go. Stöd för följande events ingår:
EventDescription
subscription.activeTriggered when a subscription becomes active
payment.succeededTriggered when a payment is successful
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 endpoints

Felsökning

Se till att Go-moduler laddas ner korrekt:
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 rätt webhook-verifieringsnyckel.
Se till att du kör servern från projektets rotkatalog, eller att mallvägen är korrekt konfigurerad i din kod.

Lär dig mer

Support

Behöver du hjälp med boilerplate?