iOS SDK
DEUNA iOS SDKをインストールし、モーダル、埋め込み、ウォレット、バウチャー、および次アクションのフローを統合します。
このページで
DEUNA iOS SDKを使用して、完全なチェックアウト、決済ウィジェット、決済ウォレット、クリック決済、次アクション、バウチャー、およびネイティブのApple Pay体験を表示します。コアパッケージはiOS 13以降をサポートし、統合されたSwiftUIを使用します。 DeunaWidget iOS 14以降が必要です。
インストール#
Swift Package Manager
Xcodeで、[選択] ファイル → パッケージ依存関係の追加、リポジトリURLを入力し、リリースバージョンをピン留めます:
https://github.com/deuna-developers/deuna-sdk-iosコア DeunaSDK 製品を選択します。パッケージマニフェストに製品を追加し、ターゲットの依存関係に含めます。
.product(name: "DeunaSDK", package: "deuna-sdk-ios")CocoaPods
必要なサブスペックを追加し、SDKのバージョンを、ご自身のリリースポリシーに従って設定してください。
pod 'DeunaSDK/Core', '~> 2.12'不正利用防止プロバイダーのフレームワークはオプションです。ご自身のアカウントに割り当てられた製品またはサブスペックのみを追加してください。 DeunaSDK/Cybersource, DeunaSDK/Kount, DeunaSDK/Sift, DeunaSDK/Riskified, DeunaSDK/Signifyd, DeunaSDK/Accertify、または DeunaSDK/MercadoPago.
初期化#
選択した環境の公開APIキーを使用して、1つのSDKインスタンスを作成し、それを所有する画面またはコーディネーターで保持してください。
import DeunaSDK
let deunaSDK = DeunaSDK(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)アプリケーション全体で利用する場合は、SDKを初期化し、共有されたSDKを読み込みます。
DeunaSDK.initialize(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)
let deunaSDK = DeunaSDK.sharedPayment Widget をモーダルで開きます。#
バックエンドから返された注文トークンを渡す、型付きコールバックを作成してください。
let callbacks = PaymentWidgetCallbacks(
onSuccess: { order in
deunaSDK.close()
showConfirmation(order)
},
onError: { error in
showRetry(error)
},
onClosed: { action in
showCart(action)
},
onPaymentProcessing: {
disablePayButton()
},
onEventDispatch: { event, payload in
analytics.track(event, payload)
}
)
deunaSDK.initPaymentWidget(
orderToken: orderToken,
callbacks: callbacks,
language: "en"
)コール close() アクティブなウィジェットを非アクティブにするために、このメソッドを呼び出します。 dispose() 親となるフローが終了したときに、コントローラーとWebViewを解放するために呼び出します。
利用可能な機能#
| 体験 | メソッド | 重要な入力 |
|---|---|---|
| 完了 | initCheckout(...) | orderToken, CheckoutCallbacks |
| 決済ウィジェット | initPaymentWidget(...) | orderToken, PaymentWidgetCallbacks |
| 支払いVault | initElements(...) | ElementsCallbacks; types 省略可能 |
| クリック・トゥ・ペイ | initElements(...) | types: [["name": ElementsWidget.clickToPay]] |
| 次のアクション | initNextAction(...) | 注文に必要な次のアクションのためのトークン |
| バウチャー | initVoucher(...) | バウチャー注文用のトークン |
iOS版のメソッド名は initVoucherです。 initVoucherWidget.
SwiftUIを使用してウィジェットを埋め込みます。#
iOS 14以降では、型付きの構成を作成し、レンダリングします。 DeunaWidget. SDKは、設定タイプに基づいて適切な組み込みコントローラーを選択します。
struct PaymentScreen: View {
let deunaSDK: DeunaSDK
let orderToken: String
let callbacks: PaymentWidgetCallbacks
var body: some View {
let configuration = PaymentWidgetConfiguration(
orderToken: orderToken,
callbacks: callbacks
)
DeunaWidget(
deunaSDK: deunaSDK,
configuration: configuration
)
}
}使用する CheckoutWidgetConfiguration, ElementsWidgetConfiguration, NextActionWidgetConfiguration、または VoucherWidgetConfiguration 他のプラットフォームとの連携を検討されている場合。
内部のウィジェット用 ScrollView, パス AutoResizeConfig(initialHeight: 150) 設定と管理 onScrollNeeded これにより、キーボードの上で入力フィールドが引き続き表示されます。
DeunaWidget(deunaSDK: deunaSDK, configuration: configuration)
.onScrollNeeded { points in
scrollBy(points)
}アプリケーションが決済ボタンを所有している場合は、 hidePayButton: true 設定と呼び出し時に deunaSDK.submit { result in ... } ボタンのアクションから。
Payment Vault と Click to Pay#
Payment Vault は、標準の Elements の体験です。 認証された userToken または UserInfo 顧客向け。
let elementsCallbacks = ElementsCallbacks(
onSuccess: { credential in useSavedCredential(credential) },
onError: { error in showRetry(error) },
onClosed: { action in showPaymentMethods(action) },
onEventDispatch: { event, payload in
analytics.track(event, payload)
}
)
deunaSDK.initElements(
callbacks: elementsCallbacks,
userInfo: DeunaSDK.UserInfo(email: "ada@example.com"),
types: [["name": ElementsWidget.vault]],
orderToken: orderToken
)使用する ElementsWidget.clickToPay 代わりに ElementsWidget.vault Click to Pay 用。
ネイティブ Apple Pay#
Apple Pay ボタンを表示する前に、商取引側の設定とデバイスの機能を必ず確認してください。SDKは結果をキャッシュします。
let userInfo = DeunaSDK.UserInfo(email: "ada@example.com")
let params = GetWalletsAvailableParams(
orderToken: orderToken,
userInfo: userInfo
)
deunaSDK.getWalletsAvailable(params: params) { wallets, error in
if let error {
showWalletError(error)
return
}
applePayButton.isHidden = !wallets.contains(.applePay)
}利用可能になった後、ボタンのアクションからApple Payを開始するには、ウォレットを選択します。 initElements:
deunaSDK.initElements(
callbacks: elementsCallbacks,
userInfo: userInfo,
types: [["name": WalletProvider.applePay.processorName.uppercased()]],
orderToken: orderToken
)アプリケーションには、Apple Payの権限と、商人の識別子を含むプロビジョニングプロファイルが必要です。詳細は、 Apple Pay の統合について説明します を参照してください。
保留中の操作を続行#
DEUNA が支払いに対してサポートされている 3DS チャレンジまたはリダイレクトが必要であると報告した場合、同じ注文トークンを使用してください。
deunaSDK.initNextAction(
orderToken: orderToken,
callbacks: nextActionCallbacks
)SDKは、サポートされている外部URLと、ウィジェットへの制御を返します。インターフェースにはコールバック状態を使用し、履行には検証済みのWebhookを使用します。
クーポンを開く#
deunaSDK.initVoucher(
orderToken: orderToken,
callbacks: voucherCallbacks
)バウチャーのコールバックは、他の決済体験と同様に、成功、エラー、クローズ、およびイベント送信のライフサイクルに従います。
不正利用デバイスデータ#
コア製品は、不正検知プロバイダーへの依存を必要としません。使用しているプロバイダー製品またはサブ仕様のみをリンクし、以下の手順を実行します。 generateFraudId アカウントに割り当てられた設定を使用して呼び出します。
deunaSDK.generateFraudId(params: [
"CYBERSOURCE": [
"orgId": "YOUR_ORG_ID",
"merchantId": "YOUR_MERCHANT_ID",
],
]) { fraudId in
guard let fraudId else { return }
sendFraudIdToBackend(fraudId)
}要求されたプロバイダーフレームワークがリンクされていない場合、SDKはそのプロバイダーをスキップします。 詳細は参照してください。 デバイスフィンガープリントを統合 プロバイダ固有の設定のため。
コールバックとライフサイクル参照を参照してください。#
| コールバックまたはメソッド | これを使用してください |
|---|---|
onSuccess | 体験が成功した場合にインターフェースを更新します。 |
onError | タイプされた PaymentsError または ElementsError. |
onClosed | 顧客とSDKによって制御されたクローズを区別します。 |
onEventDispatch | サポートされているチェックアウトまたはElementsのライフサイクルイベントを監視します。 |
onCardBinDetected | カードのBIN(銀行識別番号)を検出した場合の対応 |
onInstallmentSelected | 分割払いプランの選択に応答します。 |
onPaymentProcessing | 重複した決済アクションを防止します。 |
close() | アクティブなプレゼンテーションを閉じ、SDK コントローラーを保持します。 |
dispose() | フローが終了した際に、アクティブなコントローラーと WebView を解放します。 |
公式の例とソースコード#
詳細は WalletsScreen.swift ネイティブのApple Pay用 EmbeddedScreen.swift および、SwiftUIライフサイクルのための設定。