Getnet DocsGetnet Docs

Inicializar el TPV

La inicialización es el primer paso obligatorio en el ciclo de vida de la integración. Debes inicializar el TPV correctamente antes de realizar cualquier operación financiera (como pagos o devoluciones) o consultar datos de transacciones.

Durante la inicialización, la biblioteca se conecta al Get Smart SDK Payment Service para:

  1. Verificar la Configuración: Garantiza que el terminal esté configurado correctamente en el host de Getnet.
  2. Chequeos de Seguridad: Valida claves y protocolos de seguridad.
  3. Actualizar Parámetros: Descarga la configuración más reciente (p. ej., funciones activas, moneda, detalles del comercio) desde el host.

Realizar la inicialización

Para inicializar el dispositivo, utiliza el InitializationRepository.

El método principal es initTpv(). Esta es una función suspend que devuelve un RepositoryResult que contiene el objeto TpvInfo en caso de éxito.

Implementación

Llama a initTpv() dentro de un alcance de corrutina. Observa cómo accedemos a los datos del comercio a través de la lista virtualTerminalList.

suspend fun initializeDevice() {
    // 1. Call the initialization method
    val result = initializationRepository.initTpv()

    // 2. Handle the result
    when (result) {
        is RepositoryResult.Success -> {
            // Initialization successful
            val tpvInfo: TpvInfo = result.data

            // Accessing Configuration Flags
            val isPreauthEnabled = tpvInfo.config.showPreauthorizations
            val isQrEnabled = tpvInfo.config.showQrPayment

            // Accessing Merchant Data (FUC, Terminal, Name)
            // These are stored in the virtual terminal list
            val terminalData = tpvInfo.virtualTerminalList?.firstOrNull()

            println("Initialized Merchant: ${terminalData?.merchantName}")
            println("Terminal ID: ${terminalData?.terminal}")
            println("Currency Code: ${terminalData?.currency}")

            // You can now proceed to payment screens
        }
        is RepositoryResult.ConnectionError -> {
            // Handle network/service failure
            showError("Connection failed. Check internet or Smart SDK Service.")
        }
        is RepositoryResult.ProtocolError -> {
            // Handle logical errors (e.g., TPV_NOT_INITIALIZED or MAPPING errors)
            showError("Protocol Error: ${result.type}")
        }
        is RepositoryResult.Cancelled -> {
            // Handle cancellation (unlikely for initialization, but possible)
        }
    }
}

Comprender TpvInfo

Cuando la inicialización tiene éxito, recibes un objeto TpvInfo. Esta data class contiene detalles cruciales sobre la identidad y las capacidades del terminal.

Propiedades Clave

El objeto se estructura en tres partes principales:

  • deviceInfo: Datos específicos del hardware/terminal.
  • config (TpvConfig): Flags operativos y ajustes de funciones.
    • showPreauthorizations: (Boolean) Si las preautorizaciones están habilitadas.
    • noOriginal: (Boolean) Si se permiten “Devoluciones sin Original”.
    • showQrPayment: (Boolean) Si los pagos por QR (Alipay/WeChat) están habilitados.
    • showPlazox: (Boolean) Si Plazox (pagos fraccionados) está habilitado.
    • isOffline: (Boolean) Si el TPV está funcionando actualmente en modo offline.
  • virtualTerminalList: Una lista de objetos TpvVirtualTerminal que contienen la identidad financiera.
    • merchantName: El nombre comercial del comercio.
    • fuc: El ID del Comercio (FUC).
    • terminal: El Número de Terminal.
    • currency: El código de moneda configurado (p. ej., 978 para EUR).
    • csb / csbType: Códigos bancarios.

Gestionar la información del terminal

El InitializationRepository proporciona métodos adicionales para recuperar o actualizar la información almacenada del terminal sin activar una sincronización completa con el host.

Recuperar información en caché

Si necesitas acceder a la configuración del terminal más tarde en tu aplicación (p. ej., para mostrar el Nombre del Comercio en un encabezado) sin realizar una llamada de red, utiliza getTpvInfoRepositoryResult().

suspend fun getCachedConfig() {
    val result = initializationRepository.getTpvInfoRepositoryResult()

    if (result is RepositoryResult.Success) {
        val cachedInfo = result.data
        // Use cached data...
    }
}

Guardar información del terminal

En escenarios avanzados donde necesites actualizar manualmente el contexto de la información local del terminal, puedes usar saveTerminalInformation().

suspend fun updateLocalConfig(newInfo: TpvInfo) {
    initializationRepository.saveTerminalInformation(newInfo)
}

Próximos pasos

Una vez que el TPV se ha inicializado correctamente, estás listo para procesar transacciones: