Skip to main content
これは公式のDodo Payments React NativeチェックアウトSDKで、@dodopayments/react-native-checkoutです。Dodoのホスト型チェックアウトをネイティブブラウザビューで開き、型付きの結果を返します。注: dodopayments-react-native-sdk(スコープなし)という、APIがまったく異なる古い無関係なパッケージが存在します。このページでは、現在の公式スコープ付きパッケージのみを説明します。

Checkout Sessions API

バックエンドから、このSDKが開くcheckout_urlを作成します。

Mobile Integration Guide

モバイル決済フロー全体の中での位置付けを確認します。
React Native SDKは、同じネイティブSwiftおよびKotlinコア上に構築された薄いTurbo Moduleラッパーです。iOSではSFSafariViewControllerを、AndroidではChrome Custom Tabを開き、API keyを保持せず、Dodo APIを直接呼び出すこともありません。すべてのチェックアウトロジックはブラウザー内で実行され、SDKはビューのライフサイクルを管理し、戻りURLを取得するだけです。
このSDKにはNew Architectureのみ、React Native 0.76以降、iOS 16以降、およびAndroid minSdk 24が必要です。

インストール

1

Install the Package

パッケージは自動リンクされ、Mavenからcom.dodopayments.api:checkout-androidを取得します。
追加の設定は不要です。ネイティブ依存関係は自動的に解決されます。
2

Register a Callback URL Scheme

アプリでチェックアウトからの戻りURLを受け取るには、URLスキームを登録する必要があります。
android/app/build.gradleで:
android/app/build.gradle
"myapp"をアプリのスキームに置き換えます。

使い方

Return URL の転送

Linking リスナーは、iOS の return URL 処理に必要です。Android では、handleOpenURL は何もせずに false を解決します。これは Android core がリダイレクトをネイティブに処理するためです。両方のプラットフォームでリスナーを無条件に登録しても問題ありません。

結果の意味

result.status は UI のヒントであり、支払いの証明ではありません。payment.succeeded / subscription.active webhook を介して、すべての支払いを backend から確認してください。
CheckoutStatus
必須
succeededfailedcancelledpendingexpired のいずれか。
string
return URL にいずれかが含まれていた場合に設定されます。UI に表示するために使用し、アクセスの付与には使用しないでください。詳しくは、下記の「支払いの確認」を参照してください。
string
subscription checkout の場合に設定されます。
string[]
checkout に license key product が含まれている場合に設定されます。
string
checkout でメールアドレスを取得した場合に設定されます。
Record<string, string>
return URL に含まれるすべての query parameter を、そのまま保持します。

支払いの確認

Webhooks

支払いが成功したとき、または subscription が有効になったとき、Dodo Payments は backend を呼び出します。

Get Payment Detail

secret key を使用して paymentId を検索し、そのステータスを直接確認します。
これらのいずれかによって支払いが確認された後にアクセスを付与してください。result.status だけを根拠にしてはいけません。

エラー

start は、誤った使い方または platform failure の場合にのみ CheckoutError を返します。キャンセルまたは declined された支払いは常に結果として返され、例外にはなりません。
  • INVALID_CHECKOUT_URL: checkout.dodopayments.com の session URL ではありません。
  • INVALID_RETURN_URL: 有効な absolute URL ではありません。
  • ALREADY_IN_PROGRESS: checkout はすでに実行中です。
  • PLATFORM_ERROR: 予期しない platform failure です。

放棄されたセッション

checkout の途中で app または JS bundle が終了すると、promise は失われますが、native layer は session を保持します。次回の mount 時に復元し、backend と reconcile してください。

関連情報

Mobile Integration Guide

Android、iOS、Flutter で共通の contract です。

Expo Boilerplate

checkout integration を含む完全な Expo の例です。
最終更新日 2026年8月6日