これは公式のDodo Payments React NativeチェックアウトSDKで、
@dodopayments/react-native-checkoutです。Dodoのホスト型チェックアウトをネイティブブラウザビューで開き、型付きの結果を返します。注: dodopayments-react-native-sdk(スコープなし)という、APIがまったく異なる古い無関係なパッケージが存在します。このページでは、現在の公式スコープ付きパッケージのみを説明します。Checkout Sessions API
バックエンドから、このSDKが開くcheckout_urlを作成します。
Mobile Integration Guide
モバイル決済フロー全体の中での位置付けを確認します。
SFSafariViewControllerを、AndroidではChrome Custom Tabを開き、API keyを保持せず、Dodo APIを直接呼び出すこともありません。すべてのチェックアウトロジックはブラウザー内で実行され、SDKはビューのライフサイクルを管理し、戻りURLを取得するだけです。
インストール
1
Install the Package
- Android
- iOS
- Expo
パッケージは自動リンクされ、Mavenから追加の設定は不要です。ネイティブ依存関係は自動的に解決されます。
com.dodopayments.api:checkout-androidを取得します。2
Register a Callback URL Scheme
アプリでチェックアウトからの戻りURLを受け取るには、URLスキームを登録する必要があります。
- Android (Gradle)
- iOS (Info.plist)
- Expo (both platforms)
android/app/build.gradleで:android/app/build.gradle
"myapp"をアプリのスキームに置き換えます。使い方
Return URL の転送
Linking リスナーは、iOS の return URL 処理に必要です。Android では、handleOpenURL は何もせずに false を解決します。これは Android core がリダイレクトをネイティブに処理するためです。両方のプラットフォームでリスナーを無条件に登録しても問題ありません。
結果の意味
CheckoutStatus
必須
succeeded、failed、cancelled、pending、expired のいずれか。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 だけを根拠にしてはいけません。
外観のカスタマイズ
customization を使用して、start(...) 上でチェックアウトブラウザのツールバー、ボタン、カラースキームをカスタマイズできます。Android の Custom Tab と iOS の SFSafariViewController では利用できるネイティブコントロールが異なるため、オプションはプラットフォームごとにグループ化されています。すべてのフィールドはオプションです。customization を省略すると、各プラットフォームのデフォルトの外観が使用されます。
Android — Custom Tab
Android — Custom Tab
Color
ツールバーの背景色。
ナビゲーションバーの色。
ナビゲーションバーの上に表示される区切り線の色。
'default' | 'back'
default ではシステムの「X」アイコンが表示され、back では代わりに戻る矢印が描画されます。'start' | 'end'
ツールバーの閉じるボタンを表示する側。
ツールバーの共有アイコンを表示します。
boolean
ツールバーで URL の下にページタイトルを表示します。
boolean
ページのスクロールに合わせてツールバーを自動的に非表示にします。
boolean
オーバーフローメニューに「このページをブックマーク」を表示します。
boolean
オーバーフローメニューに「ページをダウンロード」を表示します。
'system' | 'light' | 'dark'
デバイスのシステム設定に関係なく、ライトまたはダークの外観を強制します。
iOS — SFSafariViewController
iOS — SFSafariViewController
'done' | 'close' | 'cancel'
閉じるボタンのラベルまたはアイコン。
'pageSheet' | 'fullScreen'
pageSheet はスワイプして閉じるカードとして表示され、fullScreen は画面全体を覆います。boolean
スクロール時にツールバーを折りたたみます。
presentationStyle が fullScreen の場合にのみ表示されます。pageSheet では、この設定に関係なくバーが固定されたままになります。'system' | 'light' | 'dark'
デバイスのシステム設定に関係なく、ライトまたはダークの外観を強制します。
エラー
start は、誤用またはプラットフォームの障害が発生した場合にのみ、CheckoutError で reject します。キャンセルまたは拒否された支払いは常に結果として返され、例外にはなりません。
INVALID_CHECKOUT_URL:checkout.dodopayments.comセッション URL ではありません。INVALID_RETURN_URL: 有効な絶対 URL ではありません。ALREADY_IN_PROGRESS: チェックアウトはすでに実行中です。PLATFORM_ERROR: 予期しないプラットフォーム障害です。
放棄されたセッション
チェックアウトの途中でアプリまたは JS bundle が強制終了されると、promise は失われますが、native layer はセッションを保持します。次回の mount でセッションを復元し、backend と照合してください。関連情報
Mobile Integration Guide
Android、iOS、Flutter に共通する同じ契約です。
Expo Boilerplate
チェックアウト統合を含む完全な Expo の例です。