
仕組み
Inline checkoutは、ページ上のコンテナに安全なDodo Payments frameをレンダリングします。frameは顧客情報と決済情報の収集を処理します。ページには商品、合計金額、その他の情報を表示します。SDKを使用すると、ページとcheckout frameが相互に通信できます。 checkoutが完了すると、Dodo Paymentsは決済、またはサブスクリプション商品の場合はサブスクリプションを作成し、アクセスをプロビジョニングできるようwebhookを送信します。優れたInline Checkoutの条件
顧客は、誰から購入するのか、何を購入するのか、いくら支払うのかを把握できる必要があります。実装には次の要素を含める必要があります。
Example inline checkout layout showing required elements
- Recurring information: 継続課金の場合は、請求頻度と更新時の支払総額を表示します。trialの場合は、trial期間を表示します。
- Item descriptions: 購入内容の説明。
- Transaction totals: 通貨を含む小計、税額合計、総合計。
- Dodo Payments footer: Dodo Paymentsの情報、販売条件、privacy policyを含む、完全なinline checkout frame。
- Refund policy: Dodo Paymentsの標準refund policyと異なる場合は、自社のrefund policyへのリンク。
Customer Journey
checkout flowはcheckout sessionの設定によって異なります。sessionの設定によっては、顧客にすべての情報を1ページで表示することも、複数のステップに分けて表示することもできます。Customer opens checkout
checkout.breakdownなどのSDK eventsを使用して、ページ上の情報を表示・更新します。
Customer enters their details
Customer selects payment method

Checkout completed

Dodo Payments creates the payment or subscription

