このチュートリアルでは Node.js と Express を使用します。コードは使用するフレームワーク(Next.js、React、Vue など)に合わせて変更でき、UI もアプリケーションに合わせてカスタマイズできます。
- 座席ベースの価格設定を持つサブスクリプション製品を作成する
- 追加の座席用のアドオンを設定する
- カスタムアドオン数量を持つ支払いリンクを生成する
- 動的な座席数を持つチェックアウトセッションを処理する
何を作成するか
座席ベースの価格モデルを作成しましょう:- 基本プラン: 最大 5 名のチームメンバーまで $49/月
- シートアドオン: 追加シート 1 つにつき $2/月
- 支払いリンク: カスタムシート数量に対応した動的なチェックアウト
始める前に、以下を確認してください:
- Dodo Paymentsアカウント
- TypeScript/Node.jsの基本的な知識
ステップ1: 座席アドオンを作成する
追加シートを表すアドオンを作成します。このアドオンを基本サブスクリプションに紐付けることで、顧客は追加シートを購入できるようになります。
1
Navigate to Add-Ons
- Dodo PaymentsのダッシュボードでProductsセクションにとどまります
- Add-Onsタブをクリック
- Create Add-Onをクリック
2
Enter add-on details
座席アドオンには次の値を入力します:Add-On Name:
Additional Team SeatDescription:Add extra team members to your workspace with full access to all featuresPrice:→ 2.00 を入力通貨: 基本サブスクリプションの通貨と一致する必要があります税カテゴリ: 製品に適切なカテゴリを選択します。3
Save your add-on
- すべての設定を確認します。
- 名前: 追加チームシート
- 価格: $2.00/月
- アドオンを作成 をクリックします。
アドオンが作成されました! あなたの座席アドオンは、サブスクリプションに追加できるようになりました。
ステップ2: 基本サブスクリプション製品を作成する
5 名のチームメンバーを含む基本サブスクリプション商品を作成します。これがシートベースの料金モデルの基盤になります。
1
Navigate to Products
- Dodo Paymentsダッシュボードにログイン
- 左側のサイドバーでProductsをクリック
- Create Productボタンをクリック
- 製品タイプとしてSubscriptionを選択
2
Fill in the subscription details
ここで基本プランの詳細を入力します:Product Name:
MotionDescription:Where your team's documentation lives.Recurring Price:→ 49.00 を入力Billing Cycle:→ Monthly を選択Currency:希望する通貨を選択(例:USD)ステップ3: アドオンをサブスクリプションに接続する
顧客がチェックアウト時に追加シートを購入できるよう、シートアドオンを基本サブスクリプションに関連付けます。1
Attach the seat add-on

- アドオンセクションまでスクロールします
- アドオンを追加をクリックします
- ドロップダウンから座席アドオンを選択します
- サブスクリプション設定に表示されていることを確認します
2
Save subscription changes
- サブスクリプションの設定全体を確認します:
- 基本プラン:$49/月、5席
- アドオン:追加の1席ごとに$2/月
- 変更を保存をクリックします
シートベースの料金体系が設定されました! 顧客は基本プランを購入し、必要に応じてシートを追加できるようになりました。
Step 4: カスタムアドオン数量で支払いリンクを生成する
カスタムアドオン数量を指定した支払いリンクを生成する Express.js アプリケーションを作成します。これにより、任意の数の追加シートを含むチェックアウトセッションを動的に作成できます。1
Set up your project
新しい Node.js プロジェクトを作成し、必要な依存関係をインストールします。
tsconfig.json ファイルを作成します。2
Create your environment file
Dodo Payments API key を含む
.env ファイルを作成します。3
Implement the checkout session creation
次のコードを含む
src/server.ts ファイルを作成します。4
Add a simple web interface
簡単なテスト用に
public/index.html ファイルを作成します。Web インターフェースが作成されました! これで、さまざまなシート数量をテストできるシンプルな UI が用意できました。
5
Serve static files
HTML ファイルを提供するため、これを
src/server.ts に追加します。静的ファイルが設定されました!
http://localhost:3000 にアクセスしてデモインターフェースを確認してください。Step 5: 実装をテストする
シートベースの料金体系の実装が正しく動作することを確認するため、テストします。1
Start your server
- 正しい API key を含む
.envファイルがあることを確認します。 - コード内の商品 ID とアドオン ID を、Dodo Payments ダッシュボードにある実際の値に更新します。
- サーバーを起動します。
サーバーが正常に起動し、「Server is running on port 3000」と表示されるはずです。
2
Test the web interface

- ブラウザを開き、
http://localhost:3000に移動します。 - シートベースの料金体系のデモインターフェースが表示されることを確認します。
- さまざまなシート数量(0、3、10 など)を試します。
- 各数量で「Generate Checkout Link」をクリックします。
- チェックアウト URL が正しく生成されることを確認します。
3
Test a checkout session
- 追加シート 3 つでチェックアウトリンクを生成します。
- チェックアウト URL をクリックして Dodo Payments のチェックアウトを開きます。
- チェックアウトに次の内容が表示されることを確認します。
- 基本プラン: $49/月
- 追加シート: 3 × 2 ドル = $6/月
- テスト購入を完了します。
チェックアウトには正しい料金の内訳が表示され、購入を完了できるはずです。
4
Listen for webhooks and update your database
Dodo Payments からの webhook events をリッスンして、サブスクリプションとシートの変更をデータベースに同期します。Webhook は、顧客がチェックアウトを完了したとき、サブスクリプションを更新したとき、またはシート数を変更したときにバックエンドへ通知します。Webhook endpoint の設定とイベント処理の手順については、Dodo Payments の公式 webhooks ガイドを参照してください。
Dodo Payments Webhooks Documentation
サブスクリプションとシートを安全に管理するため、webhook events の受信と処理方法を確認できます。
トラブルシューティング
よくある問題と解決策:Checkout creation failing
Checkout creation failing
考えられる原因:
- 商品 ID またはアドオン ID が無効
- API key に十分な権限がない
- アドオンがサブスクリプションに正しく関連付けられていない
- ネットワーク接続の問題
- Dodo Payments ダッシュボードに商品 ID とアドオン ID が存在することを確認します。
- アドオンがサブスクリプションに正しく紐付けられていることを確認します。
- API key に checkout session の作成権限があることを確認します。
- 簡単な GET request で API 接続をテストします。
おめでとうございます!シートベースの料金体系を実装しました
Dodo Payments を使用したシートベースの料金体系を正常に作成できました。今回達成した内容は次のとおりです。Base Subscription
5 つのシートを含むサブスクリプション商品を $49/月で作成
Seat Add-ons
追加シート用のアドオンを、シート 1 つにつき $2/月で設定
Checkout
カスタムシート数量を指定してチェックアウトセッションを生成する API を構築
Web Interface
さまざまなシート数量をテストできるシンプルな Web インターフェースを作成
この例では、シートベースの料金体系の最小限の実装を示しています。本番環境で使用する場合は、エラーハンドリング、認証、データ検証、セキュリティ対策を追加し、アプリケーションの要件に合わせてロジックを調整してください。