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"をアプリのスキームに置き換えます。

使用方法

戻りURLの転送

Linkingリスナーは、iOSでの戻りURL処理に必要です。Androidでは、handleOpenURLfalseを解決するだけのno-opです。Androidコアがリダイレクトをネイティブに処理するためです。両プラットフォームでリスナーを無条件に登録しても安全です。

結果の意味

result.statusはUI上のヒントであり、支払いの証明ではありません。payment.succeeded / subscription.active webhookを使用して、すべての支払いをバックエンドから確認してください。
CheckoutStatus
必須
succeededfailedcancelledpendingexpiredのいずれか。
string
戻りURLにその値が含まれていた場合に設定されます。UIに表示しますが、アクセス許可には使用しないでください。下記の「支払いの検証」を参照してください。
string
サブスクリプションのチェックアウトで設定されます。
string[]
チェックアウトにlicense key商品が含まれている場合に設定されます。
string
チェックアウトでメールアドレスを取得した場合に設定されます。
Record<string, string>
戻りURLに含まれるすべてのquery parameterを、そのまま保持します。

支払いの検証

Webhooks

支払いが成功したとき、またはサブスクリプションが有効化されたとき、Dodo Paymentsはバックエンドを呼び出します。

Get Payment Detail

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

エラー

startは、誤用またはプラットフォーム障害の場合にのみCheckoutErrorでrejectします。キャンセルまたはdeclinedとなった支払いは常に結果として返され、例外にはなりません。
  • INVALID_CHECKOUT_URL: checkout.dodopayments.comのsession URLではありません。
  • INVALID_RETURN_URL: 有効なabsolute URLではありません。
  • ALREADY_IN_PROGRESS: チェックアウトはすでに実行中です。
  • PLATFORM_ERROR: 予期しないプラットフォーム障害です。

放棄されたセッション

チェックアウトの途中でアプリまたはJS bundleが終了すると、promiseは失われますが、ネイティブ層はセッションを保持します。次回のmount時に復元し、バックエンドと照合してください。

関連情報

Mobile Integration Guide

Android、iOS、Flutterで共通のコントラクトです。

Expo Boilerplate

チェックアウト統合を含む完全なExpoの例です。
最終更新日 2026年7月31日