Lanzar el widget de pagos - SDK Android

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 = ....
.
.
.

val callbacks = CheckoutCallbacks().apply {
    onSuccess = { response ->
       // El pago fue exitoso
       deunaSDK.closeCheckout(...) // Cierra el widget de pago
    },
    onError = { error ->
        // Ocurrió un error al procesar el pago
        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, response ->
        // 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 == CheckoutEvent.changeCart || event == CheckoutEvent.changeAddress) {
            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:

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

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