メインコンテンツへスキップ

前提条件

Dodo Payments APIを統合するには、以下が必要です:
  • Dodo Paymentsのマーチャントアカウント
  • ダッシュボードからのAPI認証情報(APIキーとWebhookシークレットキー)

ダッシュボードの設定

  1. Dodo Paymentsダッシュボードに移動します。
  2. 商品を作成します(一回限りの支払いまたはサブスクリプション)。
  3. APIキーを生成します:
    • Developer > APIに移動します。
    • 詳細ガイド
    • 環境変数DODO_PAYMENTS_API_KEYにAPIキーをコピーします。
  4. Webhookを設定します:
    • Developer > Webhooksに移動します。
    • 支払い通知用のWebhook URLを作成します。
    • 環境変数にWebhookシークレットキーをコピーします。

統合

支払いリンク

ユースケースに合った統合パスを選択してください:
  • チェックアウトセッション(推奨):ほとんどの統合に最適です。サーバー上でセッションを作成し、顧客を安全なホストされたチェックアウトにリダイレクトします。
  • オーバーレイチェックアウト(埋め込み):ホストされたチェックアウトをサイトに埋め込む必要がある場合に使用します。
  • 静的支払いリンク:ノーコードで、すぐに共有可能なURLで迅速な支払い収集が可能です。
  • 動的支払いリンク:プログラムで作成されたリンク。ただし、チェックアウトセッションが推奨され、より柔軟性があります。

1. チェックアウトセッション

チェックアウトセッションを使用して、一回限りの支払いまたはサブスクリプションのための安全なホストされたチェックアウト体験を作成します。サーバー上でセッションを作成し、顧客を返されたcheckout_urlにリダイレクトします。
チェックアウトセッションはデフォルトで24時間有効です。confirm=trueを渡すと、セッションは15分間有効で、すべての必須フィールドを提供する必要があります。
1

チェックアウトセッションを作成する

お好みのSDKを選択するか、REST APIを呼び出します。
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  environment: 'test_mode', // defaults to 'live_mode'
});

const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  customer: { email: '[email protected]', name: 'John Doe' },
  return_url: 'https://yourapp.com/checkout/success',
});
2

顧客をチェックアウトにリダイレクトする

セッション作成後、checkout_urlにリダイレクトしてホストされたフローを開始します。
// Example in a browser context
window.location.href = session.checkout_url;
最も迅速で信頼性の高い支払い開始方法としてチェックアウトセッションを優先してください。高度なカスタマイズについては、完全なチェックアウトセッションガイドAPIリファレンスを参照してください。

2. オーバーレイチェックアウト

シームレスなインページチェックアウト体験のために、顧客がウェブサイトを離れることなく支払いを完了できるオーバーレイチェックアウト統合を検討してください。

3. 静的支払いリンク

静的支払いリンクを使用すると、シンプルなURLを共有することで迅速に支払いを受け付けることができます。クエリパラメータを渡すことで、顧客の詳細を事前入力し、フォームフィールドを制御し、カスタムメタデータを追加してチェックアウト体験をカスタマイズできます。
1

支払いリンクを構築する

ベースURLから始めて、商品IDを追加します:
https://checkout.dodopayments.com/buy/{productid}
2

コアパラメータを追加する

必要なクエリパラメータを含めます:
  • quantity
    integer
    default:"1"
    購入するアイテムの数。
  • redirect_url
    string
    required
    支払い完了後にリダイレクトするURL。
リダイレクトURLには、支払い詳細がクエリパラメータとして含まれます。例えば:
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded
3

顧客情報を事前入力する(オプション)

チェックアウトをスムーズにするために、顧客または請求フィールドをクエリパラメータとして追加します。
  • fullName
    string
    顧客のフルネーム(firstNameまたはlastNameが提供されている場合は無視されます)。
  • firstName
    string
    顧客の名。
  • lastName
    string
    顧客の姓。
  • email
    string
    顧客のメールアドレス。
  • country
    string
    顧客の国。
  • addressLine
    string
    住所。
  • city
    string
    市。
  • state
    string
    州または県。
  • zipCode
    string
    郵便番号。
  • showDiscounts
    boolean
    trueまたはfalse
