Skip to main content

GitHub Repository

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

クイックセットアップ

1. 前提条件

必要なもの:

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

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

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

4. 初期シークレットの設定

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

5. wrangler.tomlの更新

wrangler.tomlを編集し、Worker名を設定します。

6. デプロイ

7. Webhook URLの取得

Webhook URLは次のとおりです。

8. DodoPayments DashboardでWebhookを登録

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

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

処理内容

Webhook handlerはsubscriptionイベントを処理し、PostgreSQLに保存します。
  • subscription.active — customerとsubscriptionのレコードを作成または更新します
  • subscription.cancelled — subscriptionをキャンセル済みにします
  • subscription.renewed — 次回請求日を更新します

主な機能

  • 署名検証 — Dodo Payments SDKを使用してWebhookの真正性を検証します
  • 冪等性 — webhook-id headerを使用して重複処理を防ぎます
  • イベントログ — 監査証跡のため、すべてのイベントをwebhook_events tableに保存します
  • エラーハンドリング — 失敗を記録し、イベントを再試行対象としてマークします
この例では、最小限のフィールドで3つの主要なsubscriptionイベントを処理します。必要に応じて、追加のイベントタイプやフィールドに対応するよう拡張できます。

設定ファイル

データベーススキーマ

作成されるテーブル:
  • customers — メールアドレス、名前、Dodo Payments customer ID
  • subscriptions — ステータス、金額、次回請求日、customerとの関連付け
  • webhook_events — 冪等性のためのWebhook IDを含むイベントログ

実装コード

動作の仕組み

Webhook handlerは次の処理を行います。
  1. 署名を検証する — Dodo Payments SDKを使用し、HMAC-SHA256でリクエストを検証します
  2. 重複を確認する — webhook-id headerを使用して、同じイベントが2回処理されるのを防ぎます
  3. イベントを記録する — 監査証跡のため、raw webhookをwebhook_events tableに保存します
  4. イベントを処理する — データベース内のcustomerとsubscriptionを作成または更新します
  5. エラーを処理する — 失敗を記録し、再試行できるようイベントを未処理としてマークします

テスト

ローカル開発:
Dodo Paymentsダッシュボードでの設定:
  1. Developer → Webhooks に移動します。
  2. Worker URLを使用してendpointを追加します。
  3. subscription.active、subscription.cancelled、subscription.renewedを選択します。

よくある問題

リソース

最終更新日 2026年9月26日