Skip to main content
@dodopayments/sveltekit パッケージは、SvelteKit アプリに 3 つのルートハンドラーを提供します。Checkout は checkout URL を返し、CustomerPortal は顧客を Customer Portal に移動し、Webhooks は webhook イベントを検証してコードにルーティングします。

Checkout Handler

SvelteKit アプリから checkout URL を作成します。

Customer Portal

顧客がサブスクリプションと詳細を管理できるようにします。

Webhooks

Dodo Payments webhook イベントを受信して検証します。

インストール

1

Install the Package

プロジェクトのルートで次のコマンドを実行します。
このパッケージは、peer dependency として SvelteKit 2(@sveltejs/kit 2.20.3 以降)および zod 3.25 以降を指定しています。
2

Set Up Environment Variables

プロジェクトのルートに .env ファイルを作成します。
Developer → API Keys で API key を作成します。Developer → Webhooks で webhook endpoint を追加し、その signing secret を DODO_PAYMENTS_WEBHOOK_KEY にコピーします。DODO_PAYMENTS_RETURN_URL は、checkout 後に顧客が移動する場所です。environment を渡さない場合、ハンドラーは live_mode を使用します。
.env ファイルや secrets を version control に commit しないでください。

ルートハンドラーの例

この例では、src/routes/api/ 配下にある SvelteKit の +server.ts endpoint を使用します。認証情報は $env/static/private から import します。この情報は SvelteKit によって client-side code から除外されます。
このハンドラーを使用して、Dodo Payments checkout を SvelteKit アプリに追加します。Checkout は、static checkout 用の GET ハンドラーと、checkout sessions 用、または type: "dynamic" を設定した場合の dynamic checkout 用の POST ハンドラーを返します。type: "static" で作成したハンドラー、または type を指定しないハンドラーから GET を export してください。session または dynamic ハンドラーの GET ハンドラーは 400 を返すためです。
dynamic checkout request は、type: "dynamic" で作成したハンドラーから POST が返される場合に機能します。例の route のように type: "session" を使用する場合は、checkout session request を送信します。

Checkout ルートハンドラー

checkout ハンドラーは、Dodo Payments で支払いを受ける次の 3 つの方法をすべてサポートします。
  • Static Payment Links: コードなしで支払いを受け付ける共有可能な URL です。
  • Dynamic Payment Links: カスタム詳細を指定して生成する payment link です。非推奨の endpoint を使用します。
  • Checkout Sessions: product cart、顧客詳細、カスタマイズオプションを備えた hosted checkout です。推奨される flow です。
Checkout は次の options を受け取ります。

サポートされている Query Parameters

string
必須
Product identifier。例: ?productId=pdt_nZuwz45WAs64n3l07zpQR。
integer
デフォルト:"1"
Product の数量です。
string
顧客のフルネームです。firstName または lastName が指定されている場合は無視されます。
string
顧客の名です。
string
顧客の姓です。
string
顧客の email address です。
string
顧客の国です。ISO 3166-1 alpha-2 code で指定します。
string
顧客の住所の行です。
string
顧客の市区町村です。
string
顧客の州または都道府県です。
string
顧客の ZIP code または postal code です。
boolean
true に設定すると、フルネームフィールドを無効にします。
boolean
true に設定すると、名フィールドを無効にします。
boolean
true に設定すると、姓フィールドを無効にします。
boolean
true に設定すると、email フィールドを無効にします。
boolean
true に設定すると、国フィールドを無効にします。
boolean
true に設定すると、住所の行フィールドを無効にします。
boolean
true に設定すると、市区町村フィールドを無効にします。
boolean
true に設定すると、州フィールドを無効にします。
boolean
true に設定すると、ZIP code フィールドを無効にします。
string
Payment currency。例: USD。
boolean
デフォルト:"true"
Currency selector を表示または非表示にします。
number
請求額を major currency units で固定します。例: $12.50 の場合は 12.5。Pay What You Want products でのみ機能し、product の最低価格を下回る場合は無視されます。
boolean
デフォルト:"true"
Discounts section を表示または非表示にします。
string
metadata_ で始まる query parameter は、metadata として渡されます。
ハンドラーは config の returnUrl を redirect_url として link に追加します。
productId がない場合、ハンドラーは 400 response を返します。無効な query parameters や存在しない product IDs も 400 を返します。

Response Format

Static checkout は checkout URL を含む JSON response を返します。test mode では、URL に test.checkout.dodopayments.com が使用されます。
Dynamic checkout は、非推奨の POST /payments および POST /subscriptions endpoint の proxy です。既存の integration では引き続き機能しますが、新しい integration では checkout sessions を使用してください。

Response Format

Dynamic checkout は、checkout URL を含む JSON response を返します。
Checkout sessions は、one-time purchases と subscriptions 向けに、カスタマイズを完全に制御できる hosted checkout を作成します。product_cart のみが必須 field です。body に return_url がない場合、ハンドラーは config の returnUrl を使用します。詳細およびサポートされているすべての field については、Checkout Sessions Integration Guide を参照してください。payment_method_id で作成した session は checkout URL を返さないため、ハンドラーは 400 を返します。保存済みの payment method に請求するには、代わりに SDK で session を作成してください。

Response Format

Checkout sessions は、checkout URL を含む JSON response を返します。

Customer Portal ルートハンドラー

Customer Portal ルートハンドラーは、指定された顧客の Customer Portal session を作成し、302 response でブラウザーをそこへリダイレクトします。
ハンドラーは、誰が呼び出しているかを確認しません。customer ID を指定してリクエストしたユーザーには、その顧客の portal が表示されます。独自の authentication で route を保護し、サインイン中のユーザーの customer ID のみを渡してください。

Query Parameters

string
必須
portal session の customer ID。例: ?customer_id=cus_123。
boolean
true に設定すると、Dodo Payments は顧客に portal link も email で送信します。
customer_id がない場合は 400、portal session を作成できない場合は 500 を返します。

Webhook ルートハンドラー

webhook ルートハンドラーは、コードを実行する前に各 request を検証します。
  • Method: POST request のみがサポートされます。その他の method は 405 を返します。
  • Signature Verification: raw request body と webhook-id、webhook-timestamp、webhook-signature headers を webhookKey で検証します。Standard Webhooks specification に従います。検証に失敗すると 401 を返します。
  • Payload Validation: payload を Zod で検証します。無効な payload の場合は 400 を返します。
  • Error Handling:
    • 401: 無効な signature
    • 400: 無効な payload
    • 500: 検証中の内部エラー
  • Event Routing: すべての event に対して onPayload を呼び出し、その後 event の type に対応する handler を呼び出して 200 を返します。
adaptor は、handler で throw された errors を catch しません。errors は SvelteKit に伝播し、request は失敗します。

サポートされている Webhook Event Handlers

各 handler は、その event type に対応する検証済み payload を受け取ります。
各 event の意味については、Webhook Event Guide を参照してください。

LLM 向け Prompt

この prompt を AI coding assistant にコピーして、adaptor をプロジェクトに追加させます。agent に Dodo Payments の docs と skills も提供するには、Agent Plugin をインストールしてください。
最終更新日 2026年9月26日