SDK de iOS
Instale el SDK de iOS de DEUNA e integre los flujos de pago modal, embebido, con billetera, con vales y de "siguiente acción".
En esta página
- Instalación
- Inicialización
- Abra el Widget de Pago en un modal
- Experiencias disponibles
- Incorporar un widget con SwiftUI
- Almacén de pagos y Pago con un clic
- Apple Pay nativo
- Continúe con una acción pendiente
- Abrir un cupón
- Datos de fraude del dispositivo
- Referencia del ciclo de vida y llamadas de retorno
- Ejemplos y código fuente oficiales
Utilice el SDK de iOS de DEUNA para mostrar experiencias completas de Checkout, Widget de Pago, Almacen de Pagos, Click to Pay, "siguiente acción", vales y Apple Pay nativo. El paquete principal es compatible con iOS 13 y versiones posteriores; el paquete unificado utiliza SwiftUI. DeunaWidget Requiere iOS 14 o posterior.
Instalación#
Administrador de paquetes rápido
En Xcode, selecciona Archivo → Agregar dependencias del paquete, introduzca la URL del repositorio y especifique la versión de la publicación:
https://github.com/deuna-developers/deuna-sdk-iosSeleccione el núcleo DeunaSDK producto. En el manifiesto del paquete, agregue el producto a sus dependencias objetivo:
.product(name: "DeunaSDK", package: "deuna-sdk-ios")CacaoPods
Añada la subespecífica principal y especifique la versión del SDK según su política de lanzamiento:
pod 'DeunaSDK/Core', '~> 2.12'Los marcos de proveedores de prevención de fraude son opcionales. Agregue únicamente los productos o subespecificaciones asignadas a su cuenta, como DeunaSDK/Cybersource, DeunaSDK/Kount, DeunaSDK/Sift, DeunaSDK/Riskified, DeunaSDK/Signifyd, DeunaSDK/Accertifyo DeunaSDK/MercadoPago.
Inicialización#
Crear una instancia del SDK con la clave API pública correspondiente al entorno seleccionado, y conservarla para la pantalla o coordinador propietaria.
import DeunaSDK
let deunaSDK = DeunaSDK(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)e
DeunaSDK.initialize(
environment: .sandbox,
publicApiKey: "YOUR_PUBLIC_API_KEY"
)
let deunaSDK = DeunaSDK.sharedAbra el Widget de Pago en un modal#
Crear callbacks de tipo específico y pasar el token de pedido devuelto por tu 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"
)llamar close() para desactivar el widget activo. Llama a dispose() cuando finalice el flujo que lo controla para liberar su controlador y WebView.
Experiencias disponibles#
| Experiencia | Método | Información necesaria |
|---|---|---|
| Finalizar compra | initCheckout(...) | orderToken, CheckoutCallbacks |
| Widget de Pago | initPaymentWidget(...) | orderToken, PaymentWidgetCallbacks |
| Caja de Pago | initElements(...) | ElementsCallbacks; types puede omitirse |
| Haga clic para pagar | initElements(...) | types: [["name": ElementsWidget.clickToPay]] |
| Siguiente Acción | initNextAction(...) | Token para el pedido que requiere una acción adicional |
| vale | initVoucher(...) | Token para el pedido de vale |
El método para iOS se llama initVoucher, no initVoucherWidget.
Incorporar un widget con SwiftUI#
En iOS 14 o posterior, configure y renderice un widget de tipo. DeunaWidget. El SDK selecciona el controlador embebido adecuado según el tipo de configuración.
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 Para otras experiencias.
Para un widget dentro ScrollView, contraseña AutoResizeConfig(initialHeight: 150) para la configuración y el manejo onScrollNeeded para que el campo de entrada permanezca visible sobre el teclado.
DeunaWidget(deunaSDK: deunaSDK, configuration: configuration)
.onScrollNeeded { points in
scrollBy(points)
}Si su aplicación posee el botón de pago, configure hidePayButton: true en la configuración y la llamada deunaSDK.submit { result in ... } desde la acción del botón.
Almacén de pagos y Pago con un clic#
El Almacén de pagos es la experiencia predeterminada de Elements. Proporcione una autenticación userToken o UserInfo para el 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 en lugar de ElementsWidget.vault para Click to Pay.
Apple Pay nativo#
Verifique tanto la configuración del comerciante como la capacidad del dispositivo antes de mostrar el botón de Apple Pay. El SDK almacena el resultado.
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)
}Una vez que la disponibilidad sea exitosa, inicie Apple Pay desde la acción del botón seleccionando el Wallet en initElements:
deunaSDK.initElements(
callbacks: elementsCallbacks,
userInfo: userInfo,
types: [["name": WalletProvider.applePay.processorName.uppercased()]],
orderToken: orderToken
)La aplicación debe incluir la autorización de Apple Pay y un perfil de aprovisionamiento que contenga el identificador del comerciante. Consulte de Apple Pay para la configuración completa.
Continúe con una acción pendiente#
Utilice el mismo token de pedido cuando DEUNA informe que el pago requiere un desafío o redirección 3DS compatible.
deunaSDK.initNextAction(
orderToken: orderToken,
callbacks: nextActionCallbacks
)El SDK presenta las URLs externas compatibles y devuelve el control al widget. Utilice el estado de llamada de retorno para la interfaz y un webhook verificado para la finalización.
Abrir un cupón#
deunaSDK.initVoucher(
orderToken: orderToken,
callbacks: voucherCallbacks
)Las llamadas de retorno de los vouchers siguen el mismo ciclo de éxito, error, cierre y envío de eventos que las otras experiencias de pago.
Datos de fraude del dispositivo#
El producto principal no depende de proveedores de fraude. Vincule solo los productos o subespecificaciones de proveedores que utilice, y luego llame a generateFraudId con la configuración asignada a su cuenta.
deunaSDK.generateFraudId(params: [
"CYBERSOURCE": [
"orgId": "YOUR_ORG_ID",
"merchantId": "YOUR_MERCHANT_ID",
],
]) { fraudId in
guard let fraudId else { return }
sendFraudIdToBackend(fraudId)
}Si el marco de proveedor solicitado no está vinculado, el SDK omitirá ese proveedor. Consulte Integrar la huella digital del dispositivo para la configuración específica del proveedor.
Referencia del ciclo de vida y llamadas de retorno#
| Llamada de retorno o método | Úselo para |
|---|---|
onSuccess | Actualice la interfaz después de que la experiencia haya tenido éxito. |
onError | Maneje un tipo de PaymentsError o ElementsError. |
onClosed | Distinga entre el cierre controlado por el cliente y el SDK. |
onEventDispatch | Observe los eventos de ciclo de vida de checkout o Elements. |
onCardBinDetected | Reaccione a la detección de BIN de tarjetas. |
onInstallmentSelected | Reaccione a la selección de un plan de cuotas. |
onPaymentProcessing | Evite acciones de pago duplicadas. |
close() | Cierre la presentación activa manteniendo el controlador del SDK. |
dispose() | Liberar el controlador y la WebView cuando finalice el flujo. |
Ejemplos y código fuente oficiales#
Consulta WalletsScreen.swift para Apple Pay nativo y EmbeddedScreen.swift para el ciclo de vida de SwiftUI.