Skip to main content

GitHub Repository

完全なソースコードとセットアップガイド
Dodo Payments Supabase Subscription Starterをご覧ください。認証、決済、webhooksを備えた、Next.js、Supabase、Dodo Payments用の完全なボイラープレートです。

クイックセットアップ

1. 前提条件

以下が必要です:
  • プロジェクトを作成済みのSupabaseアカウント
  • ダッシュボードのDeveloper → API Keysから取得したDodo Payments API key

2. 認証とリンク

SupabaseダッシュボードのProject Settingsでプロジェクトのrefを確認します。

3. Database Setup

  1. Supabaseダッシュボードに移動します。
  2. SQL Editorを開きます。
  3. schema.sqlの内容全体をコピーして実行します。

4. 初期Secretの設定

Supabaseは実行時にSUPABASE_URLとSUPABASE_SERVICE_ROLE_KEYを自動的に提供します。
webhook URLを取得したら、デプロイ後にDODO_PAYMENTS_WEBHOOK_KEYを設定します。

5. デプロイ

このfunctionはすでにfunctions/webhook/index.tsに設定されています。

6. Webhook URLの取得

Webhook URLは次のとおりです:

7. DodoPayments DashboardでのWebhook登録

  1. Dodo PaymentsダッシュボードでDeveloper → Webhooksに移動します。
  2. Add endpointをクリックします。
  3. webhook URLを入力します。
  4. 次のeventsを選択します: subscription.active、subscription.cancelled、subscription.renewed。
  5. Create endpointをクリックし、signing secretをコピーします。

8. Webhook Keyの設定と再デプロイ

概要

webhook handlerはsubscription eventsを処理し、Supabase PostgreSQLに保存します:
  • subscription.active — customerとsubscriptionのrecordを作成または更新します
  • subscription.cancelled — subscriptionをcancelledとしてマークします
  • subscription.renewed — 次回のbilling dateを更新します

主な機能

  • Signature verification — Dodo Payments SDKを使用してwebhookの真正性を検証します
  • Idempotency — webhook-id headerを使用して重複処理を防止します
  • Event logging — 監査証跡のため、すべてのeventをwebhook_events tableに保存します
  • Error handling — 失敗をログに記録し、eventをretry対象としてマークします
この例では、最小限のfieldで3つの主要なsubscription eventsを処理します。必要に応じて、追加のevent typesやfieldsに対応するよう拡張できます。

Configuration Files

Database Schema

作成されるTable:
  • customers — Email、name、Dodo Payments customer ID
  • subscriptions — Status、amount、次回のbilling date、customerへのリンク
  • webhook_events — idempotency用のwebhook IDを含むevent log

Implementation Code

仕組み

DenoベースのEdge Functionは次の処理を行います:
  1. Signatureを検証する — Dodo Payments SDKを使用してHMAC-SHA256 verificationを行います
  2. 重複を確認する — webhook-id headerを使用して重複処理を防止します
  3. eventをログに記録する — raw webhook dataをwebhook_events tableに保存します
  4. 更新を処理する — Supabase clientを介してcustomerとsubscriptionを作成または更新します
  5. エラーを処理する — 失敗をログに記録し、eventをretry対象としてマークします

Testing

Local development:
webhookにはJWT tokensが含まれないため、--no-verify-jwt flagが必要です。Securityはwebhook signature verificationによって提供されます。
ログの表示:
または、SupabaseダッシュボードでEdge Functions → webhook → Logsの順に移動します。 Dodo Paymentsダッシュボードでの設定:
  1. Developer → Webhooksに移動します。
  2. Supabase URLを使用してendpointを追加します。
  3. subscription.active、subscription.cancelled、subscription.renewedを選択します。

よくある問題

リソース

最終更新日 2026年9月26日