# Visão Geral do Get Mini iOS SDK

O Get Mini mPOS SDK para iOS permite que você integre recursos seguros de pagamento com cartão presente em seus aplicativos nativos. Ao utilizar um dispositivo PIN pad conectado via Bluetooth, você pode transformar um dispositivo iOS em um terminal de ponto de venda móvel (mPOS).

## Arquitetura

O SDK é fornecido como uma biblioteca estática acompanhada por um conjunto de headers Objective-C. Ele adota uma arquitetura modular projetada para abstrair as complexidades da comunicação de hardware e protocolos financeiros.

O ecossistema consiste em três componentes principais:

**Seu Aplicativo iOS**: Gerencia sua lógica de negócios, catálogo de produtos e interface do usuário. Ele interage com o SDK usando as classes `RedsysPinpadManager` e `RedsysConfigurationManager`.

**O Framework mPOS**: Orquestra a comunicação entre seu aplicativo e o hardware. Ele gerencia a stack Bluetooth de baixo nível, a criptografia e a comunicação com o Gateway.

**O PIN pad Físico**: Um leitor de cartões Bluetooth (Ingenico, Itos, Spire ou Verifone) que captura com segurança os dados do cartão (Chip, Contactless ou Tarja Magnética) e os PINs dos clientes.

## O Ciclo de Vida do mPOS

O processamento de uma transação segue uma sequência rigorosa para garantir a segurança e a integridade dos dados.

### 1. Inicialização e Licenciamento

Antes de qualquer operação, o SDK deve ser "desbloqueado" usando uma chave de licença vinculada ao Bundle ID do seu aplicativo. Você também deve definir o ambiente de execução (Desenvolvimento, Integração, Certificação ou Produção) por meio da classe `CommonUtils`.

### 2. Configuração do Estabelecimento (Login)

O SDK requer credenciais válidas do estabelecimento (FUC e Terminal ID). Estas são tipicamente recuperadas através de um processo de login usando o `RedsysConfigurationManager`, que sincroniza a configuração do terminal com o Gateway do Get Mini.

### 3. Descoberta e Conexão de Dispositivos

Como o iOS restringe a comunicação Bluetooth com hardware externo, o SDK usa o External Accessory Framework. O `RedsysPinpadManager` lida com a descoberta de PIN pads pareados que correspondem aos protocolos declarados no Info.plist do seu projeto.

### 4. Execução da Transação

Uma vez que um dispositivo é selecionado, seu aplicativo envia uma solicitação de pagamento (`PagoDTO`) contendo o valor, o código da moeda e a referência do pedido. O SDK gerencia toda a interação:

- Despertando o PIN pad
- Solicitando a inserção/aproximação do cartão
- Lidando com a digitação do PIN no teclado do hardware
- Enviando dados criptografados para o Gateway

### 5. Tratamento de Resultados

O resultado é entregue de forma assíncrona por meio de protocolos de delegate (`RedsysBTPinpadPaymentDelegate`, `RedsysDelegateGeneric`). Se aprovada, o aplicativo recebe um código de autorização no callback `onPaymentFinished`; se negada, recebe um código de erro específico para solução de problemas.

## Principais Recursos

**Suporte Multivendor**: Uma única integração suporta hardware da Ingenico, Itos, Spire e Verifone.

**Captura no hardware**: A leitura do cartão e a digitação do PIN acontecem no PIN pad certificado, não no dispositivo iOS.

**Gerenciamento de Assinatura**: Fluxo automatizado para captura de assinatura digital quando exigido pelo tipo de cartão (transações Offline/No-PIN).

**UI Modular**: Use o fluxo de pagamento integrado do `RedsysPinpadManager` para uma experiência simplificada ou implemente uma interface personalizada lidando diretamente com os callbacks de delegate para controle total sobre a interface do usuário.

## Abordagens de Integração

Dependendo das suas necessidades de negócios, você pode integrar os pagamentos do Get Mini de duas maneiras:

**SDK Nativo (Direto)**: Conforme documentado aqui, você incorpora a biblioteca diretamente em seu aplicativo. Isso oferece a experiência de usuário mais fluida.

**App2App**: Você invoca o aplicativo "Get Mini" independente instalado no dispositivo. Isso requer codificação mínima, mas envolve alternar entre dois aplicativos durante a venda.

## Próximos Passos

* [Instalar o SDK](/pt/get-mini/ios-sdk/first-steps/install-the-sdk) - Configure seu projeto Xcode com as bibliotecas e linker flags necessários
* [Configurar o Info.plist](/pt/get-mini/ios-sdk/first-steps/configure-ios-permissions) - Adicione as strings obrigatórias de protocolo Bluetooth e External Accessory
* [Início Rápido: Sua Primeira Venda](/pt/get-mini/ios-sdk/first-steps/ios-sdk-quickstart) - Execute sua primeira transação de teste no ambiente "des" (Desenvolvimento)