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

GitHub Repository

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

クイックセットアップ

1. 前提条件

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

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

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

4. 初期環境変数の設定

注意: 配備後に webhook URL を取得したら DODO_PAYMENTS_WEBHOOK_KEY を設定します。

5. 初期化とデプロイ

6. Webhook URLの取得

あなたのWebhook URLは:

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

  1. DodoPayments Dashboard → Developer → Webhooks に移動します
  2. 新しい webhook エンドポイントを作成します
  3. エンドポイントとして webhook URL を構成します
  4. 次のサブスクリプションイベントを有効にします:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Signing Secret をコピーします

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

何をするか

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

主な機能

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

設定ファイル

データベーススキーマ

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

実装コード

仕組み

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

テスト

ローカル開発:
Netlify ダッシュボードでログを表示:
  1. サイトを選択 → Functions タブ
  2. webhook 関数をクリック
  3. リアルタイムログと呼び出し履歴を表示
DodoPaymentsダッシュボードで設定:
  1. 開発者 → Webhooksに移動
  2. Netlify FunctionsのURLでエンドポイントを追加
  3. 有効にする:subscription.active、subscription.cancelled、subscription.renewed

一般的な問題

リソース

最終更新日 2026年5月22日