4

フォームフィールドを制御する(オプション)

特定のフィールドを無効にして、顧客にとって読み取り専用にすることができます。これは、すでに顧客の詳細を持っている場合(例:ログインユーザー)に便利です。
フィールドを無効にするには、その値を提供し、対応するdisable…フラグをtrueに設定します:
&[email protected]&disableEmail=true
フィールド無効フラグ必須パラメータ
フルネームdisableFullNamefullName
disableFirstNamefirstName
disableLastNamelastName
メールdisableEmailemail
disableCountrycountry
住所disableAddressLineaddressLine
disableCitycity
disableStatestate
郵便番号disableZipCodezipCode
フィールドを無効にすることで、誤った変更を防ぎ、データの一貫性を確保できます。
showDiscounts=falseを設定すると、チェックアウトフォームの割引セクションが無効になり、非表示になります。これは、顧客がチェックアウト中にクーポンやプロモコードを入力するのを防ぎたい場合に使用します。
5

高度なコントロールを追加する(オプション)

  • paymentCurrency
    string
    支払い通貨を指定します。デフォルトは請求国の通貨です。
  • showCurrencySelector
    boolean
    default:"true"
    通貨セレクターを表示または非表示にします。
  • paymentAmount
    integer
    セント単位の金額(「支払いたい金額」価格設定のみ)。
  • metadata_*
    string
    カスタムメタデータフィールド(例:metadata_orderId=123)。
6

リンクを共有する

完成した支払いリンクを顧客に送信します。顧客が訪問すると、すべてのクエリパラメータが収集され、セッションIDと共に保存されます。URLは、セッションパラメータ(例:?session=sess_1a2b3c4d)だけを含むように簡略化されます。保存された情報はページのリフレッシュを通じて持続し、チェックアウトプロセス全体でアクセス可能です。
顧客のチェックアウト体験は、あなたのパラメータに基づいてスムーズでパーソナライズされています。

4. 動的支払いリンク

ほとんどのユースケースにはチェックアウトセッションを優先してください。これにより、より柔軟性と制御が得られます。
API呼び出しまたはSDKを介して顧客の詳細で作成されます。以下はその例です: 動的支払いリンクを作成するためのAPIは2つあります: 以下のガイドは、一回限りの支払いリンクの作成に関するものです。 サブスクリプションの統合に関する詳細な手順については、サブスクリプション統合ガイドを参照してください。
支払いリンクを取得するためにpayment_link = trueを渡していることを確認してください。
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
environment: 'test_mode', // defaults to 'live_mode'
});

async function main() {
const payment = await client.payments.create({
payment_link: true,
billing: { city: 'city', country: 'AF', state: 'state', street: 'street', zipcode: 0 },
customer: { email: '[email protected]', name: 'name' },
product_cart: [{ product_id: 'product_id', quantity: 0 }],
});

console.log(payment.payment_id);
}

main();
支払いリンクを作成した後、顧客をリダイレクトして支払いを完了させます。

Webhookの実装

支払い通知を受信するためのAPIエンドポイントを設定します。以下はNext.jsを使用した例です:
import { Webhook } from "standardwebhooks";
import { headers } from "next/headers";
import { WebhookPayload } from "@/types/api-types";

const webhook = new Webhook(process.env.DODO_WEBHOOK_KEY!); // Replace with your secret key generated from the Dodo Payments Dashboard

export async function POST(request: Request) {
  const headersList = headers();
  const rawBody = await request.text();

  const webhookHeaders = {
    "webhook-id": headersList.get("webhook-id") || "",
    "webhook-signature": headersList.get("webhook-signature") || "",
    "webhook-timestamp": headersList.get("webhook-timestamp") || "",
  };

  await webhook.verify(rawBody, webhookHeaders);
  const payload = JSON.parse(rawBody) as WebhookPayload;
  
  // Process the payload according to your business logic
}
私たちのWebhook実装は、Standard Webhooks仕様に従っています。Webhookタイプの定義については、Webhookイベントガイドを参照してください。 Next.jsとTypeScriptを使用したデモ実装のプロジェクトは、GitHubで参照できます。 ライブ実装はこちらで確認できます。