Langsung ke konten utama

GitHub Repository

Boilerplate Minimal Go + Dodo Payments

Ikhtisar

Boilerplate Go menyediakan titik awal yang siap produksi untuk mengintegrasikan Dodo Payments dengan backend Go Anda. Template ini mencakup penanganan sesi checkout, verifikasi webhook, integrasi portal pelanggan, dan mengikuti praktik terbaik Go untuk membantu Anda mulai menerima pembayaran dengan cepat.
Boilerplate ini menggunakan Go 1.21+ dengan pola arsitektur bersih (cmd, internal, templates), template HTML, dan SDK dodopayments-go untuk integrasi API yang mulus.

Fitur

  • Quick Setup - Mulai dalam waktu kurang dari 5 menit
  • Payment Integration - Alur checkout yang sudah dikonfigurasi menggunakan SDK dodopayments-go
  • Modern UI - Halaman harga bertema gelap yang bersih dengan template HTML
  • Webhook Handling - Verifikasi dan proses event pembayaran dengan aman
  • Customer Portal - Manajemen langganan swalayan
  • Go Best Practices - Arsitektur bersih dengan cmd, internal, dan templates
  • Pre-filled Checkout - Menunjukkan cara meneruskan data pelanggan untuk meningkatkan UX

Prasyarat

Sebelum Anda mulai, pastikan Anda memiliki:
  • Go 1.21+
  • Akun Dodo Payments (untuk mengakses API dan Kunci Webhook dari dasbor)

Memulai dengan Cepat

1

Clone the Repository

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

Install Dependencies

make install
Atau secara manual:
go mod download
3

Get API Credentials

Daftar di Dodo Payments dan dapatkan kredensial Anda dari dashboard:
Pastikan Anda berada dalam Test Mode saat mengembangkan!
4

Configure Environment Variables

Buat file .env di direktori root:
cp .env.example .env
Perbarui nilai dengan kredensial Dodo Payments Anda:
.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
Jangan pernah meng-commit file .env ke kontrol versi. File tersebut sudah termasuk dalam .gitignore.
5

Add Your Products

Perbarui internal/lib/products.go dengan ID produk Anda yang sesungguhnya dari 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
Atau secara manual:
go run cmd/server/main.go
Buka http://localhost:8000 untuk melihat halaman harga Anda!
Anda akan melihat halaman harga bertema gelap dengan produk Anda siap dibeli.

Struktur Proyek

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

Endpoint API

Boilerplate ini mencakup endpoint yang sudah dikonfigurasi sebagai berikut:
EndpointMethodDeskripsi
/GETHalaman harga dengan daftar produk
/api/checkoutPOSTMembuat sesi checkout baru
/api/webhookPOSTMenangani webhook Dodo Payments
/api/customer-portalPOSTMenghasilkan URL portal pelanggan

Kustomisasi

Perbarui Informasi Produk

Edit internal/lib/products.go untuk mengubah:
  • ID Produk (dari dashboard Dodo Anda)
  • Harga
  • Fitur
  • Deskripsi
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",
        },
    },
}

Praisi Data Pelanggan

Di templates/index.html, ganti data pelanggan yang di-hardcode dengan data pengguna Anda yang sebenarnya:
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
};
Dalam aplikasi produksi, Anda akan menyuntikkan nilai-nilai ini secara dinamis dari sistem otentikasi Anda.

Peristiwa Webhook

Boilerplate ini menunjukkan penanganan event webhook di internal/api/webhook.go. Event yang didukung mencakup:
EventDeskripsi
subscription.activeDipicu saat langganan menjadi aktif
payment.succeededDipicu saat pembayaran berhasil
Tambahkan logika bisnis Anda di dalam penangan webhook untuk:
  • Memperbarui izin pengguna di database Anda
  • Mengirim email konfirmasi
  • Menyediakan akses ke produk digital
  • Melacak analitik dan metrik

Menguji Webhook Secara Lokal

Untuk pengembangan lokal, gunakan alat seperti ngrok untuk mengekspos server lokal Anda:
ngrok http 8000
Perbarui URL webhook di Dasbor Dodo Payments Anda:
https://your-ngrok-url.ngrok.io/api/webhook

Penyebaran

Bangun untuk Produksi

make build
Atau secara manual:
go build -o bin/server cmd/server/main.go
./bin/server

Deploy ke Vercel

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

Docker

Buat 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"]
Bangun dan jalankan:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Pertimbangan Produksi

Sebelum menerapkan ke produksi:
  • Ubah DODO_PAYMENTS_ENVIRONMENT menjadi live_mode
  • Gunakan kunci API produksi dari dashboard
  • Perbarui URL webhook ke domain produksi Anda
  • Aktifkan HTTPS untuk semua endpoint

Pemecahan Masalah

Pastikan modul Go telah diunduh dengan benar:
go mod tidy
go mod download
Penyebab umum:
  • ID produk tidak valid - verifikasi bahwa ID tersebut ada di dashboard Dodo Anda
  • Kunci API atau pengaturan lingkungan yang salah di .env
  • Periksa log server untuk pesan kesalahan yang lebih rinci
Untuk pengujian lokal, gunakan ngrok untuk mengekspos server Anda:
ngrok http 8000
Perbarui URL webhook di dashboard Dodo Anda ke URL ngrok. Pastikan memperbarui file .env dengan kunci verifikasi webhook yang benar.
Pastikan Anda menjalankan server dari direktori root proyek, atau path template telah dikonfigurasi dengan benar dalam kode Anda.

Pelajari Lebih Lanjut

Dukungan

Butuh bantuan dengan boilerplate?