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

GitHub Repository

完全なソースコードとセットアップガイド
Supabase 用の完全なスターターキットをチェック
Next.js、Supabase、Dodo Payments で構築された最小限のサブスクリプションスターターキットです。このボイラープレートを使えば、認証、支払い、Webhook を備えたサブスクリプション型 SaaS を迅速に構築できます。
Dodo Payments Supabase Subscription Starter

クイックセットアップ

1. 前提条件

2. 認証とリンク

Supabaseダッシュボードからプロジェクトリファレンスを取得 → プロジェクト設定

3. データベースセットアップ

  1. Supabase ダッシュボード にアクセス
  2. SQL エディタを開く
  3. 新しいクエリを作成
  4. schema.sql の内容をすべてコピーして貼り付け
  5. クエリを実行

4. 初期シークレットの設定

Supabase はランタイムで SUPABASE_URL および SUPABASE_SERVICE_ROLE_KEY を自動的に提供します。
注: Webhook URL を取得したあと、デプロイ後に DODO_PAYMENTS_WEBHOOK_KEY を設定します。

5. デプロイ

関数はすでに functions/webhook/index.ts に設定済みです - デプロイするだけです:

6. Webhook URLを取得

あなたのWebhook URLは:

7. DodoPaymentsダッシュボードでWebhookを登録

  1. DodoPayments ダッシュボード → Developer → Webhooks にアクセス
  2. 新しい Webhook エンドポイントを作成
  3. Webhook URL をエンドポイントとして設定
  4. 以下のサブスクリプションイベントを有効化:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Signing Secret をコピー

8. Webhookキーを設定して再デプロイ

何をするか

サブスクリプションイベントを処理し、Supabase PostgreSQLに保存します:
  • subscription.active - 顧客とサブスクリプションのレコードを作成/更新
  • subscription.cancelled - サブスクリプションをキャンセルとしてマーク
  • subscription.renewed - 次の請求日を更新

主な機能

署名検証 - dodopayments ライブラリを使用
冪等性 - Webhook ID による重複処理防止
イベントログ - webhook_events テーブルで完全な監査履歴
エラーハンドリング - ログ記録され再試行可能
注: この実装では 3 つの主要なサブスクリプションイベント (subscription.activesubscription.cancelledsubscription.renewed) の最小フィールドでの処理を示しています。要件に応じて追加のイベントタイプやフィールドを簡単に拡張できます。

設定ファイル

データベーススキーマ

作成されたテーブル:
  • customers - メール、名前、dodo_customer_id
  • subscriptions - ステータス、金額、次の請求日、顧客にリンク
  • webhook_events - 冪等性のためのwebhook_idを持つイベントログ

実装コード

仕組み

Deno ベースの Edge Function:
  1. 署名を検証 - HMAC-SHA256 検証に dodopayments ライブラリを使用
  2. 冪等性を確認 - Webhook ID を照会して重複処理を防止
  3. イベントをログ - 生の Webhook データを webhook_events テーブルに保存
  4. 更新を処理 - Supabase クライアントを通じて顧客とサブスクリプションを作成または更新
  5. エラーを処理 - 失敗をログに記録し再試行対象としてマーク

テスト

ローカル開発:
--no-verify-jwt フラグは Webhook に JWT トークンが含まれないため必要です。セキュリティは Webhook の署名検証によって提供されます。
ログを表示:
またはSupabaseダッシュボード → Edge Functions → webhook → ログタブで DodoPaymentsダッシュボードで設定:
  1. 開発者 → Webhooksに移動
  2. Supabase URLでエンドポイントを追加
  3. 有効にする: subscription.active, subscription.cancelled, subscription.renewed

一般的な問題

リソース

最終更新日 2026年5月22日