このページでは、Android checkout SDK(
com.dodopayments.api:checkout-android)について説明します。この SDK はアプリ内で Dodo Payments hosted checkout を開きます。サーバーから Dodo Payments API を呼び出すには、代わりに backend Kotlin SDK を使用してください。Checkout Sessions API
この SDK が開く
checkout_url を作成します。Mobile Integration Guide
モバイル checkout フローのベストプラクティス。
androidx.browser.customtabs)で開き、顧客が checkout を完了または離脱したときに型付きの CheckoutResult を返します。バックエンドは checkout session を作成し、その checkout_url をアプリに送信します。SDK にはネットワークコードが含まれず、API key も保持しないため、Dodo Payments API を呼び出すことはありません。
要件: minSdk 23、Kotlin、および Java 17。SDK は androidx.activity、androidx.browser、kotlinx-coroutines-android のみに依存します。
インストール
1
Add the Dependency
Maven Central から SDK をアプリモジュールの Appearance customization にはバージョン 1.1.0 以降が必要です。
build.gradle.kts に追加します。build.gradle.kts
2
Register a Callback URL Scheme
コールバック scheme を Gradle manifest placeholder として設定します。SDK 自体の manifest はリダイレクト activity の intent filter を
${dodoCallbackScheme} placeholder とともに宣言するため、このプロパティの設定だけで完了します。manifest XML を追加する必要はありません。build.gradle.kts
CheckoutParams.returnUrl では同じ scheme を使用します。たとえば myapp://checkout/return のように指定し、バックエンドで session を作成するときに checkout session の return_url に同じ URL を設定します。SDK は scheme、host、path に基づいて return URL を照合し、query string は無視します。この URL で実際のページを読み込む必要はありません。placeholder を省略すると、未解決の placeholder エラーでビルドが失敗します。placeholder が
returnUrl の scheme と一致しない場合、SDK は checkout を開く前に PLATFORM_ERROR をスローします。使用方法
SDK には checkout を開始する方法が 2 つあります。activity result launcher と suspend function です。どちらも同じCheckoutResult を返します。
- Launcher (Recommended)
- Suspend Function
registerForActivityResultにコントラクトを登録してから、起動します。結果の意味
SDK は return URL の query parameters からCheckoutResult を構築します。
CheckoutStatus
必須
次の 5 つの値のいずれかです。
SUCCEEDED: return URL にstatus=succeeded(one-time payment)またはstatus=active(subscription)が含まれています。FAILED: 支払いが拒否されました(status=failed)。CANCELLED: return URL が届く前に顧客が Custom Tab を閉じました。SDK は結果を把握できず、支払いが成功している可能性もあるため、失敗画面を表示しないでください。代わりに abandoned session を照合してください。PENDING: 支払いが後で確定します(status=processingまたは任意のrequires_*値)。またはstatusparameter が欠落しているか認識されませんでした。CANCELLEDと同様に照合してください。EXPIRED: checkout session の有効期限が切れました(status=expired)。
String?
return URL に含まれる場合の
payment_id query parameter です。UI に表示しますが、アクセス許可の判断には使用しないでください。支払いを検証するを参照してください。String?
subscription_id query parameter です。subscription checkout に設定されます。List<String>?
license_key query parameter です。checkout に license key products が含まれる場合に設定されます。String?
email query parameter です。checkout でメールアドレスを取得すると設定されます。Map<String, String>
return URL のすべての query parameter をそのまま返します。
支払いを検証する
Webhooks
支払いイベントをリアルタイムでリッスンします。
Get Payment Detail
必要に応じて支払いステータスを照会します。
payment.succeeded または subscription.active webhook を使用します。CheckoutResult.status だけに依存しないでください。
外観のカスタマイズ
Custom Tab の toolbar、buttons、color scheme を変更するには、CheckoutParams の customization として BrowserCustomization を渡します。すべての field は省略可能で、デフォルトは null です。null field の場合、SDK はその option を設定しないため、Custom Tab をホストする browser 独自のデフォルトが適用されます。
Int?
toolbar の背景色を ARGB
Color int として指定します。navigation bar の色を ARGB
Color int として指定します。navigation bar 上部の divider の色を ARGB
Color int として指定します。CloseButtonStyle?
DEFAULT はシステムの「X」アイコンを表示します。BACK は SDK が描画する戻る矢印を表示します。CloseButtonPosition?
close button が表示される toolbar の側を指定します。
START または END です。toolbar の share icon を表示します。
false はこれを非表示にします。Boolean?
toolbar の URL の下にページタイトルを表示します。
Boolean?
ページのスクロール時に toolbar を自動的に非表示にします。
Boolean?
overflow menu に「このページをブックマーク」を表示します。
Boolean?
overflow menu に「ページをダウンロード」を表示します。
ColorScheme?
LIGHT または DARK は、デバイスのシステム設定に関係なく、その外観を強制します。SYSTEM はシステム設定に従います。checkoutLauncher を再利用します。
エラー
DodoCheckout.start は、誤用またはプラットフォーム障害の場合にのみ CheckoutError をスローします。理由は CheckoutError.code から読み取ります。
INVALID_CHECKOUT_URL:checkoutUrlは、checkout.dodopayments.comまたはtest.checkout.dodopayments.com上の、/session/で始まる path を持つhttpscheckout session URL ではありません。INVALID_RETURN_URL:returnUrlは scheme と host を持つ absolute URL ではありません。ALREADY_IN_PROGRESS: 別の checkout が実行中です。一度に実行できる checkout は 1 つだけです。PLATFORM_ERROR:returnUrlscheme がdodoCallbackSchemeplaceholder と一致しない場合を含む、予期しないプラットフォーム障害です。
CANCELLED または FAILED)として返され、スローされるエラーではありません。launcher では、検証エラーは launcher.launch(...) からスローされます。起動後のプラットフォーム障害は activity result callback を通じてスローできないため、launcher は raw["error"] にエラーコードを含む CANCELLED を返します。
放棄されたセッション
SDK は checkout の開始時に checkout session を記録し、checkout がSUCCEEDED、FAILED、または EXPIRED で終了した場合にのみ記録を消去します。checkout 中にアプリが終了した場合、または CANCELLED や PENDING の結果が返された場合は、記録が残ります。これは、SDK が結果を把握できないためです。次回のアプリ起動時、および CANCELLED または PENDING の結果が返るたびに確認してください。
abandoned.sessionId は checkout session ID で、cks_ で始まります。abandoned.createdAt は checkout の開始時刻で、ミリ秒単位の epoch timestamp です。バックエンドでは Get Checkout Session を使用して session を検索できます。この API は payment_id と payment_status を返します。支払いが final status に達するまでは、失敗ではなく pending として扱ってください。
関連情報
Mobile Integration Guide
モバイル checkout フローのベストプラクティス。
Kotlin SDK
サーバー側の操作用 Backend SDK。