@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を使用します。Route Handlerの例
すべての例では、Next.js App Routerを使用していることを前提としています。
- Checkout Handler
- Customer Portal Handler
- Webhook Handler
この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です。
Static Checkout (GET)
Static Checkout (GET)
サポートされるQuery Parameters
請求額をmajor currency unitで固定します。たとえば、$12.50の場合は
12.5です。Pay What You Want productでのみ機能し、productのminimum priceを下回る場合は無視されます。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 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します。Query Parameters
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-signatureheaderに対して検証します。検証に失敗すると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を返します。