Lanzar el widget de pagos - SDK iOS

Para iniciar el proceso de pago, debes usar la función initCheckout. Esta configura el widget de pago, verifica la conectividad a Internet y carga el enlace de pago.

Parámetros

ParámetroDescripción
orderTokenEl token de una orden previamente generada usando la API de DEUNA
https://docs.deuna.com/reference/order_token
callbacksUna instancia de la clase CheckoutCallbacks, la cual contiene callbacks que serán llamados en caso de éxito, error, o cuando el widget de pago se cierre.
closeEventsUn conjunto de valores de tipo CheckoutEvent que especifican cuándo cerrar automáticamente el widget de pago.

Consulta los eventos del widget de pagos aquí
let deunaSDK: DeunaSDK = ....
.
.
.

let callbacks = CheckoutCallbacks(
    onSuccess: { _ in
       // El pago fue exitoso
       self.deunaSDK.closeCheckout() // Cierra el widget de pago
    },
    onError: { error in
        // Ocurrió un error al procesar el pago
        self.deunaSDK.closeCheckout() // Cierra el widget de pago
    },
    onClosed: {
        // El widget de pago fue cerrado
    },
    onCanceled: {
      // El widget de pago fue cerrado por el usuario
      // No es necesario llamar a closeCheckout(...)
    },
    eventListener: { event, _ in
        // Escuchar los eventos del proceso de pago

        // Cierra el widget cuando el usuario elige cambiar la dirección o el método de pago
        if event == .changeCart || event == .changeAddress {
            self.deunaSDK.closeCheckout()
        }
    }
)

// Lanza el widget de pago
deunaSDK.initCheckout(
    orderToken: "TU_ORDER_TOKEN",
    callbacks: callbacks
)

NOTA: Por defecto, el widget de pago solo se cierra cuando el usuario presiona el botón de cerrar. Puedes utilizar el parámetro closeEvents para cerrar el widget sin necesidad de llamar a la función closeCheckout.
Por ejemplo puedes user el parámetro closeEvents para cerrar el widget de pago cuando el usuario elige cambiar la dirección o el método de pago. El código de arriba usando closeEvents seria el siguiente:

let callbacks = CheckoutCallbacks(
    onSuccess: { response in
       self.deunaSDK.closeCheckout() // Cierra el widget de pago
    },
    onError: { error in
        self.deunaSDK.closeCheckout() // Cierra el widget de pago
    },
    onClosed: {
        // El widget de pago fue cerrado
    },
    onCanceled: {
       /// ...
    },
    eventListener: { event, response in
        // Escuchar los eventos del proceso de pago
    }
)

// Lanza el widget de pago
deunaSDK.initCheckout(
    orderToken: "TU_ORDER_TOKEN",
    callbacks: callbacks,
    closeEvents: [.changeCart, .changeAddress] // Cierra el widget cuando el usuario elige cambiar la dirección o el método de pago
)