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 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を処理し、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

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

Implementation Code

動作の仕組み

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

Testing

Local development:
Netlifyダッシュボードでlogsを表示:
  1. siteを選択し、Functions に移動します。
  2. webhook functionをクリックします。
  3. リアルタイムのlogsとinvocation historyを表示します。
Dodo Paymentsダッシュボードで設定:
  1. Developer → Webhooks に移動します。
  2. Netlify Functions URLを使用してendpointを追加します。
  3. subscription.active、subscription.cancelled、subscription.renewedを選択します。

よくある問題

Resources

最終更新日 2026年9月26日