メインコンテンツへスキップ

GitHub Repository

Minimal Go + Dodo Payments ボイラープレート

概要

Goボイラープレートは、Dodo PaymentsをGoバックエンドに統合するための生産準備が整った出発点を提供します。このテンプレートには、チェックアウトセッションの処理、Webhookの検証、顧客ポータルの統合が含まれており、迅速に支払いを受け入れるためのGoのベストプラクティスに従っています。
このボイラープレートは Go 1.21+ をクリーンアーキテクチャのパターン(cmdinternaltemplates)、HTML テンプレート、および dodopayments-go SDK を使用してシームレスな API 統合を実現します。

特徴

  • Quick Setup - 5分以内で開始できます
  • Payment Integration - dodopayments-go SDK を使った事前構成済みのチェックアウトフロー
  • Modern UI - HTML テンプレートによるクリーンでダークテーマの価格ページ
  • Webhook Handling - 支払いイベントを安全に検証および処理
  • Customer Portal - セルフサービスのサブスクリプション管理
  • Go Best Practices - cmdinternal、および templates を取り入れたクリーンアーキテクチャ
  • Pre-filled Checkout - 顧客データを渡して UX を向上させる例

前提条件

始める前に、次のものを用意してください:
  • Go 1.21+
  • Dodo Paymentsアカウント(ダッシュボードからAPIおよびWebhookキーにアクセスするため)

クイックスタート

1

Clone the Repository

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

Install Dependencies

make install
または手動で:
go mod download
3

Get API Credentials

Dodo Payments にサインアップし、ダッシュボードから認証情報を取得してください:
開発中は必ず Test Mode にしてください!
4

Configure Environment Variables

ルートディレクトリに .env ファイルを作成してください:
cp .env.example .env
Dodo Paymentsの資格情報で値を更新します:
.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
.env ファイルをバージョン管理にコミットしないでください。すでに .gitignore に含まれています。
5

Add Your Products

Dodo Payments から取得した実際のプロダクト ID で internal/lib/products.go を更新してください:
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
または手動で:
go run cmd/server/main.go
http://localhost:8000を開いて、価格ページを確認してください!
ダークテーマの価格ページが表示され、購入可能な商品が準備されているはずです。

プロジェクト構造

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エンドポイント

ボイラープレートには、次の事前設定されたエンドポイントが含まれています:
エンドポイントメソッド説明
/GET商品一覧付きの価格ページ
/api/checkoutPOST新しいチェックアウトセッションを作成
/api/webhookPOSTDodo Payments のWebhookを処理
/api/customer-portalPOSTカスタマーポータルのURLを生成

カスタマイズ

製品情報の更新

internal/lib/products.go を編集して変更できます:
  • 商品 ID(Dodo ダッシュボードから取得)
  • 価格設定
  • 機能
  • 説明
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",
        },
    },
}

顧客データの事前入力

templates/index.html 内のハードコードされた顧客データを実際のユーザーデータに置き換えてください:
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
};
本番アプリでは、これらの値を認証システムから動的に注入します。

Webhookイベント

このボイラープレートでは internal/api/webhook.go でWebhookイベントを処理する方法を示しています。サポートされているイベントは以下の通りです:
イベント説明
subscription.activeサブスクリプションがアクティブになったときにトリガーされる
payment.succeeded支払いが成功したときにトリガーされる
Webhookハンドラー内にビジネスロジックを追加して:
  • データベース内のユーザー権限を更新
  • 確認メールを送信
  • デジタル製品へのアクセスを提供
  • 分析とメトリクスを追跡

Webhookをローカルでテスト

ローカル開発には、ngrokのようなツールを使用してローカルサーバーを公開します:
ngrok http 8000
Webhook URLをダッシュボードで更新します:
https://your-ngrok-url.ngrok.io/api/webhook

デプロイメント

本番用にビルド

make build
または手動で:
go build -o bin/server cmd/server/main.go
./bin/server

Vercelにデプロイ

[ Vercelでデプロイ ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate)

Docker

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"]
ビルドして実行します:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

本番環境での考慮事項

本番環境にデプロイする前に:
  • DODO_PAYMENTS_ENVIRONMENTlive_mode に切り替える
  • ダッシュボードから本番用 API キーを使用
  • Webhook の URL を本番ドメインに更新
  • すべてのエンドポイントで HTTPS を有効化

トラブルシューティング

Go モジュールが正しくダウンロードされていることを確認:
go mod tidy
go mod download
よくある原因:
  • 無効な商品 ID - Dodo ダッシュボードに存在することを確認
  • .env に間違った API キーまたは環境設定
  • 詳細なエラーメッセージについてはサーバーログを確認
ローカルテストでは、ngrok を使ってサーバーを公開してください:
ngrok http 8000
Webhook の URL を Dodo ダッシュボード で ngrok の URL に更新してください。.env ファイルも正しい webhook 検証キーで更新することを忘れずに。
プロジェクトのルートディレクトリからサーバーを起動している、またはコード内でテンプレートのパスが正しく設定されていることを確認してください。

詳細を学ぶ

サポート

ボイラープレートに関して助けが必要ですか?