Passa al contenuto principale
In questa pagina

Utilizzare l'SDK iOS di DEUNA per visualizzare esperienze di checkout, widget di pagamento, "Payment Vault", Click to Pay, "prossimo passo", voucher e Apple Pay native complete. Il pacchetto principale supporta iOS 13 e versioni successive; il modulo SwiftUI unificato. DeunaWidget Richiede iOS 14 o versioni successive.

Installazione#

Gestione dei pacchetti Swift

In Xcode seleziona File → Aggiungi dipendenze del pacchetto, inserire l'URL del repository e specificare la versione del rilascio:

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

Seleziona il componente principale DeunaSDK prodotto. Nel file manifest del pacchetto, aggiungi il prodotto alle dipendenze di destinazione:

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

Cacaopoli

Aggiungere la sottospecifica principale e specificare la versione dell'SDK in base alle politiche di rilascio:

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

I framework fornitori di servizi antifrode sono opzionali. Aggiungere solo i prodotti o le sottospecifiche assegnate al proprio account, come DeunaSDK/Cybersource, DeunaSDK/Kount, DeunaSDK/Sift, DeunaSDK/Riskified, DeunaSDK/Signifyd, DeunaSDK/Accertifyo DeunaSDK/MercadoPago.

Inizializzazione#

Creare un'istanza SDK utilizzando la chiave API pubblica per l'ambiente selezionato e conservarla per lo schermo o il coordinatore proprietario.

Swift
import DeunaSDK

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

Per un'istanza applicativa, inizializzare e quindi leggere l'SDK condiviso:

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

let deunaSDK = DeunaSDK.shared

Aprire il widget di pagamento in una finestra modale#

Creare callback di tipo specifico e passare il token dell'ordine restituito dal tuo backend:

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"
)

Chiamata close() per disattivare il widget attivo. Chiamare dispose() quando il flusso proprietario termina per rilasciare il suo controller e WebView.

Esperienze disponibili#

EsperienzaMetodoInformazioni di input essenziali
Completamento del processo di pagamentoinitCheckout(...)orderToken, CheckoutCallbacks
Pagamento WidgetinitPaymentWidget(...)orderToken, PaymentWidgetCallbacks
Vault di pagamentoinitElements(...)ElementsCallbacks; types Può essere omesso
Clicca per pagareinitElements(...)types: [["name": ElementsWidget.clickToPay]]
Prossimo passoinitNextAction(...)Token per l'ordine che richiede un'ulteriore azione
VoucherinitVoucher(...)Token per l'ordine del buono

Il metodo iOS è denominato initVoucher, non initVoucherWidget.

Integrare un widget con SwiftUI#

Su iOS 14 o versioni successive, creare una configurazione di tipo e renderizzare. DeunaWidget. L'SDK seleziona il controller integrato appropriato in base al tipo di configurazione.

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
    )
  }
}

Uso CheckoutWidgetConfiguration, ElementsWidgetConfiguration, NextActionWidgetConfigurationo VoucherWidgetConfiguration Per le altre esperienze.

Per un widget all'interno ScrollView, password AutoResizeConfig(initialHeight: 150) per la configurazione e la gestione onScrollNeeded in modo che il campo di input rimanga visibile sopra la tastiera.

Swift
DeunaWidget(deunaSDK: deunaSDK, configuration: configuration)
  .onScrollNeeded { points in
    scrollBy(points)
  }

Se la tua applicazione possiede il pulsante di pagamento, imposta hidePayButton: true nella configurazione e nell'invocazione deunaSDK.submit { result in ... } dal pulsante.

Archiviazione dei pagamenti e Click to Pay#

Archiviazione dei pagamenti è l'esperienza predefinita di Elements. Fornire un account autenticato userToken o UserInfo per il cliente.

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
)

Uso ElementsWidget.clickToPay invece di ElementsWidget.vault per Click to Pay.

Apple Pay nativo#

Verificare sia la configurazione del commerciante che le capacità del dispositivo prima di visualizzare il pulsante Apple Pay. L'SDK memorizza il risultato.

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)
}

Dopo che la disponibilità è stata confermata, avvia Apple Pay tramite l'azione del pulsante selezionando il portafoglio. initElements:

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

L'applicazione deve includere l'entitlement di Apple Pay e un profilo di provisioning contenente l'identificatore del commerciante. Fare riferimento a Paga di Apple Per la configurazione completa.

Continuare un'azione in sospeso#

Utilizzare lo stesso token d'ordine quando DEUNA segnala che il pagamento richiede una sfida o reindirizzamento 3DS supportato.

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

L'SDK presenta le URL esterne supportate e restituisce il controllo al widget. Utilizzare lo stato di callback per l'interfaccia e un webhook verificato per l'elaborazione.

Aprire un buono#

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

Le callback per voucher seguono lo stesso ciclo di vita di successo, errore, chiusura ed invio di eventi come le altre esperienze di pagamento.

Dati fraud-device#

Il prodotto principale non dipende da fornitori di servizi antifrode. Collegare solo i prodotti o le sottospecie fornitori che si utilizzano, quindi chiamare generateFraudId con la configurazione assegnata al proprio account.

Swift
deunaSDK.generateFraudId(params: [
  "CYBERSOURCE": [
    "orgId": "YOUR_ORG_ID",
    "merchantId": "YOUR_MERCHANT_ID",
  ],
]) { fraudId in
  guard let fraudId else { return }
  sendFraudIdToBackend(fraudId)
}

Se il framework del fornitore richiesto non è collegato, l'SDK lo ignora. Vedi Integrare l'impronta digitale del dispositivo Per la configurazione specifica del fornitore.

Riferimento a callback e ciclo di vita#

Callback o metodoUsalo per
onSuccessAggiorna l'interfaccia dopo il successo dell'esperienza.
onErrorGestisci un input di tipo PaymentsError o ElementsError.
onClosedDifferenzia la chiusura controllata dal cliente e da SDK.
onEventDispatchMonitora gli eventi di ciclo di vita supportati per il checkout o Elements.
onCardBinDetectedGestire il rilevamento del BIN della carta.
onInstallmentSelectedInteragisci con la selezione di un piano di rateizzazione.
onPaymentProcessingPreviene azioni di pagamento duplicate.
close()Chiudere la presentazione attiva mantenendo il controller SDK.
dispose()Rilascia il controller e il WebView attivi al termine del flusso.

Esempi e codice sorgente ufficiali#

Consulta WalletsScreen.swift per Apple Pay nativo e EmbeddedScreen.swift per il ciclo di vita di SwiftUI.