# Visión general del Get Mini iOS SDK

El SDK de Get Mini mPOS para iOS te permite integrar capacidades de pago seguro con tarjeta presente en tus aplicaciones nativas. Con un dispositivo PIN pad conectado por Bluetooth, puedes transformar un dispositivo iOS en un terminal de punto de venta móvil (mPOS).

## Arquitectura

El SDK se proporciona como una biblioteca estática acompañada de un conjunto de archivos de cabecera de Objective-C. Adopta una arquitectura modular diseñada para abstraer las complejidades de la comunicación de hardware y los protocolos financieros.

El ecosistema consta de tres componentes principales:

**Tu Aplicación iOS**: Gestiona tu lógica de negocio, catálogo de productos e interfaz de usuario. Interactúa con el SDK utilizando las clases `RedsysPinpadManager` y `RedsysConfigurationManager`.

**El Framework mPOS**: Orquesta la comunicación entre tu aplicación y el hardware. Gestiona el stack Bluetooth de bajo nivel, la encriptación y la comunicación con el Gateway.

**El PIN pad Físico**: Un lector de tarjetas Bluetooth (Ingenico, Itos, Spire o Verifone) que captura de forma segura los datos de la tarjeta (Chip, Contactless o Banda Magnética) y los PIN de los clientes.

## El ciclo de vida del mPOS

El procesamiento de una transacción sigue una secuencia estricta para garantizar la seguridad y la integridad de los datos.

### 1. Inicialización y licencias

Antes de cualquier operación, el SDK debe ser "desbloqueado" utilizando una clave de licencia vinculada al Bundle ID de tu aplicación. También debes definir el entorno de ejecución (Desarrollo, Integración, Certificación o Producción) a través de la clase `CommonUtils`.

### 2. Configuración del comercio (login)

El SDK requiere credenciales válidas del comercio (FUC y Terminal ID). Estas se obtienen habitualmente a través de un proceso de login utilizando `RedsysConfigurationManager`, que sincroniza la configuración del terminal con el Gateway de Get Mini.

### 3. Descubrimiento y conexión de dispositivos

Dado que iOS restringe la comunicación Bluetooth con hardware externo, el SDK utiliza el External Accessory Framework. El `RedsysPinpadManager` gestiona el descubrimiento de PIN pads emparejados que coinciden con los protocolos declarados en el `Info.plist` de tu proyecto.

### 4. Ejecución de la transacción

Una vez que seleccionas un dispositivo, tu aplicación envía una solicitud de pago (`PagoDTO`) que contiene el importe, el código de la moneda y la referencia del pedido. El SDK gestiona toda la interacción:

- Despertar el PIN pad
- Solicitar la inserción/acercamiento de la tarjeta
- Gestionar la introducción del PIN en el teclado del hardware
- Enviar datos encriptados al Gateway

### 5. Gestión de resultados

El resultado se entrega de forma asíncrona a través de protocolos delegados (`RedsysBTPinpadPaymentDelegate`, `RedsysDelegateGeneric`). Si se aprueba, la aplicación recibe un código de autorización en el callback `onPaymentFinished`; si se deniega, recibe un código de error específico para la resolución de problemas.

## Características principales

**Soporte Multivendor**: Una única integración soporta hardware de Ingenico, Itos, Spire y Verifone.

**Captura en el hardware**: La lectura de la tarjeta y la introducción del PIN ocurren en el PIN pad certificado, no en el dispositivo iOS.

**Gestión de Firmas**: Flujo automatizado para la captura de firma digital cuando lo requiere el tipo de tarjeta (transacciones Offline/No-PIN).

**UI Modular**: Utiliza el flujo de pago integrado de `RedsysPinpadManager` para una experiencia optimizada, o implementa una interfaz de usuario personalizada gestionando directamente los callbacks de los delegados para tener un control total sobre la interfaz.

## Enfoques de integración

Dependiendo de tus necesidades de negocio, puedes integrar los pagos de Get Mini de dos maneras:

**SDK Nativo (Directo)**: Como se documenta aquí, integra la biblioteca directamente en tu aplicación. Esto ofrece la experiencia de usuario más fluida.

**App2App**: Invoca la aplicación independiente "Get Mini" instalada en el dispositivo. Esto requiere una codificación mínima, pero implica alternar entre dos aplicaciones durante la venta.

## Próximos pasos

* [Instalar el SDK](/es/get-mini/ios-sdk/first-steps/install-the-sdk) - Configura tu proyecto Xcode con las bibliotecas y linker flags necesarios
* [Configurar el Info.plist](/es/get-mini/ios-sdk/first-steps/configure-ios-permissions) - Añade las cadenas obligatorias de protocolos Bluetooth y External Accessory
* [Inicio Rápido: Tu Primera Venta](/es/get-mini/ios-sdk/first-steps/ios-sdk-quickstart) - Ejecuta tu primera transacción de prueba en el entorno "des" (Desarrollo)