Visión general del Get Smart SDK
Esta página proporciona una visión general de alto nivel de la biblioteca redsys-tpv-business-lib, explicando su propósito, diseño arquitectónico y el cambio técnico de los sistemas legados hacia un enfoque moderno nativo en Kotlin.
La redsys-tpv-business-lib es un Android SDK diseñado para actuar como una capa de abstracción segura entre tu aplicación y el Get Smart SDK Payment Service. Permite integrar funcionalidades de pago de forma rápida y segura sin gestionar la compleja lógica de negocio subyacente ni los protocolos de comunicación.
Esta biblioteca sustituye a la legada redsysTpvAndroidLib (paysyslib.jar). Proporciona acceso a todas las funcionalidades principales de Getnet, incluyendo:
- Procesamiento de pagos: Gestión de pagos estándar.
- Preautorizaciones: Gestión de la creación, confirmación y cancelación de preautorizaciones.
- Gestión de operaciones: Acceso al historial de transacciones, gestión de sesiones y totales.
- Devoluciones: Procesamiento de devoluciones.
- Configuración: Gestión de ajustes y claves.
Arquitectura
La arquitectura de la solución consta de cuatro actores principales que interactúan para procesar pagos y gestionar el TPV:
- App: Su aplicación Android desarrollada por el integrador.
- redsys-tpv-business-lib: El SDK proporcionado por Getnet. Se conecta de forma segura con el Get Smart SDK Payment Service instalado en el dispositivo.
- Get Smart SDK Payment Service: Un servicio Android de segundo plano que se ejecuta en el dispositivo. Implementa la lógica de negocio, gestiona los protocolos de comunicación con el host y maneja las operaciones de bajo nivel.
- Host: El back-office en la nube de Getnet que procesa pagos, configuraciones, registros y otra lógica del TPV.
Flujo de datos
La arquitectura garantiza una clara separación de responsabilidades. Su aplicación interactúa con el SDK, que a su vez se comunica con el Payment Service local. El Payment Service se encarga de la ejecución real y de la comunicación con el Host remoto.
Filosofía de diseño
La redsys-tpv-business-lib adopta los estándares modernos de desarrollo de Android para facilitar la integración en las arquitecturas de aplicaciones actuales (como MVVM o Clean Architecture).
Kotlin-First y Coroutines
La biblioteca está desarrollada al 100% en Kotlin. Aprovecha las Kotlin Coroutines para gestionar tareas asíncronas de manera eficiente.
- Suspend Functions: Todas las funciones de interfaz de la biblioteca se definen como
suspend. Esto garantiza que las operaciones, que implican comunicación de red con el host, no bloqueen el hilo principal. - Context Management: Todas las ejecuciones cambian automáticamente a
Dispatchers.IOpara asegurar el contexto de hilo adecuado para las operaciones de red y disco.
Patrón Repository y Clean Architecture
La biblioteca sigue el Repository Pattern y los principios SOLID, organizando la funcionalidad en distintas interfaces (Repositorios) basadas en su dominio específico (p. ej., PaymentRepository, InitializationRepository).
Este diseño ofrece varias ventajas clave:
- Desacoplamiento: Abstrae tu aplicación de la capa de datos y de los detalles específicos de la implementación.
- Inyección de dependencias: La biblioteca está diseñada para funcionar sin problemas con marcos de inyección de dependencias como Dagger Hilt. Puedes configurar los repositorios como singletons.
- Testabilidad: El diseño basado en interfaces permite sustituir las implementaciones reales por repositorios simulados (mocks) durante las pruebas. Esto te permite probar la lógica de tu aplicación de forma independiente del hardware o servicio de Getnet.
Comparación con la biblioteca legada
A diferencia de la legada paysyslib.jar, que requería una gestión más manual de la lógica y los callbacks, la nueva biblioteca proporciona un enfoque estructurado, de tipo seguro (type-safe) y reactivo para la integración.
| Característica | Legada (paysyslib.jar) | Nueva (redsys-tpv-business-lib) |
|---|---|---|
| Lenguaje | Java | Kotlin |
| Concurrencia | Callbacks/Hilos | Coroutines (funciones suspend) |
| Arquitectura | Monolítica | Repository Pattern / Clean Architecture |
| Integración | Instanciación manual | Lista para Inyección de Dependencias (Hilt) |