@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
プロジェクトのルートに 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 の例
この例では、
express() で作成した Express アプリに route を登録します。POST checkout handler と webhook handler は req.body を読み取るため、各例では route の前に express.json() を登録します。- Checkout Handler
- Customer Portal Handler
- Webhook Handler
この 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 を返します。
Static Checkout (GET)
Static Checkout (GET)
サポートされる Query Parameters
請求額を major currency unit で固定します。例:$12.50 の場合は
12.5。Pay What You Want product でのみ機能し、product の最低価格を下回る場合は無視されます。true で、対応するフィールドに値がある場合にのみ有効になります。例:email と disableEmail。handler はこれらの parameters を static payment link に渡します。Response Format
Static checkout は checkout URL を含む JSON response を返します。Dynamic Checkout (POST)
Dynamic Checkout (POST)
- 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 の詳細については、次を参照してください。
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 は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
Webhook Route Handler
webhook handler は、webhookKey として渡された webhook secret を使用して各 request を検証し、その後イベントハンドラーを呼び出します。
- Method: POST request のみサポートされます。その他の method は 405 を返します。
- Signature Verification:
webhook-id、webhook-timestamp、webhook-signatureheaders を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 しません。