Android SDK
DEUNA Android SDKをインストールし、モーダル、埋め込み、ウォレット、バウチャー、および次アクションのフローを統合します。
このページで
DEUNA Android SDKを使用して、Kotlinアプリケーションで、完全なチェックアウト、決済ウィジェット、決済ウォレット、クリックによる決済、次アクション、バウチャー、およびネイティブのGoogle Pay体験を表示します。 SDKはAndroid API 22以降をサポートしています。
インストール#
依存関係解決に JitPack を追加し、SDKの特定のリリースバージョンを固定します。
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven(url = "https://jitpack.io")
}
}android {
defaultConfig {
minSdk = 22
}
}
dependencies {
implementation("com.github.deuna-developers:deunasdk:<version>")
}選択し、固定します <version> リポジトリの リリース。本番環境への展開前に、サンドボックス環境でのテストを必ず実施してください。
初期化#
選択した環境の公開 API キーを使用して、1 つの SDK インスタンスを作成し、所有フローで保持します。
import com.deuna.maven.DeunaSDK
import com.deuna.maven.shared.Environment
val deunaSDK = DeunaSDK(
environment = Environment.SANDBOX,
publicApiKey = "YOUR_PUBLIC_API_KEY",
)アプリケーション全体で、共有された SDK を 1 回初期化します。
DeunaSDK.initialize(
environment = Environment.SANDBOX,
publicApiKey = "YOUR_PUBLIC_API_KEY",
)
val deunaSDK = DeunaSDK.sharedPayment Widget をモーダルで開きます。#
タイプされたコールバックを作成し、 Activity または、別の有効なUI Context:
import com.deuna.maven.initPaymentWidget
import com.deuna.maven.widgets.payment_widget.PaymentWidgetCallbacks
val callbacks = PaymentWidgetCallbacks().apply {
onSuccess = { order ->
deunaSDK.close()
showConfirmation(order)
}
onError = { error -> showRetry(error) }
onClosed = { action -> showCart(action) }
onPaymentProcessing = { disablePayButton() }
onEventDispatch = { event, payload ->
analytics.track(event.name, payload)
}
}
deunaSDK.initPaymentWidget(
context = this,
orderToken = orderToken,
callbacks = callbacks,
language = "en",
)モダールホストは、ウィジェットとリダイレクトビューを管理します。 close() ウィジェットの動作が完了またはエラーが発生した場合、外部URLが閉じられるまで待機してからウィジェットを解放します。
利用可能な機能#
| 体験 | メソッド | 重要な入力 |
|---|---|---|
| 完了 | initCheckout(...) | context, orderToken, CheckoutCallbacks |
| 決済ウィジェット | initPaymentWidget(...) | context, orderToken, PaymentWidgetCallbacks |
| 支払いVault | initElements(...) | context, ElementsCallbacks; types 省略可能 |
| クリック・トゥ・ペイ | initElements(...) | types = listOf(mapOf("name" to "click_to_pay")) |
| 次のアクション | initNextAction(...) | 注文に必要な次のアクションのためのトークン |
| バウチャー | initVoucherWidget(...) | バウチャー注文用のトークン |
すべてのモーダルメソッドは、サポートされている場合に、オプションの言語、不正検知、カスタムユーザーエージェント、およびドメインの入力を受け付けます。オーバーライドしないでください。 domain DEUNAから特定の統合ホストが提供されない場合
決済ウィジェットの埋め込み#
埋め込みモードでは、定義済みの設定を使用します。 DeunaWidgetこのJetpack Composeの例では、決済ウィジェットと、画面のライフサイクルと共にWebViewをレンダリングし、破棄します。
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.viewinterop.AndroidView
import com.deuna.maven.web_views.deuna.DeunaWidget
import com.deuna.maven.web_views.deuna.extensions.build
import com.deuna.maven.widgets.configuration.PaymentWidgetConfiguration
val configuration = remember(orderToken) {
PaymentWidgetConfiguration(
sdkInstance = deunaSDK,
orderToken = orderToken,
callbacks = callbacks,
)
}
val widget = remember { mutableStateOf<DeunaWidget?>(null) }
AndroidView(
factory = { context ->
DeunaWidget(context).apply {
widgetConfiguration = configuration
build()
widget.value = this
}
},
)
DisposableEffect(Unit) {
onDispose { widget.value?.destroy() }
}コール resume() および pause() 縦方向にスクロールする画面内のウィジェットの場合、 AutoResizeConfig 設定で接続し、 setOnScrollByCallback 親コンポーネントの状態に接続します。
アプリケーションが決済ボタンを所有している場合は、 hidePayButton = true 設定で有効にし、組み込みの DeunaWidget 機能を使用します。 submit { result -> ... } ボタンのタップから呼び出します。
Payment Vault と Click to Pay#
Payment Vault は、標準の Elements の体験です。 認証された userToken クレデンシャル、または UserInfo 顧客を識別するために。
import com.deuna.maven.initElements
import com.deuna.maven.shared.ElementsCallbacks
import com.deuna.maven.shared.domain.UserInfo
val elementsCallbacks = ElementsCallbacks().apply {
onSuccess = { credential -> useSavedCredential(credential) }
onError = { error -> showRetry(error) }
onClosed = { action -> showPaymentMethods(action) }
}
deunaSDK.initElements(
context = this,
orderToken = orderToken,
userInfo = UserInfo(email = "ada@example.com"),
types = listOf(mapOf("name" to "vault")),
callbacks = elementsCallbacks,
)使用する "click_to_pay" 代わりに "vault" Click to Pay 用。
ネイティブ Google Pay#
Google Pay ボタンを表示する前に、商人の設定とデバイスのサポートの両方を確認してください。 結果は SDK によってキャッシュされます。
import com.deuna.maven.wallets.GetWalletsAvailableParams
import com.deuna.maven.wallets.WalletProvider
import com.deuna.maven.wallets.getWalletsAvailable
val userInfo = UserInfo(email = "ada@example.com")
deunaSDK.getWalletsAvailable(
context = this,
params = GetWalletsAvailableParams(
orderToken = orderToken,
userInfo = userInfo,
),
) { wallets, error ->
if (error != null) {
showWalletError(error)
return@getWalletsAvailable
}
googlePayButton.isVisible = WalletProvider.GOOGLE_PAY in wallets
}利用可能になった場合に、ボタンのタップからシートを起動します。 initElements 最初に利用可能状態の呼び出しが必要です。
googlePayButton.setOnClickListener {
deunaSDK.initElements(
context = this,
orderToken = orderToken,
userInfo = userInfo,
types = listOf(mapOf("name" to WalletProvider.GOOGLE_PAY.name)),
callbacks = elementsCallbacks,
)
}詳細は Google Pay 商人の登録、テスト、およびトークン化に関する詳細については。
保留中の操作を続行#
DEUNA が支払いに対してサポートされている 3DS チャレンジまたはリダイレクトが必要であると報告した場合、同じ注文トークンを使用してください。
deunaSDK.initNextAction(
context = this,
orderToken = orderToken,
callbacks = nextActionCallbacks,
)SDK はサポートされている外部 URL を開き、アクティブなウィジェットに戻ります。 インターフェースと履行のための検証済み Webhook を使用してください。
クーポンを開く#
deunaSDK.initVoucherWidget(
context = this,
orderToken = orderToken,
callbacks = voucherCallbacks,
)バウチャーのコールバックは、他の決済体験と同様に、成功、エラー、クローズ、およびイベント送信のライフサイクルに従います。
不正利用デバイスデータ#
事前に、例えば、 Application.onCreateなどの設定済みのネイティブ不正利用プロバイダーを初期化することで、後続の決済フローにおける遅延を軽減します。
DeunaSDK.initializeFraudProviders(
context = applicationContext,
params = mapOf("MERCADOPAGO" to emptyMap<String, Any>()),
onError = { message -> logFraudError(message) },
)必要に応じて、注文またはリスクフローで、結合された識別子を生成します。
deunaSDK.generateFraudId(
context = this,
callback = { fraudId -> attachFraudId(fraudId) },
)アカウントに割り当てられた不正利用プロバイダーの依存関係と設定のみを含めます。詳細は、 デバイスフィンガープリントを統合.
コールバックとライフサイクル参照を参照してください。#
| コールバックまたはメソッド | これを使用してください |
|---|---|
onSuccess | 体験が成功した場合にインターフェースを更新します。 |
onError | タイプされた PaymentsError または ElementsError. |
onClosed | 顧客とSDKによって制御されたクローズを区別します。 |
onEventDispatch | サポートされているチェックアウトまたはElementsのライフサイクルイベントを監視します。 |
onCardBinDetected | Payment WidgetまたはElementsでカードBIN検出に応答します。 |
onInstallmentSelected | 分割払いプランの選択に応答します。 |
onPaymentProcessing | 重複した決済アクションを防止します。 |
close() | 外部ビューが閉じられた後に、アクティブなモーダルを閉鎖します。 |
公式の例とソースコード#
例の ExploreViewModel.kt 構成ファクトリと EmbeddedScreen.kt WebViewのライフサイクル処理に関する情報。