Gestionar la conectividad Bluetooth
El Get Mini Android SDK gestiona la comunicación Bluetooth con los dispositivos PIN pad utilizando el RedCLSPinPadManager. Esta clase maneja el protocolo de conexión de bajo nivel a través de un flujo basado en interfaces, asegurando que tu aplicación sea informada de los eventos de conexión en tiempo real.
Requisitos
Antes de gestionar la conectividad, asegúrate de:
- Permisos: tu aplicación tiene los permisos
BLUETOOTHyBLUETOOTH_ADMIN. - Número de Serie: Debes tener el número de serie del PIN pad al que deseas conectarte.
- Datos del Terminal: Necesitas el objeto
RedCLSTerminalDataobtenido en el login.
Paso 1: Implementar la interfaz del PIN pad
Para recibir actualizaciones de conexión, tu clase (típicamente una Activity u otro componente que pueda proporcionar de forma segura un contexto de interfaz de usuario válido) debe implementar RedCLSPinPadInterface.
import redcls.itpvpc.interfaces.RedCLSPinPadInterface
class MyPaymentActivity : AppCompatActivity(), RedCLSPinPadInterface {
override fun conexionPinPadRealizada() {
Log.i("GetMini", "Conexión establecida. Ahora puede inicializar el PIN pad.")
// Proceder a pinpadManager.inicializarPinpad()
}
override fun pinPadNoEncontrado() {
Log.e("GetMini", "No se pudo encontrar o conectar al PIN pad.")
}
// ... implementar otros métodos como getContext(), seleccionMonedaPagoDCC(), etc.
}Paso 2: Configurar la conexión
Use RedCLSConfigurationPinPadData para especificar el tipo de conexión y el identificador del dispositivo. Para Bluetooth, el parámetro “name” debe ser el Número de Serie del PIN pad.
import redcls.itpvpc.data.RedCLSConfigurationPinPadData
val config = RedCLSConfigurationPinPadData(
RedCLSConfigurationPinPadData.BLUETOOTH_CONNECTION,
"12345678" // Número de Serie del PIN pad
)Paso 3: Establecer la conexión
Instancia el RedCLSPinPadManager usando tu implementación de interfaz, configuración y datos del terminal, luego activa la conexión.
import redcls.itpvpc.managers.RedCLSPinPadManager
val pinpadManager = RedCLSPinPadManager(this, config, merchantTerminalData)
pinpadManager.connectWithPinPad()Esta llamada es asíncrona. El SDK te notificará a través de las devoluciones de llamada conexionPinPadRealizada() o pinPadNoEncontrado().
Paso 4: Mantenimiento y comprobaciones de estado
El SDK proporciona métodos para verificar el estado de la conexión o limpiar recursos cuando ya no son necesarios.
Comprobar el estado de la conexión
Usa isPinPadConnected() para una verificación rápida, aunque tengas en cuenta que puede haber un ligero retraso en la detección de desconexiones de hardware.
if (pinpadManager.isPinPadConnected()) {
// Proceder con las operaciones
}Cerrar conexiones
Para liberar recursos de Bluetooth al salir de tu flujo de pago:
pinpadManager.cerrarConexiones()Mejores prácticas
- Conexión Inicial: La primera conexión después de que el PIN pad se despierte del modo de suspensión puede tardar unos segundos. Maneja esto en tu interfaz de usuario con un indicador de carga.
- Gestión del Número de Serie: Si admites múltiples PIN pads, almacena tus números de serie en la configuración de tu aplicación para que el usuario no tenga que volver a ingresarlos.
- Manejo del Contexto: El método
getContext()en tu interfaz debe devolver un contexto de interfaz de usuario válido (típicamente una Activity). Proporcionar un contexto de Service puede causar problemas con eventos relacionados con la interfaz de usuario (como la selección de DCC o las solicitudes de Firma).
Próximos pasos
- Inicializar el SDK: Aprende cómo realizar la llamada
inicializarPinpad()después de conectarse. - Crear una venta: Comienza a procesar transacciones.
- Configuración de permisos en Android: Verifica la configuración de tu manifiesto.