Checkout Handler
Dodo Payments のチェックアウトを Hono アプリに統合します。
Customer Portal
顧客がサブスクリプションや詳細を管理できるようにします。
Webhooks
Dodo Payments の webhook イベントを受信して処理します。
インストール
1
Install the package
プロジェクトのルートで次のコマンドを実行します:
2
Set up environment variables
プロジェクトのルートに
.env ファイルを作成します:ルートハンドラーの例
すべての例は Hono App Router を使用していることを前提としています。
- Checkout Handler
- Customer Portal Handler
- Webhook Handler
このハンドラーを使用して Hono アプリに Dodo Payments チェックアウトを統合します。静的 (GET)、動的 (POST)、セッション (POST) フローをサポートします。
チェックアウトルートハンドラー
Dodo Payments は Web サイトへの支払い統合のために 3 種類の支払いフローをサポートしており、このアダプターはすべての支払いフローをサポートします。
- 静的支払いリンク: 迅速でコード不要の支払い収集のための即時共有可能なURL。
- 動的支払いリンク: APIまたはSDKを使用してカスタム詳細を持つ支払いリンクをプログラム的に生成します。
- チェックアウトセッション: 事前に設定された製品カートと顧客詳細を持つ安全でカスタマイズ可能なチェックアウト体験を作成します。
Static Checkout (GET)
Static Checkout (GET)
サポートされているクエリパラメーター
製品識別子(例:
?productId=pdt_nZuwz45WAs64n3l07zpQR)。製品の数量。
顧客のフルネーム。
顧客の名。
顧客の姓。
顧客のメールアドレス。
顧客の国。
顧客の住所。
顧客の市区町村。
顧客の州/都道府県。
顧客の郵便番号。
フルネーム入力を無効にします。
名入力を無効にします。
姓入力を無効にします。
メール入力を無効にします。
国入力を無効にします。
住所入力を無効にします。
市区町村入力を無効にします。
州入力を無効にします。
郵便番号入力を無効にします。
支払い通貨を指定します(例:
USD)。通貨セレクターを表示します。
支払い金額を指定します(例:
1000 は $10.00)。割引フィールドを表示します。
metadata_ で始まるクエリパラメーターはメタデータとして渡されます。レスポンス形式
静的チェックアウトは、チェックアウトURLを含むJSONレスポンスを返します:Dynamic Checkout (POST)
Dynamic Checkout (POST)
- パラメーターを POST リクエストの JSON ボディとして送信します。
- 一回限りの支払いと定期支払いの両方をサポートしています。
- サポートされている POST ボディ フィールドの完全な一覧については、次を参照してください:
レスポンス形式
動的チェックアウトは、チェックアウトURLを含むJSONレスポンスを返します:Checkout Sessions (POST)
Checkout Sessions (POST)
チェックアウトセッションは、ワンタイム購入とサブスクリプションの両方に対して完全な支払いフローを処理し、カスタマイズ制御が可能なより安全なホスト型チェックアウト体験を提供します。詳細とサポートされているフィールドの完全なリストについては、チェックアウトセッション統合ガイドを参照してください。
レスポンス形式
チェックアウトセッションは、チェックアウトURLを含むJSONレスポンスを返します:顧客ポータルルートハンドラー
顧客ポータルルートハンドラーを使用すると、Dodo Paymentsの顧客ポータルをHonoアプリケーションにシームレスに統合できます。クエリパラメーター
ポータルセッション用の顧客 ID(例:
?customer_id=cus_123)。true に設定すると、顧客にポータルリンクをメールで送信します。Webhookルートハンドラー
- メソッド: POSTリクエストのみがサポートされています。他のメソッドは405を返します。
- 署名検証:
webhookKeyを使用してWebhook署名を検証します。検証に失敗した場合は401を返します。 - ペイロード検証: Zodで検証されます。無効なペイロードには400を返します。
- エラーハンドリング:
- 401: 無効な署名
- 400: 無効なペイロード
- 500: 検証中の内部エラー
- イベントルーティング: ペイロードタイプに基づいて適切なイベントハンドラーを呼び出します。