Getnet DocsGetnet Docs

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:

  1. Permisos: tu aplicación tiene los permisos BLUETOOTH y BLUETOOTH_ADMIN.
  2. Número de Serie: Debes tener el número de serie del PIN pad al que deseas conectarte.
  3. Datos del Terminal: Necesitas el objeto RedCLSTerminalData obtenido 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