Langsung ke konten utama

Repositori GitHub

Boilerplate Go + Dodo Payments minimal

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

  • Pengaturan Cepat - Mulai dalam waktu kurang dari 5 menit
  • Integrasi Pembayaran - Alur checkout yang sudah dikonfigurasi menggunakan SDK dodopayments-go
  • UI Modern - Halaman harga bertema gelap yang bersih dengan template HTML
  • Penanganan Webhook - Verifikasi dan proses peristiwa pembayaran dengan aman
  • Portal Pelanggan - Manajemen langganan mandiri
  • Praktik Terbaik Go - Arsitektur bersih dengan cmd, internal, dan templates
  • Checkout Praisi - Menunjukkan pengiriman 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

Kloning Repositori

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

Instal Dependensi

make install
Atau secara manual:
go mod download
3

Dapatkan Kredensial API

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

Konfigurasi Variabel Lingkungan

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 mengkomit file .env Anda ke kontrol versi. Ini sudah termasuk dalam .gitignore.
5

Tambahkan Produk Anda

Perbarui internal/lib/products.go dengan ID produk aktual Anda 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

Jalankan Server Pengembangan

make run
Atau secara manual:
go run cmd/server/main.go
Buka http://localhost:8000 untuk melihat halaman harga Anda!
Anda seharusnya melihat halaman harga bertema gelap dengan produk Anda siap untuk 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:
EndpointMetodeDeskripsi
/GETHalaman harga dengan daftar produk
/api/checkoutPOSTBuat sesi checkout baru
/api/webhookPOSTTangani webhook Dodo Payments
/api/customer-portalPOSTHasilkan URL portal pelanggan

Kustomisasi

Perbarui Informasi Produk

Edit internal/lib/products.go untuk memodifikasi:
  • ID Produk (dari dasbor 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 dikodekan dengan data pengguna Anda yang sebenarnya:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "[email protected]"  // 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 peristiwa webhook di internal/api/webhook.go. Peristiwa yang didukung meliputi:
PeristiwaDeskripsi
subscription.activeDipicu ketika langganan menjadi aktif
payment.succeededDipicu ketika 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 menyebarkan ke produksi:
  • Alihkan DODO_PAYMENTS_ENVIRONMENT ke live_mode
  • Gunakan kunci API produksi dari dasbor
  • Perbarui URL webhook ke domain produksi Anda
  • Aktifkan HTTPS untuk semua endpoint

Pemecahan Masalah

Pastikan modul Go diunduh dengan benar:
go mod tidy
go mod download
Penyebab umum:
  • ID produk tidak valid - verifikasi bahwa itu ada di dasbor 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 dasbor Dodo Anda ke URL ngrok. Pastikan untuk memperbarui file .env Anda dengan kunci verifikasi webhook yang benar.
Pastikan Anda menjalankan server dari direktori root proyek, atau bahwa jalur template dikonfigurasi dengan benar dalam kode Anda.

Pelajari Lebih Lanjut

Dukungan

Butuh bantuan dengan boilerplate?