これは、Dodoのホスト型チェックアウトを開くための公式AndroidチェックアウトSDK(
com.dodopayments.api:checkout-android)です。
サーバーからDodo
Payments APIを呼び出すbackend Kotlin SDKとは異なります。Checkout Sessions API
このSDKが開く
checkout_urlを作成するMobile Integration Guide
モバイルチェックアウトフローのベストプラクティス
androidx.browser.customtabsを使用して、Dodoのホスト型チェックアウトをChrome Custom Tabで開きます。ネットワークコードは一切含まず、API keyも保持しません。バックエンドのcheckout sessionからcheckoutUrlを渡すと、ユーザーがフローを完了または中止したときに、SDKは型付きのCheckoutResultを返します。
要件: minSdk 23、Kotlin、Java 17。
インストール
1
Add the Dependency
build.gradle.kts
2
Register a Callback URL Scheme
コールバックスキームをGradle manifest placeholderとして設定します。ライブラリ独自の
manifestでは、すでにリダイレクトアクティビティのintent filterが
値は
${dodoCallbackScheme}トークンを使って宣言されています。そのため、この1つのプロパティだけで設定は完了します。
manifest XMLを追加する必要はありません。build.gradle.kts
CheckoutParams.returnUrl内のスキーム(例: myapp://checkout/return)と一致する必要があります。placeholderを完全に省略すると、チェックアウト時に何も起こらず失敗するのではなく、
unresolved-placeholderエラーですぐにビルドが失敗します。設定した値が
returnUrlのスキームと一致しない場合、DodoCheckout.startは何も表示する前にPLATFORM_ERRORをスローします。使用方法
SDKは2種類の呼び出し方法に対応しています。- Launcher (Recommended)
- Suspend Function
registerForActivityResultにコントラクトを登録してから、起動します。結果の意味
CheckoutStatus
必須
SUCCEEDED、FAILED、CANCELLED、PENDING、EXPIREDのいずれか1つ。String?
return URLに含まれている場合に設定されます。UIに表示しますが、アクセスの許可には使用しないでください。下記の「支払いの検証」を参照してください。
String?
subscription checkoutの場合に設定されます。
List<String>?
チェックアウトにlicense key productsが含まれている場合に設定されます。
String?
チェックアウトでemailを取得した場合に設定されます。
Map<String, String>
return URLのすべてのquery parameterを、そのまま保持します。
支払いの検証
Webhooks
支払いイベントをリアルタイムでリッスンする
Get Payment Detail
必要に応じて支払いステータスをクエリする
CheckoutResult.statusだけに依存しないでください。
エラー
DodoCheckout.startがCheckoutErrorをスローするのは、誤った使用またはプラットフォーム障害の場合のみです。コードはCheckoutError.codeから読み取ります。
INVALID_CHECKOUT_URL:checkout.dodopayments.comsession URLではありません。INVALID_RETURN_URL: 有効なabsolute URLではありません。ALREADY_IN_PROGRESS: checkoutがすでに実行中です。PLATFORM_ERROR:dodoCallbackSchemeplaceholderとスキームが一致しないreturnUrlを含む、予期しないプラットフォーム障害。
CANCELLEDまたはFAILED)として返され、スローされるエラーにはなりません。launcher styleでは、検証エラーはlauncher.launch(...)の外部にスローされます。
放棄されたセッション
チェックアウト中にアプリが終了したり、ユーザーがアプリを強制停止したりすると、SDKはセッションをローカルに保存します。次回アプリを起動したときに、放棄されたセッションがないか確認し、バックエンドと照合してください。abandoned.createdAtは、ミリ秒単位のepoch timestampです。
関連情報
Mobile Integration Guide
モバイルチェックアウトフローのベストプラクティス
Kotlin SDK
サーバーサイド操作用のBackend SDK