メインコンテンツへスキップ
このページで

DEUNA iOS SDKを使用して、完全なチェックアウト、決済ウィジェット、決済ウォレット、クリック決済、次アクション、バウチャー、およびネイティブのApple Pay体験を表示します。コアパッケージはiOS 13以降をサポートし、統合されたSwiftUIを使用します。 DeunaWidget iOS 14以降が必要です。

インストール#

Swift Package Manager

Xcodeで、[選択] ファイル → パッケージ依存関係の追加、リポジトリURLを入力し、リリースバージョンをピン留めます:

Plain text
https://github.com/deuna-developers/deuna-sdk-ios

コア DeunaSDK 製品を選択します。パッケージマニフェストに製品を追加し、ターゲットの依存関係に含めます。

Package.swiftSwift
.product(name: "DeunaSDK", package: "deuna-sdk-ios")

CocoaPods

必要なサブスペックを追加し、SDKのバージョンを、ご自身のリリースポリシーに従って設定してください。

PodfileRuby
pod 'DeunaSDK/Core', '~> 2.12'

不正利用防止プロバイダーのフレームワークはオプションです。ご自身のアカウントに割り当てられた製品またはサブスペックのみを追加してください。 DeunaSDK/Cybersource, DeunaSDK/Kount, DeunaSDK/Sift, DeunaSDK/Riskified, DeunaSDK/Signifyd, DeunaSDK/Accertify、または DeunaSDK/MercadoPago.

初期化#

選択した環境の公開APIキーを使用して、1つのSDKインスタンスを作成し、それを所有する画面またはコーディネーターで保持してください。

Swift
import DeunaSDK

let deunaSDK = DeunaSDK(
  environment: .sandbox,
  publicApiKey: "YOUR_PUBLIC_API_KEY"
)

アプリケーション全体で利用する場合は、SDKを初期化し、共有されたSDKを読み込みます。

Swift
DeunaSDK.initialize(
  environment: .sandbox,
  publicApiKey: "YOUR_PUBLIC_API_KEY"
)

let deunaSDK = DeunaSDK.shared

Payment Widget をモーダルで開きます。#

バックエンドから返された注文トークンを渡す、型付きコールバックを作成してください。

Swift
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
支払いVaultinitElements(...)ElementsCallbacks; types 省略可能
クリック・トゥ・ペイinitElements(...)types: [["name": ElementsWidget.clickToPay]]
次のアクションinitNextAction(...)注文に必要な次のアクションのためのトークン
バウチャーinitVoucher(...)バウチャー注文用のトークン

iOS版のメソッド名は initVoucherです。 initVoucherWidget.

SwiftUIを使用してウィジェットを埋め込みます。#

iOS 14以降では、型付きの構成を作成し、レンダリングします。 DeunaWidget. SDKは、設定タイプに基づいて適切な組み込みコントローラーを選択します。

Swift
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 これにより、キーボードの上で入力フィールドが引き続き表示されます。

Swift
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 顧客向け。

Swift
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は結果をキャッシュします。

Swift
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:

Swift
deunaSDK.initElements(
  callbacks: elementsCallbacks,
  userInfo: userInfo,
  types: [["name": WalletProvider.applePay.processorName.uppercased()]],
  orderToken: orderToken
)

アプリケーションには、Apple Payの権限と、商人の識別子を含むプロビジョニングプロファイルが必要です。詳細は、 Apple Pay の統合について説明します を参照してください。

保留中の操作を続行#

DEUNA が支払いに対してサポートされている 3DS チャレンジまたはリダイレクトが必要であると報告した場合、同じ注文トークンを使用してください。

Swift
deunaSDK.initNextAction(
  orderToken: orderToken,
  callbacks: nextActionCallbacks
)

SDKは、サポートされている外部URLと、ウィジェットへの制御を返します。インターフェースにはコールバック状態を使用し、履行には検証済みのWebhookを使用します。

クーポンを開く#

Swift
deunaSDK.initVoucher(
  orderToken: orderToken,
  callbacks: voucherCallbacks
)

バウチャーのコールバックは、他の決済体験と同様に、成功、エラー、クローズ、およびイベント送信のライフサイクルに従います。

不正利用デバイスデータ#

コア製品は、不正検知プロバイダーへの依存を必要としません。使用しているプロバイダー製品またはサブ仕様のみをリンクし、以下の手順を実行します。 generateFraudId アカウントに割り当てられた設定を使用して呼び出します。

Swift
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ライフサイクルのための設定。