クイックスタート
SDKをインストールし、inline mode用に初期化して、コンテナ要素でcheckoutを開きます。ステップごとのIntegration
Install the SDK
Initialize the SDK for Inline Display
displayType: 'inline'を指定します。checkout.breakdown eventをリッスンして、リアルタイムの税額と合計金額でUIを更新します。Create a Container Element
Open the Checkout
DodoPayments.Checkout.open()を呼び出し、コンテナのcheckoutUrlとelementIdを渡します。Test Your Integration
- 開発serverを起動します。
- checkout flowをテストします。
- inline frameにメールアドレスと住所情報を入力する
- カスタム注文概要がリアルタイムで更新されることを確認する
- test credentialsを使用して決済flowをテストする
- redirectが正しく動作することを確認する
onEvent callbackにconsole logを追加した場合、ブラウザのconsoleにcheckout.breakdown eventsが記録されます。Go Live
- modeを
'live'に変更します。
- checkout URLをbackendのlive checkout sessionを使用するよう更新する
- productionで完全なflowをテストする
完全なReactの例
この例では、inline checkoutの横にカスタム注文概要を実装し、checkout.breakdown eventを使用して両者を同期する方法を示します。
API Reference
Initialize
Initializeを1回呼び出してSDKを設定します。
Open Checkout
コンテナでcheckout frameを開きます。Close Checkout
checkout frameをプログラムで削除し、event listenersをクリーンアップします。Check Status
checkout frameが現在挿入されているか確認します。Events
SDKはonEvent callbackを通じてリアルタイムeventsを提供します。inline checkoutでは、checkout.breakdownがUIの同期に特に役立ちます。
Checkout Breakdown Data
checkout.breakdown eventは、価格と税額の情報を提供します。
- Currency Formatting: 価格は最小通貨単位のintegerです。たとえばUSDではcentです。小数点以下2桁の通貨では、
Intl.NumberFormatでformatする前に100で割ります。JPYなどの小数点以下0桁の通貨には小さい単位がないため、割らないでください。 - Handling Initial States: checkoutの初回読み込み時、ユーザーがbilling informationを入力するかcodeを適用するまで、
taxとdiscountは0またはnullになる場合があります。これらのstateを適切に処理してください(例: dash—を表示する、またはrowを非表示にする)。 - The “Final Total” vs “Total”:
totalは標準的な価格計算を提供しますが、取引のsource of truthはfinalTotalです。finalTotalが存在する場合、顧客のcardに実際に請求される金額を正確に反映します。 - Real-time Feedback:
taxfieldを使用して、税額がリアルタイムで計算されていることをユーザーに表示します。これによりcheckout pageに「live」感が生まれ、住所入力時の操作負担を軽減できます。
CDN Implementation
build stepなしで素早くintegrationするには、CDNからSDKを読み込みます。Update Payment Method
Inline checkoutは、サブスクリプションの決済方法更新をサポートしています。顧客がactive subscriptionの決済方法を更新する必要がある場合や、on-hold subscriptionを再有効化する場合、ページレイアウト内にupdate flowを直接レンダリングできます。仕組み
- Update Payment Method APIを呼び出して
payment_linkを取得します。
- 返された
payment_linkをcheckoutUrlとして渡し、inline checkoutを開きます。
On-Hold Subscriptionの場合
on_hold statusのサブスクリプションで決済方法を更新すると、Dodo Paymentsは残りの未払い金額に対するchargeを自動的に作成します。再有効化を確認するには、payment.succeededとsubscription.active webhooksを監視します。
Error Handling
onEvent callbackには必ずerror handlingを実装してください。
Best Practices
- Responsive Design: コンテナ要素に十分なwidthとheightがあることを確認します。通常、iframeはコンテナいっぱいに広がります。
- Synchronization:
checkout.breakdowneventを使用して、カスタム注文概要やpricing tableをcheckout frameに表示される内容と同期します。 - Skeleton States:
checkout.openedeventが発生するまで、コンテナにloading indicatorを表示します。 - Cleanup: componentのunmount時に
DodoPayments.Checkout.close()を呼び出し、iframeとevent listenersをクリーンアップします。
#0d0d0dを使用します。Payment Status Validation
Server-Side Validationが不可欠な理由
inline checkout eventsはリアルタイムのfeedbackを提供しますが、決済statusの唯一のsource of truthにしてはいけません。ネットワーク問題、ブラウザのクラッシュ、ユーザーによるページの終了などにより、eventsを受信できない場合があります。信頼性の高い決済validationを実現するには、次の操作を行います。- webhook eventsをリッスンする - Dodo Paymentsは決済statusの変更時にwebhooksを送信します
- polling mechanismを実装する - frontendからserverをpollしてstatusの更新を確認します
- 両方の方法を組み合わせる - webhookをprimary source、pollingをfallbackとして使用します
推奨Architecture
Implementation Steps
1. checkout eventsをリッスンする - ユーザーがpayをクリックしたら、statusのverification準備を開始します。payment.succeededまたはpayment.failed webhooksを送信したら、databaseを更新します。詳細はWebhooks documentationを参照してください。
Troubleshooting
Checkout frame is not appearing
Checkout frame is not appearing
elementIdが、DOMに実際に存在するdivのidと一致することを確認するdisplayType: 'inline'がInitializeに渡されていることを確認するcheckoutUrlが有効であることを確認する
Taxes are not updating in my UI
Taxes are not updating in my UI
checkout.breakdowneventをリッスンしていることを確認する- 税額は、ユーザーがcheckout frameで有効な国と郵便番号を入力した後にのみ計算されます
Digital Wallets
Apple Pay、Google Pay、その他のdigital walletsの設定について詳しくは、Digital Walletsページを参照してください。Apple Payのクイック設定
Open Wallet domains

Open Wallet domains from the Apple Pay row
Download the domain association file

Download the Apple Pay domain association file
Register your domain
shop.example.com)を入力してから、Continueをクリックします。
Register the domain where you embed inline checkout
Host the file on your domain
Content-Type: application/octet-streamまたはtext/plainで配信する必要があります。Verify the domain

Verify the hosted association file
Confirm it's active

Verified domains show an Active status
Test the integration
- Apple deviceでcheckoutを開く
- Apple Pay buttonが表示されることを確認する
- test transactionを完了する
Browser Support
Dodo Payments Checkout SDKは次をサポートしています。- Chrome(latest)
- Firefox(latest)
- Safari(latest)
- Edge(latest)
- IE11+