Skip to main content
@dodopayments/express アダプターは Express アプリに3つの route handler を提供します。checkoutHandler は checkout URL を返し、CustomerPortal は顧客を Customer Portal に移動させ、Webhooks は webhook リクエストを検証してイベントハンドラーを呼び出します。

Checkout Handler

Express アプリから payment link と checkout session を作成します。

Customer Portal

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

Webhooks

Dodo Payments webhook イベントを検証して処理します。

インストール

1

Install the Package

プロジェクトのルートで次のコマンドを実行します。
2

Set Up Environment Variables

プロジェクトのルートに .env ファイルを作成します。
Developer → API Keys で API key を作成します。Developer → Webhooks で webhook endpoint を追加し、その signing secret を DODO_PAYMENTS_WEBHOOK_KEY にコピーします。構築中は、DODO_PAYMENTS_ENVIRONMENT=test_mode を使用する test mode API key を使ってください。test mode key は test mode に対してのみ機能します。DODO_PAYMENTS_RETURN_URL は任意です。
.env ファイルや secrets を version control に commit しないでください。

Route Handler の例

この例では、express() で作成した Express アプリに route を登録します。POST checkout handler と webhook handler は req.body を読み取るため、各例では route の前に express.json() を登録します。
この handler を使用して、Dodo Payments checkout を Express アプリに統合します。static (GET)、dynamic (POST)、session (POST) の payment flow をサポートします。最初に登録された handler がその path へのすべてのリクエストに応答するため、各 POST flow はそれぞれ別の path に登録してください。

Checkout Route Handler

このアダプターは、3つすべての Dodo Payments 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 を作成します。新しい統合にはこの flow を使用してください。
checkoutHandler は次の options を受け取ります。 type が static の場合は GET に、dynamic または session の場合は POST に handler を登録します。handler はその他の method に対して 405 を返します。

サポートされる Query Parameters

string
必須
Product identifier。例:?productId=pdt_nZuwz45WAs64n3l07zpQR。
integer
デフォルト:"1"
Product の数量。
string
顧客の氏名。firstName または lastName が指定されている場合は無視されます。
string
顧客の名。
string
顧客の姓。
string
顧客のメールアドレス。
string
顧客の国。ISO 3166-1 alpha-2 code で指定します。
string
顧客の住所。
string
顧客の市区町村。
string
顧客の州または県。
string
顧客の郵便番号または ZIP code。
boolean
true に設定すると、氏名フィールドを無効にします。
boolean
true に設定すると、名フィールドを無効にします。
boolean
true に設定すると、姓フィールドを無効にします。
boolean
true に設定すると、メールフィールドを無効にします。
boolean
true に設定すると、国フィールドを無効にします。
boolean
true に設定すると、住所行フィールドを無効にします。
boolean
true に設定すると、市区町村フィールドを無効にします。
boolean
true に設定すると、州フィールドを無効にします。
boolean
true に設定すると、ZIP code フィールドを無効にします。
string
支払い通貨。例:USD。
boolean
デフォルト:"true"
通貨セレクターを表示または非表示にします。
number
請求額を major currency unit で固定します。例:$12.50 の場合は 12.5。Pay What You Want product でのみ機能し、product の最低価格を下回る場合は無視されます。
boolean
デフォルト:"true"
割引セクションを表示または非表示にします。
string
metadata_ で始まる query parameter は、metadata として checkout に渡されます。例:metadata_orderId=123。
disable flag は true で、対応するフィールドに値がある場合にのみ有効になります。例:email と disableEmail。handler はこれらの parameters を static payment link に渡します。
productId がない場合、handler は 400 response を返します。無効な query parameters や、アカウントに存在しない product も 400 response になります。

Response Format

Static checkout は checkout URL を含む JSON response を返します。
  • Parameters を POST request の JSON body として送信します。
  • one-time payment と recurring payment の両方をサポートします。handler は product を取得し、product が recurring の場合は subscription を、それ以外の場合は one-time payment を作成します。
  • body には billing(street、city、state、country、zipcode を含む)と customer に加えて、product_id(任意の quantity を含む)または product_cart が必要です。subscription には product_id が必要です。
  • handler は metadata、allowed_payment_method_types、billing_currency、discount_codes(または deprecated の discount_code)、return_url、show_saved_payment_methods、tax_id も転送します。subscription の場合は addons、on_demand、trial_period_days も転送します。その他の fields は無視します。
  • field の詳細については、次を参照してください。
Dynamic Checkout は deprecated の POST /payments と POST /subscriptions endpoints を呼び出します。新しい統合には Checkout Sessions を使用してください。

Response Format

Dynamic checkout は、payment link を checkout URL として含む JSON response を返します。
checkout session payload を JSON body として送信します。handler は checkout session を作成します。この session は one-time purchase と subscription の完全な payment flow を処理し、その checkout_url を返します。product_cart は必須で、少なくとも1つの product を含める必要があります。各 checkout_url は1回のみ使用でき、24時間後に期限切れになります。confirm: true を渡した場合は15分後に期限切れになります。payment_method_id で作成した session は checkout_url を返さないため、handler は 400 を返します。詳細とサポートされる fields の完全な一覧については、Checkout Sessions Integration Guide を参照してください。

Response Format

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

Customer Portal Route Handler

Customer Portal Route Handler は、customer_id の顧客向けに Customer Portal session を作成し、request を portal link にリダイレクトします。CustomerPortal は、checkoutHandler と同じ bearerToken および environment options を受け取ります。Dodo Payments が session を作成できない場合、handler は 500 を返します。

Query Parameters

string
必須
portal session の customer ID。例:?customer_id=cus_123。
boolean
true に設定すると、portal link を記載した email を顧客に送信します。
customer_id がない場合は 400 を返します。handler は request を authenticate せず、受け取った任意の customer_id に対して portal を開くため、route を独自の authentication の背後に置き、サインイン済みユーザーの customer ID のみを渡してください。

Webhook Route Handler

webhook handler は、webhookKey として渡された webhook secret を使用して各 request を検証し、その後イベントハンドラーを呼び出します。
webhook route の前に express.json() を登録します。handler は req.body に対して signature を検証するため、body が parsed JSON でない限りすべての request を拒否します。この route には express.raw() を使用しないでください。
  • Method: POST request のみサポートされます。その他の method は 405 を返します。
  • Signature Verification: webhook-id、webhook-timestamp、webhook-signature headers を webhookKey で検証します。Standard Webhooks specification に従います。検証に失敗した場合は 401 を返します。
  • Payload Validation: Zod で検証します。無効な payload には 400 を返します。
  • Error Handling:
    • 401: 無効な signature
    • 400: 無効な payload
    • 500: 検証中の内部エラー
  • Event Routing: すべての event に対して onPayload を呼び出し、その後 event type 用の handler を呼び出します。完了すると 200 を返します。handler はイベントハンドラーが throw した errors を catch しません。

サポートされる Webhook Event Handlers

すべての handler は任意で、async です。各 event の payload については、Webhook Event Guide を参照してください。

LLM 用プロンプト

最終更新日 2026年9月26日