# Referencia de métodos del SDK

El framework Get Mini está organizado en módulos especializados. Esta referencia documenta las clases y métodos principales utilizados para el procesamiento de pagos, gestión de dispositivos y consultas de transacciones.

## Configuración global (CommonUtils)

La clase `CommonUtils` maneja configuraciones globales que deben configurarse antes de cualquier otra interacción con el SDK.

| Método | Parámetros | Descripción |
| :---- | :---- | :---- |
| `setEntorno` | String (ej., "int", "real") | Establece el entorno de ejecución (Desarrollo, Integración, CCAL o Real). |
| `setAppLicense` | String | Configura la licencia de la aplicación proporcionada por Get Mini. |

## Hardware y conexión (RedsysPinpadManager)

Esta clase gestiona la conexión Bluetooth y la interacción en tiempo real con el hardware PIN pad.

### findBluetoothDevices

Escanea accesorios PIN pad emparejados con el sistema iOS. Los resultados se devuelven a través del callback del delegado `onProcessOK` como un array de `EAAccessory`.

### connectAndConfigureDevice

Establece una conexión con un dispositivo específico y realiza la configuración obligatoria del terminal (inyección de claves).

| Parámetro | Tipo | Descripción |
| :---- | :---- | :---- |
| `device` | id (EAAccessory) | El objeto accesorio descubierto vía `findBluetoothDevices`. |
| `merchan` | MerchanDTO | Objeto que contiene FUC, Terminal y Clave de Comercio. |
| `withDelegate` | id&lt;RedsysBTPinpadInitDelegate> | Delegado para monitorear el progreso de la inicialización. |

### payWithPinpadBluetooth

El método principal para procesar transacciones con tarjeta presente (Ventas).

| Parámetro | Tipo | Descripción |
| :---- | :---- | :---- |
| `device` | id | El accesorio de hardware conectado. |
| `merchan` | MerchanDTO | Credenciales del comercio. |
| `config` | PinpadConfig | El objeto de configuración devuelto por `onInitFinished`. |
| `andPagoDTO` | PagoDTO | Detalles de la transacción (Monto y Moneda). |
| `withDelegate` | id&lt;RedsysBTPinpadPaymentDelegate> | Delegado para recibir resultados de pago y manejar retroalimentación DCC. |

## Operaciones de pasarela (RedsysTransactionManager)

Esta clase gestiona llamadas de Servicio Web para operaciones que pueden o no requerir presencia de tarjeta.

### peticionDevolucion

Procesa una devolución estándar vinculada a una transacción anterior.

| Parámetro | Tipo | Descripción |
| :---- | :---- | :---- |
| `dictDevolucion` | EnvioDevolucionDTO | Contiene la operación original y el monto de la devolución. |
| `withBlock` | CompletionBlock | Devuelve un `DevolucionResponseDTO` o un `NSError`. |

### peticionConsultaFechaPagina

Utilizado para consultar el historial de operaciones, con filtros opcionales por tipo de operación (Pago, Devolución, Confirmación o Preautorización).

| Parámetro | Tipo | Descripción |
| :---- | :---- | :---- |
| `dictConsultaFecha` | ConsultaFechasDTO | Parámetros de búsqueda (Rango de fechas, Terminal, Página). |
| `conValores` | NSDictionary | Filtros opcionales (ej., `setTipoOperacion:@"CONFIRMACION"`). |
| `withBlock` | CompletionBlock | Devuelve un `ListaOperacionesDTO`. |

### peticionPagoPorReferencia

Procesa un pago con tarjeta en archivo (recurrente) utilizando un token obtenido previamente.

### peticionPaygold

Genera un enlace de pago enviado por SMS o Email al cliente.

## Objetos de transferencia de datos clave (DTOs)

| DTO | Propósito |
| :---- | :---- |
| **PagoDTO** | Define el monto (en céntimos), la moneda, el nombre de factura y los datos de contacto del cliente. |
| **MerchanDTO** | Alberga credenciales del comercio para inicialización del PIN pad. |
| **RespuestaTransaccionDTO** | Devuelto después de pagos; contiene el `identificadorRTS` y `literales`. |
| **OperacionDTO** | Representa una transacción única en una lista de historial, usada para emitir devoluciones. |

## Notas de implementación

1. **Hilos**: La mayoría de los métodos usan callbacks basados en bloques que se ejecutan asíncronamente. Asegúrate de que las actualizaciones de UI se realicen en el hilo principal.
2. **Precisión de DTO**: Los montos se manejan típicamente como enteros (céntimos) en métodos de PinpadManager pero como cadenas (ej., "10.00") en métodos de devolución de TransactionManager. Refiérete a guías específicas para formateo.
3. **Permisos**: Usa `PerfilComercioManager` para verificar características activas del terminal antes de llamar métodos de transacción.