Skip to main content
@dodopayments/nextjsパッケージは、Next.js App Routerプロジェクトに3つのroute handlerを提供します。Checkoutはcheckout URLを返し、CustomerPortalはCustomer Portalに顧客を移動させ、Webhooksはwebhook eventを検証してコードにルーティングします。このパッケージはNext.js 14、15、16をサポートしています。

Checkout Handler

static、dynamic、checkout sessionのflowでcheckout URLを作成します。

Customer Portal

顧客がsubscriptionと詳細情報を管理できるようにします。

Webhooks

Dodo Payments webhook eventを受信して処理します。

インストール

1

Install the Package

このコマンドをプロジェクトのrootで実行します。
このパッケージには、peer dependencyとしてZod 3.25またはZod 4も必要です。
2

Set Up Environment Variables

プロジェクトのrootに.envファイルを作成します。ダッシュボードのDeveloper → API KeysでAPI keyを、Developer → Webhooksでwebhook secretを作成します。
DODO_PAYMENTS_RETURN_URLは、checkout後に顧客が移動する場所です。environmentを渡さない場合、handlerはlive_modeを使用します。
.envファイルやsecretをversion controlにcommitしないでください。

Route Handlerの例

すべての例では、Next.js App Routerを使用していることを前提としています。
このhandlerを使用して、アプリにDodo Payments checkoutを追加します。GET handlerはstatic checkoutを提供します。POST handlerはcheckout sessionを提供します。type: "dynamic"を設定した場合はdynamic checkoutを提供します。

Checkout Route Handler

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

サポートされるQuery Parameters

string
必須
product identifier(例:?productId=pdt_123)。
integer
デフォルト:"1"
productの数量。
string
顧客のfull name。firstNameまたはlastNameが指定されている場合は無視されます。
string
顧客のfirst name。
string
顧客のlast name。
string
顧客のemail address。
string
顧客の国(ISO 3166-1 alpha-2 code)。
string
顧客のaddress line。
string
顧客のcity。
string
顧客のstateまたはprovince。
string
顧客のZIPまたはpostal code。
boolean
trueに設定すると、full name fieldを無効にします。
boolean
trueに設定すると、first name fieldを無効にします。
boolean
trueに設定すると、last name fieldを無効にします。
boolean
trueに設定すると、email fieldを無効にします。
boolean
trueに設定すると、country fieldを無効にします。
boolean
trueに設定すると、address line fieldを無効にします。
boolean
trueに設定すると、city fieldを無効にします。
boolean
trueに設定すると、state fieldを無効にします。
boolean
trueに設定すると、ZIP code fieldを無効にします。
string
payment currency(例:USD)。
boolean
デフォルト:"true"
currency selectorを表示または非表示にします。
number
請求額をmajor currency unitで固定します。たとえば、$12.50の場合は12.5です。Pay What You Want productでのみ機能し、productのminimum priceを下回る場合は無視されます。
boolean
デフォルト:"true"
discount sectionを表示または非表示にします。
string
metadata_で始まるquery parameterはmetadataとして渡されます。
handlerはconfigのreturnUrlをredirect_urlとしてlinkに追加します。
productIdがない場合、handlerは400 responseを返します。無効なquery parameterや存在しないproduct IDでも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 sessionを使用してください。

Response Format

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

Response Format

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

Customer Portal Route Handler

Customer Portal route handlerは、指定した顧客のCustomer Portal sessionを作成し、browserをそこへredirectします。
handlerは呼び出し元を確認しません。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がない場合、handlerは400を返し、portal sessionを作成できない場合は500を返します。

Webhook Route Handler

webhook route handlerは、コードを実行する前に各requestを検証します。
  • Method: POST requestのみサポートされます。その他のmethodは405を返します。
  • Signature Verification: webhookKeyを使用して、raw request bodyをwebhook-id、webhook-timestamp、webhook-signature headerに対して検証します。検証に失敗すると401を返します。
  • Payload Validation: 検証済みのbodyをJSONとしてparseし、Zodでvalidateします。parseされたpayloadがwebhook schemaに一致しない場合は400を返します。
  • Error Handling:
    • 401: 無効なsignature
    • 400: 無効なpayload
    • 500: 予期しない検証エラー、malformed JSON、またはcallbackがthrowしたエラー
  • Event Routing: すべてのeventに対してonPayloadを呼び出し、その後eventのtypeに対応するhandlerを呼び出して200を返します。
adaptorはhandler内でthrowされたerrorをcatchしません。errorはNext.jsにpropagateされ、requestは失敗します。

サポートされるWebhook Event Handler

各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日