# Arquitetura

Esta página explica a arquitetura técnica da integração Get Smart App2App para Android, detalhando como os componentes interagem e se comunicam.

## Visão Geral do Sistema

A integração App2App depende de mecanismos padrão de `Intent` do Android para facilitar a comunicação entre duas aplicações distintas instaladas no mesmo dispositivo:

1. **A aplicação externa (sua aplicação)** inicia o processo e recebe o resultado
2. **A aplicação Get Smart** processa a transação segura e lida com a lógica de pagamento

Esta separação de responsabilidades permite que sua aplicação aproveite a funcionalidade de pagamento sem a necessidade de implementar os complexos requisitos de segurança e conformidade do processamento de pagamentos.

## Arquitetura de Componentes

A integração App2App envolve dois componentes distintos trabalhando juntos para processar pagamentos. Compreender as responsabilidades de cada componente ajuda a implementar a integração corretamente e a solucionar problemas de forma eficaz.

### Sua Aplicação

Sua aplicação é responsável por:

* Gerar a solicitação de pagamento com os detalhes da transação (valor, tipo, número do pedido).
* Criar e lançar o `Intent` do Android com o nome da ação específica.
* Receber e processar o resultado da transação.
* Tratar cenários de erro (ex: ausência da aplicação Get Smart).
* Gerenciar sua lógica de negócio com base nos desfechos do pagamento.

### Aplicação Get Smart

A aplicação Get Smart (*Aplicação de Cobro*) lida com:

* Leitura de cartão (chip EMV, NFC por aproximação, tarja magnética).
* Comunicação com o gateway de pagamento.
* Segurança e criptografia da transação.
* Impressão de comprovante (vias do estabelecimento e do cliente).
* Requisitos de conformidade PCI DSS.
* Requisitos de certificação EMV.

## Mecanismo de Comunicação

A integração utiliza a comunicação padrão entre aplicações do Android por meio de Intents.

### Comunicação Baseada em Intent

A comunicação segue este padrão:

1. **Criação do Intent**: Sua aplicação cria um Intent com um nome de ação específico.
2. **Passagem de Parâmetros**: Os parâmetros da transação são adicionados como extras do Intent.
3. **Lançamento da Activity**: O Intent é lançado usando `startActivityForResult`.
4. **Processamento da Transação**: A aplicação Get Smart assume o controle e processa o pagamento.
5. **Retorno do Resultado**: A aplicação Get Smart devolve o controle com os resultados da transação como extras do Intent.
6. **Tratamento do Resultado**: Sua aplicação processa o resultado em `onActivityResult`.

### Nome da Ação do Intent

O nome da ação específica usado para solicitações de pagamento é:

```
es.android.redsys.mPOS.movil.tpvAndroid_PAYMENT_REQUEST
```

Este nome de ação é o identificador exclusivo que roteia o Intent para a aplicação Get Smart.

## Fluxo de Dados

O fluxo de dados entre as aplicações segue esta sequência:

![](https://static-devportal-ux.sensedia-eng.com/Pagonxt/staging/documentations/diagram-app2app-architecture-1773237810815-ci3m4hth.png)

## Considerações de Segurança

A arquitetura App2App foi projetada com a segurança como princípio fundamental, aproveitando o isolamento de aplicações do Android para proteger dados de pagamento sensíveis. Entender como o modelo de segurança funciona ajuda você a implementar a integração corretamente, mantendo a conformidade com os padrões da indústria de pagamentos.

### Isolamento de Aplicações

Cada aplicação é executada em sua própria sandbox de segurança. Sua aplicação nunca tem acesso direto a:

* Dados do cartão (PAN, CVV, data de validade).
* Inserção de PIN.
* Chaves criptográficas.
* Credenciais do gateway.

A aplicação Get Smart gerencia todos os dados sensíveis dentro de seu ambiente seguro.

### Transmissão de Dados

Apenas metadados não sensíveis da transação são passados entre as aplicações:

* Valor da transação.
* Tipo de operação (venda/estorno).
* Números de fatura/pedido.
* Resultados de autorização.
* Códigos de resposta.

### Requisitos de Certificação

Como a aplicação Get Smart é o único componente que manipula dados de cartão e a comunicação com o gateway:

* **Sua aplicação NÃO precisa de certificação PCI DSS**.
* **Sua aplicação NÃO precisa de certificação EMV**.
* **Sua aplicação NÃO precisa de certificação de aplicativo de pagamento**.

A aplicação Get Smart certificada cuida de todos os requisitos de conformidade.

## Requisitos de Configuração

A arquitetura exige configuração mínima:

### Sem Permissões Especiais

Seu `AndroidManifest.xml` não requer nenhuma permissão especial para:

* Comunicação entre aplicações.
* Processamento de pagamento.
* Leitura de cartão.
* Acesso à rede (para o gateway de pagamento).

O mecanismo padrão `startActivityForResult` funciona sem configurações adicionais.

### Sem Dependências Externas

Sua aplicação não precisa:

* Incluir quaisquer SDKs ou bibliotecas Get Smart.
* Configurar chaves de API ou credenciais.
* Gerenciar pareamento ou registro de dispositivos.

A integração depende inteiramente do sistema de Intent nativo do Android.

## Tratamento de Erros

O tratamento de erros adequado garante que sua aplicação gerencie de forma graciosa cenários onde a aplicação Get Smart está indisponível ou é incompatível. A implementação dessas verificações de erro melhora a experiência do usuário e ajuda a prevenir falhas na aplicação.

### Aplicação Ausente

Se a aplicação Get Smart não estiver instalada, o Android lançará uma `ActivityNotFoundException`. Sua aplicação deve capturar esta exceção e informar o usuário.

### Versão da Aplicação

Certifique-se sempre de que a aplicação Get Smart esteja atualizada para a versão mais recente. Versões mais antigas podem não suportar todos os recursos ou podem ter requisitos de parâmetros diferentes.

## Próximos Passos

* Entenda o fluxo de transação detalhado em [Fluxo da Transação](/pt/get-smart/get-smart-app2app/core-concepts/transaction-flow)
* Saiba como criar um pagamento de etapa única em [Criar um Pagamento de Etapa Única](/pt/get-smart/get-smart-app2app/transaction-guides/transactions/create-a-single-step-payment)