> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Go Boilerplate

> Dodo PaymentsをGoバックエンドアプリケーションに統合するための最小限のGoボイラープレートで迅速に始めましょう

<Card title="GitHub Repository" icon="github" href="https://github.com/dodopayments/go-boilerplate">
  Minimal Go + Dodo Payments ボイラープレート
</Card>

## 概要

Goボイラープレートは、Dodo PaymentsをGoバックエンドに統合するための生産準備が整った出発点を提供します。このテンプレートには、チェックアウトセッションの処理、Webhookの検証、顧客ポータルの統合が含まれており、迅速に支払いを受け入れるためのGoのベストプラクティスに従っています。

<Info>
  このボイラープレートは Go 1.21+ をクリーンアーキテクチャのパターン（`cmd`、`internal`、`templates`）、HTML テンプレート、および `dodopayments-go` SDK を使用してシームレスな API 統合を実現します。
</Info>

### 特徴

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

## 前提条件

始める前に、次のものを用意してください：

* **Go 1.21+**
* **Dodo Paymentsアカウント**（ダッシュボードからAPIおよびWebhookキーにアクセスするため）

## クイックスタート

<Steps>
  <Step title="Clone the Repository">
    ```bash theme={null}
    git clone https://github.com/dodopayments/go-boilerplate.git
    cd go-boilerplate
    ```
  </Step>

  <Step title="Install Dependencies">
    ```bash theme={null}
    make install
    ```

    または手動で：

    ```bash theme={null}
    go mod download
    ```
  </Step>

  <Step title="Get API Credentials">
    [Dodo Payments](https://dodopayments.com/) にサインアップし、ダッシュボードから認証情報を取得してください:

    * **APIキー:** [ダッシュボード → 開発者 → APIキー](https://app.dodopayments.com/developer/api-keys)
    * **Webhookキー:** [ダッシュボード → 開発者 → Webhooks](https://app.dodopayments.com/developer/webhooks)

    <Tip>
      開発中は必ず **Test Mode** にしてください!
    </Tip>
  </Step>

  <Step title="Configure Environment Variables">
    ルートディレクトリに `.env` ファイルを作成してください:

    ```bash theme={null}
    cp .env.example .env
    ```

    Dodo Paymentsの資格情報で値を更新します：

    ```bash .env theme={null}
    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
    ```

    <Warning>
      `.env` ファイルをバージョン管理にコミットしないでください。すでに `.gitignore` に含まれています。
    </Warning>
  </Step>

  <Step title="Add Your Products">
    Dodo Payments から取得した実際のプロダクト ID で `internal/lib/products.go` を更新してください:

    ```go theme={null}
    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
    }
    ```
  </Step>

  <Step title="Run the Development Server">
    ```bash theme={null}
    make run
    ```

    または手動で：

    ```bash theme={null}
    go run cmd/server/main.go
    ```

    [http://localhost:8000](http://localhost:8000)を開いて、価格ページを確認してください！

    <Check>
      ダークテーマの価格ページが表示され、購入可能な商品が準備されているはずです。
    </Check>
  </Step>
</Steps>

## プロジェクト構造

```text theme={null}
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/checkout`        | POST | 新しいチェックアウトセッションを作成        |
| `/api/webhook`         | POST | Dodo Payments のWebhookを処理 |
| `/api/customer-portal` | POST | カスタマーポータルのURLを生成          |

## カスタマイズ

### 製品情報の更新

`internal/lib/products.go` を編集して変更できます:

* 商品 ID（Dodo ダッシュボードから取得）
* 価格設定
* 機能
* 説明

```go theme={null}
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` 内のハードコードされた顧客データを実際のユーザーデータに置き換えてください:

```javascript theme={null}
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](https://ngrok.com/)のようなツールを使用してローカルサーバーを公開します：

```bash theme={null}
ngrok http 8000
```

Webhook URLを[ダッシュボード](https://app.dodopayments.com/developer/webhooks)で更新します：

```
https://your-ngrok-url.ngrok.io/api/webhook
```

## デプロイメント

### 本番用にビルド

```bash theme={null}
make build
```

または手動で：

```bash theme={null}
go build -o bin/server cmd/server/main.go
./bin/server
```

### Vercelにデプロイ

\[

![Vercelでデプロイ](https://vercel.com/button)

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

### Docker

`Dockerfile` を作成してください:

```dockerfile theme={null}
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"]
```

ビルドして実行します：

```bash theme={null}
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo
```

### 本番環境での考慮事項

<Warning>
  本番環境にデプロイする前に:

  * `DODO_PAYMENTS_ENVIRONMENT` を `live_mode` に切り替える
  * ダッシュボードから本番用 API キーを使用
  * Webhook の URL を本番ドメインに更新
  * すべてのエンドポイントで HTTPS を有効化
</Warning>

## トラブルシューティング

<AccordionGroup>
  <Accordion title="Build errors or missing dependencies">
    Go モジュールが正しくダウンロードされていることを確認:

    ```bash theme={null}
    go mod tidy
    go mod download
    ```
  </Accordion>

  <Accordion title="Checkout session creation fails">
    **よくある原因:**

    * 無効な商品 ID - Dodo ダッシュボードに存在することを確認
    * `.env` に間違った API キーまたは環境設定
    * 詳細なエラーメッセージについてはサーバーログを確認
  </Accordion>

  <Accordion title="Webhooks not receiving events">
    ローカルテストでは、[ngrok](https://ngrok.com) を使ってサーバーを公開してください:

    ```bash theme={null}
    ngrok http 8000
    ```

    Webhook の URL を [Dodo ダッシュボード](https://app.dodopayments.com/developer/webhooks) で ngrok の URL に更新してください。`.env` ファイルも正しい webhook 検証キーで更新することを忘れずに。
  </Accordion>

  <Accordion title="Templates not loading">
    プロジェクトのルートディレクトリからサーバーを起動している、またはコード内でテンプレートのパスが正しく設定されていることを確認してください。
  </Accordion>
</AccordionGroup>

## 詳細を学ぶ

<CardGroup cols={2}>
  <Card title="Go SDK" icon="golang" href="/developer-resources/sdks/go">
    Go SDK の完全なドキュメント
  </Card>

  <Card title="Webhooks Documentation" icon="webhook" href="/developer-resources/webhooks">
    すべての webhook イベントとベストプラクティスを学ぶ
  </Card>

  <Card title="Checkout Sessions" icon="credit-card" href="/developer-resources/checkout-session">
    チェックアウトセッション構成の詳細を確認
  </Card>

  <Card title="API Reference" icon="book" href="/api-reference/introduction">
    Dodo Payments API の完全ドキュメント
  </Card>
</CardGroup>

## サポート

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

* 質問や議論のために[Discordコミュニティ](https://discord.gg/bYqAp4ayYh)に参加してください
* 問題や更新については[GitHubリポジトリ](https://github.com/dodopayments/go-boilerplate)を確認してください
* サポートが必要な場合は[サポートチーム](mailto:support@dodopayments.com)に連絡してください
