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

GitHub Repository

完全なソースコードとセットアップガイド

クイックセットアップ

1. 前提条件

2. 依存関係のインストール

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

  1. Neon にサインアップ
  2. 新しいプロジェクトを作成
  3. SQL エディタを開く
  4. schema.sql の内容をコピーして貼り付け
  5. クエリを実行
  6. Neon の Connection Details から接続文字列を取得

4. 初期環境変数の設定

Vercel CLIを使用して:
Note: ウェブフック URL を取得したら、デプロイ後に DODO_PAYMENTS_WEBHOOK_KEY を設定します。

5. デプロイ

6. Webhook URLの取得

あなたのWebhook URLは:

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

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

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

何をするか

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

主な機能

Signature verification - dodopayments ライブラリを使用
Idempotency - ウェブフック ID で重複処理を防止
Event logging - webhook_events テーブルで完全な監査証跡
Error handling - ログ記録され、再試行可能
Note: この実装では、3 つの主要なサブスクリプションイベント (subscription.activesubscription.cancelledsubscription.renewed) を最小限のフィールドで処理する方法を示しています。要件に応じて追加のイベントタイプやフィールドを容易に拡張できます。

設定ファイル

データベーススキーマ

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

実装コード

仕組み

ウェブフックハンドラー:
  1. ボディパースを無効化 - 署名検証のために生のボディにアクセス
  2. 署名を検証 - HMAC-SHA256 を使ってリクエストが DodoPayments からのものであることを確認
  3. 重複を確認 - 同じイベントを二重処理しないようにウェブフック ID を使用
  4. イベントを記録 - 監査証跡のため webhook_events テーブルに生のウェブフックを保存
  5. イベントを処理 - Neon で顧客とサブスクリプションを作成または更新
  6. エラー処理 - 失敗を記録し、再試行のために未処理としてマーク

テスト

ローカル開発:
Vercelダッシュボードでログを表示:
  1. プロジェクトを選択
  2. デプロイメント → 最新のデプロイメントに移動
  3. FunctionsLogsをクリック
DodoPaymentsダッシュボードで設定:
  1. 開発者 → Webhooksに移動
  2. Vercel Functions URLでエンドポイントを追加
  3. 有効にする: subscription.active, subscription.cancelled, subscription.renewed

一般的な問題

リソース

最終更新日 2026年5月22日