@dodopayments/fastify adaptor は Fastify アプリに 3 つの route handler を提供します。Checkout はチェックアウト URL を返し、CustomerPortal は顧客を Customer Portal に移動させ、Webhooks は Webhook リクエストを検証してイベントハンドラーを呼び出します。
Checkout Handler
Fastify アプリから payment link と checkout session を作成します。
Customer Portal
顧客がサブスクリプションと詳細情報を管理できるようにします。
Webhooks
Dodo Payments の Webhook イベントを検証して処理します。
インストール
1
Install the Package
プロジェクトのルートで次のコマンドを実行します。このパッケージには Fastify 5.4.0 以降が必要です。
2
Set Up Environment Variables
プロジェクトのルートに Developer → API Keys で API key を作成します。Developer → Webhooks で Webhook endpoint を追加し、その signing secret を
.env ファイルを作成します。DODO_PAYMENTS_WEBHOOK_KEY にコピーします。構築中は DODO_PAYMENTS_ENVIRONMENT=test_mode を指定した test mode API key を使用してください。test mode key は test mode に対してのみ機能します。DODO_PAYMENTS_RETURN_URL は任意です。Route Handler の例
この例では、
Fastify() で作成した Fastify instance に route を登録します。Webhook route では raw request body が必要なため、Webhook route だけを含む plugin 内に string body parser を追加しています。- Checkout Handler
- Customer Portal Handler
- Webhook Handler
この handler を使用して、Dodo Payments の checkout を Fastify アプリに統合します。static (GET)、dynamic (POST)、session (POST) の payment flow に対応しています。
Checkout() は static flow では getHandler を、dynamic および session flow では postHandler を返します。各 POST flow はそれぞれ独自の path に登録してください。Checkout Route Handler
この adaptor は Dodo Payments の 3 つすべての checkout flow に対応しています。handler config の
type を設定して、route が提供する flow を選択します。すべての flow は、顧客が開く checkout_url を含む JSON を返します。- Static Payment Links:
type: "static"、GET。query parameters から 1 つの product 用の payment link を作成し、product が存在することを確認します。 - Dynamic Payment Links:
type: "dynamic"、POST。product が recurring かどうかに応じて、payment link を使用した one-time payment または subscription を作成します。 - Checkout Sessions:
type: "session"、POST。product cart と顧客情報から checkout session を作成します。新しい integration ではこの flow を使用してください。
Checkout は次の options を受け取ります。
Checkout は 2 つの handler を持つ object を返します。type が static の場合は GET に getHandler を登録し、type が dynamic または session の場合は POST に postHandler を登録します。
Static Checkout (GET)
Static Checkout (GET)
対応している Query Parameters
請求額を major currency unit で固定します。例:$12.50 の場合は
12.5。Pay What You Want product でのみ機能し、product の最低価格を下回る場合は無視されます。true で、対応する field に値がある場合にのみ有効になります。例:disableEmail を指定した email。handler はこれらの parameters を static payment link に渡します。Response Format
Static checkout は checkout URL を含む JSON response を返します。Dynamic Checkout (POST)
Dynamic Checkout (POST)
- POST request の JSON body として parameters を送信します。
- one-time payment と recurring payment の両方に対応します。handler は product を取得し、product が recurring の場合は subscription、それ以外の場合は one-time payment を作成します。
- body には
street、city、state、country、zipcodeを含むbillingとcustomerが必要です。さらに、任意のquantityを含むproduct_idまたはproduct_cartも必要です。subscription にはproduct_idが必要です。 - handler は
metadata、allowed_payment_method_types、billing_currency、discount_codes(非推奨のdiscount_codeも可)、return_url、show_saved_payment_methods、tax_idも転送します。subscription の場合はaddons、on_demand、trial_period_daysも転送します。それ以外の fields は無視します。 - field の詳細については、次を参照してください。
Response Format
Dynamic checkout は payment link を checkout URL として含む JSON response を返します。Checkout Sessions (POST)
Checkout Sessions (POST)
checkout session payload を JSON body として送信します。handler は checkout session を作成します。この session は one-time purchase と subscription の完全な payment flow を処理し、その
checkout_url を返します。product_cart は必須で、少なくとも 1 つの product を含める必要があります。各 checkout_url は一度だけ使用でき、24 時間後に期限切れになります。confirm: true を渡した場合は 15 分後に期限切れになります。payment_method_id で作成された session は checkout_url を返さないため、handler は 400 を返します。詳細と対応している fields の完全な一覧については、Checkout Sessions Integration Guide を参照してください。Response Format
Checkout sessions は checkout URL を含む JSON response を返します。Customer Portal Route Handler
Customer Portal Route Handler は、customer_id の顧客向けに Customer Portal session を作成し、request を portal link にリダイレクトします。CustomerPortal は Checkout と同じく、bearerToken と environment options を受け取ります。Dodo Payments が session を作成できない場合、handler は 500 を返します。
Query Parameters
Webhook Route Handler
Webhook handler はwebhookKey として渡された webhook secret を使用して各 request を検証し、その後イベントハンドラーを呼び出します。
- Method: POST request のみ対応しています。その他の methods は 405 を返します。
- Signature Verification:
webhookKeyを使用し、Standard Webhooks specification に従ってwebhook-id、webhook-timestamp、webhook-signatureheaders を検証します。検証に失敗すると 401 を返します。 - Payload Validation: Zod で検証します。無効な payload の場合は 400 を返します。
- Error Handling:
- 401: 無効な signature
- 400: 無効な payload
- 500: 検証中の internal error
- Event Routing: すべての event に対して
onPayloadを呼び出し、その後 event の type に対応する handler を呼び出し、完了すると 200 を返します。handler は event handler が throw した errors を catch しません。