Skip to main content

GitHub Repository

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

クイックセットアップ

1. 前提条件

必要なもの:

2. Dependenciesのインストール

3. Databaseのセットアップ

  1. Neonにサインアップして、プロジェクトを作成します。
  2. SQL Editorを開きます。
  3. schema.sqlの全内容をコピーして実行します。
  4. Connection Details からconnection stringをコピーします。

4. 初期Environment Variablesの設定

デプロイ後、webhook URLを取得したら DODO_PAYMENTS_WEBHOOK_KEY を設定します。

5. デプロイ

6. Webhook URLの取得

あなたのWebhook URLは:

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

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

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

何をするか

webhook handlerはsubscription eventを処理し、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 eventを処理します。必要に応じて、追加のevent typeやfieldに対応するよう拡張できます。

設定ファイル

データベーススキーマ

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

実装コード

仕組み

webhook handlerは次の処理を行います:
  1. Body parsingを無効化 — signature verificationのためにraw bodyへアクセスできるようにします
  2. Signatureを検証 — Dodo Payments SDKを使用し、HMAC-SHA256でrequestを検証します
  3. 重複を確認 — webhook-id headerを使用して、同じeventが2回処理されるのを防ぎます
  4. Eventをログに記録 — 監査証跡のため、raw webhookを webhook_events tableに保存します
  5. Eventを処理 — Neonでcustomerとsubscriptionを作成または更新します
  6. エラーを処理 — 失敗をログに記録し、retryのためeventを未処理としてマークします

テスト

ローカル開発:
Vercelダッシュボードでログを表示する:
  1. プロジェクトを選択します。
  2. Deployments → 最新のdeploymentに移動します。
  3. Functions → Logs をクリックします。
Dodo Paymentsダッシュボードで設定する:
  1. Developer → Webhooks に移動します。
  2. Vercel Functions URLを使用してendpointを追加します。
  3. subscription.active、subscription.cancelled、subscription.renewedを選択します。

一般的な問題

リソース

最終更新日 2026年9月26日