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

GitHubリポジトリ

最小限のGo + Dodo Paymentsボイラープレート

概要

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

特徴

  • クイックセットアップ - 5分以内で始められます
  • 支払い統合 - dodopayments-go SDKを使用した事前設定されたチェックアウトフロー
  • モダンUI - HTMLテンプレートを使用したクリーンでダークテーマの価格ページ
  • Webhook処理 - 支払いイベントを安全に検証および処理
  • 顧客ポータル - 自己管理型のサブスクリプション管理
  • Goのベストプラクティス - cmdinternal、およびtemplatesを使用したクリーンアーキテクチャ
  • 事前入力されたチェックアウト - UXを向上させるために顧客データを渡すデモ

前提条件

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

クイックスタート

1

リポジトリをクローン

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

依存関係をインストール

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

API資格情報を取得

Dodo Paymentsにサインアップし、ダッシュボードから資格情報を取得します:
開発中はテストモードにいることを確認してください!
4

環境変数を設定

ルートディレクトリに.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

製品を追加

internal/lib/products.goをDodo Paymentsからの実際の製品IDで更新します:
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

開発サーバーを実行

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: "[email protected]"  // 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をダッシュボードでngrokのURLに更新します。正しいWebhook検証キーで.envファイルを更新することを忘れないでください。
プロジェクトのルートディレクトリからサーバーを実行しているか、コード内でテンプレートパスが正しく設定されていることを確認してください。

詳細を学ぶ

サポート

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