SDK iOS
Installez le SDK iOS de DEUNA et intégrez les flux de type modal, embarqué, portefeuille, code promo et "prochain pas".
Sur cette page
- Installation
- Initialisation
- Ouvrir le Widget de Paiement dans une fenêtre modale
- Expériences disponibles
- Intégrer un widget avec SwiftUI
- Coffre-fort de paiement et Paiement en un clic
- Apple Pay natif
- Poursuivre une action en attente
- Ouvrir un bon de réduction
- Données des appareils frauduleux
- Référence des callbacks et du cycle de vie
- Exemples et code source officiels
Utilisez le SDK iOS de DEUNA pour afficher une expérience de paiement complète, un widget de paiement, un coffre-fort de paiement, Click to Pay, la prochaine étape, les bons de réduction et les fonctionnalités natives Apple Pay. Le package principal prend en charge iOS 13 et versions ultérieures ; il intègre SwiftUI unifié. DeunaWidget Nécessite iOS 14 ou une version ultérieure.
Installation#
Gestionnaire de paquets Swift
Dans Xcode, sélectionnez Fichier → Ajouter des dépendances de paquets, saisissez l'URL du dépôt, et spécifiez la version de publication :
https://github.com/deuna-developers/deuna-sdk-iosSélectionnez le module principal DeunaSDK produit. Dans un manifeste de package, ajoutez le produit à vos dépendances cibles :
.product(name: "DeunaSDK", package: "deuna-sdk-ios")Poissons de cacao
Ajoutez la sous-spécification principale et fixez la version de l'SDK conformément à votre politique de publication :
pod 'DeunaSDK/Core', '~> 2.12'Les frameworks de fournisseurs de lutte contre la fraude sont optionnels. Ajoutez uniquement les produits ou sous-catégories attribués à votre compte, tels que DeunaSDK/Cybersource, DeunaSDK/Kount, DeunaSDK/Sift, DeunaSDK/Riskified, DeunaSDK/Signifyd, DeunaSDK/Accertify, ou DeunaSDK/MercadoPago.
Initialisation#
Créer une instance SDK avec la clé API publique pour l'environnement sélectionné et la conserver pour l'écran ou le coordinateur concerné.
import DeunaSDK
let deunaSDK = DeunaSDK(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)Pour une instance d'application, initialisez et lisez ensuite le SDK partagé :
DeunaSDK.initialize(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)
let deunaSDK = DeunaSDK.sharedOuvrir le Widget de Paiement dans une fenêtre modale#
Créer des callbacks de type défini et transmettre le jeton de commande retourné par votre 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"
)Appeler close() pour désactiver le widget actif. Appeler dispose() lorsque le flux parent se termine pour libérer son contrôleur et WebView.
Expériences disponibles#
| Expérience | Méthode | Informations importantes |
|---|---|---|
| Finaliser la commande | initCheckout(...) | orderToken, CheckoutCallbacks |
| Widget de paiement | initPaymentWidget(...) | orderToken, PaymentWidgetCallbacks |
| Coffre-fort de paiement | initElements(...) | ElementsCallbacks; types Peut être omis |
| Cliquez pour payer | initElements(...) | types: [["name": ElementsWidget.clickToPay]] |
| Prochaine étape | initNextAction(...) | Jeton pour la commande nécessitant une action supplémentaire |
| Bon de réduction | initVoucher(...) | Jeton pour la commande de la carte cadeau |
La méthode iOS s'appelle initVoucher, et non initVoucherWidget.
Intégrer un widget avec SwiftUI#
Sur iOS 14 ou ultérieur, créer une configuration typée et la rendre. DeunaWidget. L'SDK sélectionne le contrôleur embarqué approprié en fonction du type de configuration.
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
)
}
}Utilisation CheckoutWidgetConfiguration, ElementsWidgetConfiguration, NextActionWidgetConfiguration, ou VoucherWidgetConfiguration Pour les autres expériences.
Pour un widget à l'intérieur ScrollView, mot de passe AutoResizeConfig(initialHeight: 150) à la configuration et à la gestion onScrollNeeded afin que le champ de saisie reste visible au-dessus du clavier.
DeunaWidget(deunaSDK: deunaSDK, configuration: configuration)
.onScrollNeeded { points in
scrollBy(points)
}Si votre application possède le bouton de paiement, définissez hidePayButton: true dans la configuration et l'appel deunaSDK.submit { result in ... } à partir de l'action du bouton.
Coffre-fort de paiement et Paiement en un clic#
Le Coffre-fort de paiement est l'expérience par défaut Elements. Passez soit un compte authentifié userToken ou UserInfo pour le client.
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
)Utilisation ElementsWidget.clickToPay au lieu de ElementsWidget.vault pour Click to Pay.
Apple Pay natif#
Vérifiez la configuration du commerçant et les capacités de l'appareil avant d'afficher votre bouton Apple Pay. Le SDK stocke le résultat.
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)
}Une fois la disponibilité confirmée, lancez Apple Pay à partir de l'action du bouton en sélectionnant le portefeuille dans initElements:
deunaSDK.initElements(
callbacks: elementsCallbacks,
userInfo: userInfo,
types: [["name": WalletProvider.applePay.processorName.uppercased()]],
orderToken: orderToken
)L'application doit inclure l'entitlement Apple Pay et un profil de provisionnement contenant l'identifiant du commerçant. Voir Apple Payer pour la configuration complète.
Poursuivre une action en attente#
Utilisez le même jeton de commande lorsque DEUNA signale que le paiement nécessite un défi ou une redirection 3DS pris en charge.
deunaSDK.initNextAction(
orderToken: orderToken,
callbacks: nextActionCallbacks
)Le SDK présente les URL externes prises en charge et retourne le contrôle au widget. Utilisez l'état de rappel pour l'interface et un webhook vérifié pour la finalisation.
Ouvrir un bon de réduction#
deunaSDK.initVoucher(
orderToken: orderToken,
callbacks: voucherCallbacks
)Les notifications de remboursement fonctionnent selon le même cycle de réussite, d'erreur, de fermeture et de déclenchement d'événements que les autres expériences de paiement.
Données des appareils frauduleux#
Le produit principal n'a aucune dépendance envers les fournisseurs de lutte contre la fraude. Liez uniquement les produits ou sous-spécifications de fournisseur que vous utilisez, puis appelez generateFraudId avec la configuration attribuée à votre compte.
deunaSDK.generateFraudId(params: [
"CYBERSOURCE": [
"orgId": "YOUR_ORG_ID",
"merchantId": "YOUR_MERCHANT_ID",
],
]) { fraudId in
guard let fraudId else { return }
sendFraudIdToBackend(fraudId)
}Si le framework de fournisseur demandé n'est pas lié, le SDK ignore ce fournisseur. Voir Intégrer l'empreinte digitale de l'appareil pour la configuration spécifique au fournisseur.
Référence des callbacks et du cycle de vie#
| Callback ou méthode | Utilisez-le pour |
|---|---|
onSuccess | Mettre à jour l'interface après le succès de l'expérience. |
onError | Gérer une saisie de données PaymentsError ou ElementsError. |
onClosed | Différencier la fermeture contrôlée par le client et le SDK. |
onEventDispatch | Observer les événements de cycle de vie du processus de paiement ou d'Elements. |
onCardBinDetected | Réagissez à la détection du BIN de la carte. |
onInstallmentSelected | Réagir à la sélection d'un plan de paiement. |
onPaymentProcessing | Empêcher les actions de paiement dupliquées. |
close() | Fermez la présentation active tout en conservant le contrôleur du SDK. |
dispose() | Libérez le contrôleur et le WebView actifs lorsque le flux se termine. |
Exemples et code source officiels#
Consultez WalletsScreen.swift pour Apple Pay natif et EmbeddedScreen.swift pour le cycle de vie SwiftUI.