@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
プロジェクトのルートに Developer → API Keys で API key を作成します。Developer → Webhooks で webhook endpoint を追加し、その signing secret を
.env ファイルを作成します。DODO_PAYMENTS_WEBHOOK_KEY にコピーします。DODO_PAYMENTS_RETURN_URL は、checkout 後に顧客が移動する場所です。environment を渡さない場合、ハンドラーは live_mode を使用します。ルートハンドラーの例
この例では、
src/routes/api/ 配下にある SvelteKit の +server.ts endpoint を使用します。認証情報は $env/static/private から import します。この情報は SvelteKit によって client-side code から除外されます。- Checkout Handler
- Customer Portal Handler
- Webhook Handler
このハンドラーを使用して、Dodo Payments checkout を SvelteKit アプリに追加します。
Checkout は、static checkout 用の GET ハンドラーと、checkout sessions 用、または type: "dynamic" を設定した場合の dynamic checkout 用の POST ハンドラーを返します。type: "static" で作成したハンドラー、または type を指定しないハンドラーから GET を export してください。session または dynamic ハンドラーの GET ハンドラーは 400 を返すためです。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 を受け取ります。
Static Checkout (GET)
Static Checkout (GET)
サポートされている Query Parameters
請求額を major currency units で固定します。例: $12.50 の場合は
12.5。Pay What You Want products でのみ機能し、product の最低価格を下回る場合は無視されます。returnUrl を redirect_url として link に追加します。Response Format
Static checkout は checkout URL を含む JSON response を返します。test mode では、URL にtest.checkout.dodopayments.com が使用されます。Dynamic Checkout (POST)
Dynamic Checkout (POST)
Checkout Sessions (POST)
Checkout Sessions (POST)
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 でブラウザーをそこへリダイレクトします。Query Parameters
Webhook ルートハンドラー
webhook ルートハンドラーは、コードを実行する前に各 request を検証します。- Method: POST request のみがサポートされます。その他の method は 405 を返します。
- Signature Verification: raw request body と
webhook-id、webhook-timestamp、webhook-signatureheaders を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 を返します。