概要
Next.jsミニマルボイラープレートは、Dodo PaymentsをNext.jsアプリケーションに統合するためのすぐに使える出発点を提供します。このテンプレートには、チェックアウトセッション、Webhook処理、顧客ポータル、そして迅速に支払いを受け入れるためのモダンなUIコンポーネントが含まれています。このボイラープレートは、TypeScript、Tailwind CSS 4、および
@dodopayments/nextjsアダプターを使用したNext.js 16 App Routerを使用しています。特徴
- クイックセットアップ - 5分以内で始められます
- 支払い統合 -
@dodopayments/nextjsを使用した事前設定されたチェックアウトフロー - モダンUI - Tailwind CSSを使用したクリーンでダークテーマの価格ページ
- Webhookハンドラー - 支払いイベント用のすぐに使えるWebhookエンドポイント
- 顧客ポータル - ワンクリックでのサブスクリプション管理
- TypeScript - 最小限で焦点を絞った型を持つ完全な型付け
- 事前入力されたチェックアウト - UXを向上させるために顧客データを渡すデモ
前提条件
始める前に、次のものを用意してください:- Node.js 20.9+ (Next.js 16に必要)
- Dodo Paymentsアカウント (ダッシュボードからAPIおよびWebhookキーにアクセスするため)
クイックスタート
1
リポジトリをクローン
2
依存関係をインストール
3
API資格情報を取得
Dodo Paymentsにサインアップし、ダッシュボードから資格情報を取得してください:
- APIキー: ダッシュボード → 開発者 → APIキー
- Webhookキー: ダッシュボード → 開発者 → Webhooks
4
環境変数を設定
ルートディレクトリにDodo Paymentsの資格情報で値を更新してください:
.envファイルを作成します:5
製品を追加
Dodo Paymentsからの実際の製品IDで
src/lib/products.tsを更新します:6
開発サーバーを実行
プロジェクト構造
カスタマイズ
製品情報の更新
src/lib/products.tsを編集して、以下を変更します:
- 製品ID(Dodoダッシュボードから)
- 価格
- 特徴
- 説明
顧客データの事前入力
src/app/components/ProductCard.tsxで、ハードコーディングされた値を実際のユーザーデータに置き換えます:
顧客ポータルの更新
src/app/components/Header.tsxで、ハードコーディングされた顧客IDを置き換えます:
Webhookイベント
このボイラープレートは、src/app/api/webhook/route.tsで2つのWebhookイベントを処理する方法を示しています:
onSubscriptionActive- サブスクリプションがアクティブになるとトリガーされますonPaymentSucceeded- 支払いが成功するとトリガーされます
デプロイメント
本番用にビルド
Vercelにデプロイ
[Webhook URLの更新
デプロイ後、Dodo PaymentsダッシュボードでWebhook URLを更新します:トラブルシューティング
モジュールが見つからないまたはビルドエラー
モジュールが見つからないまたはビルドエラー
node_modulesを削除し、依存関係を再インストールします:チェックアウトリダイレクトが失敗する
チェックアウトリダイレクトが失敗する
一般的な原因:
- 無効な製品ID - Dodoダッシュボードに存在することを確認してください
.envのAPIキーまたは環境設定が間違っている- エラーのためにブラウザコンソールとターミナルを確認してください
Webhookがイベントを受信しない
Webhookがイベントを受信しない
ローカルテストのために、ngrokを使用してサーバーを公開します:Webhook URLをngrok URLに更新するために、Dodoダッシュボードを更新します。正しいWebhook検証キーで.envファイルを更新することを忘れないでください。
顧客ポータルリンクが機能しない
顧客ポータルリンクが機能しない
CUSTOMER_IDをsrc/app/components/Header.tsx内のハードコーディングされた値と置き換え、Dodoダッシュボードからの実際の顧客IDを使用します。または、認証システムとデータベースを統合して、顧客IDを動的に取得します。詳しく学ぶ
サポート
ボイラープレートに関して助けが必要ですか?- 質問や議論のために、Discordコミュニティに参加してください
- 問題や更新については、GitHubリポジトリを確認してください
- サポートが必要な場合は、サポートチームに連絡してください