SDK iOS
Installare l'SDK iOS di DEUNA e integrare i flussi di checkout, wallet, voucher e "prossimo passo".
In questa pagina
- Installazione
- Inizializzazione
- Aprire il widget di pagamento in una finestra modale
- Esperienze disponibili
- Integrare un widget con SwiftUI
- Archiviazione dei pagamenti e Click to Pay
- Apple Pay nativo
- Continuare un'azione in sospeso
- Aprire un buono
- Dati fraud-device
- Riferimento a callback e ciclo di vita
- Esempi e codice sorgente ufficiali
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:
https://github.com/deuna-developers/deuna-sdk-iosSeleziona il componente principale DeunaSDK prodotto. Nel file manifest del pacchetto, aggiungi il prodotto alle dipendenze di destinazione:
.product(name: "DeunaSDK", package: "deuna-sdk-ios")Cacaopoli
Aggiungere la sottospecifica principale e specificare la versione dell'SDK in base alle politiche di rilascio:
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.
import DeunaSDK
let deunaSDK = DeunaSDK(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)Per un'istanza applicativa, inizializzare e quindi leggere l'SDK condiviso:
DeunaSDK.initialize(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)
let deunaSDK = DeunaSDK.sharedAprire il widget di pagamento in una finestra modale#
Creare callback di tipo specifico e passare il token dell'ordine restituito dal tuo backend:
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#
| Esperienza | Metodo | Informazioni di input essenziali |
|---|---|---|
| Completamento del processo di pagamento | initCheckout(...) | orderToken, CheckoutCallbacks |
| Pagamento Widget | initPaymentWidget(...) | orderToken, PaymentWidgetCallbacks |
| Vault di pagamento | initElements(...) | ElementsCallbacks; types Può essere omesso |
| Clicca per pagare | initElements(...) | types: [["name": ElementsWidget.clickToPay]] |
| Prossimo passo | initNextAction(...) | Token per l'ordine che richiede un'ulteriore azione |
| Voucher | initVoucher(...) | 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.
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.
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.
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.
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:
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.
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#
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.
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 metodo | Usalo per |
|---|---|
onSuccess | Aggiorna l'interfaccia dopo il successo dell'esperienza. |
onError | Gestisci un input di tipo PaymentsError o ElementsError. |
onClosed | Differenzia la chiusura controllata dal cliente e da SDK. |
onEventDispatch | Monitora gli eventi di ciclo di vita supportati per il checkout o Elements. |
onCardBinDetected | Gestire il rilevamento del BIN della carta. |
onInstallmentSelected | Interagisci con la selezione di un piano di rateizzazione. |
onPaymentProcessing | Previene 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.