# Códigos de Resultado e Erros

Quando uma operação falha ou encontra um problema, o aplicativo Tap on Phone retorna uma mensagem de erro padrão juntamente com um código de erro de 6 dígitos específico. Você pode extrair esse código do extra de intent `errorCode` ao gerenciar uma resposta `RESULT_CANCELED`.

Esta página de referência explica como interpretar esses códigos de erro e fornece uma lista completa de erros comuns do aplicativo e suas resoluções recomendadas.

## Composição do Código de Erro

Os códigos de erro de 6 dígitos seguem uma estrutura específica: `(Contexto)-(Origem){Código}`.

Por exemplo, o código de erro `10-2110` é dividido da seguinte forma:

* `10` **(Contexto)**: O erro ocorreu na tela de pagamento.  
* `2` **(Origem)**: O erro foi gerado pelo SDK.  
* `110` **(Código)**: O tipo de erro específico (`BackendSecurity`).

### Códigos de Contexto (Primeiros 2 dígitos)

O código de contexto indica a tela ou fase onde o erro ocorreu.

| Código de Contexto | Significado |
| :--- | :--- |
| `00` | Nenhum / Contexto desconhecido |
| `01` | Splash screen |
| `02` | Tela de login |
| `10` | Tela de pagamento |
| `11` | Enviar recibo (seja da tela pós-pagamento ou do histórico de recibos) |
| `20` | Contexto App2App |

### Códigos de Origem (3º dígito)

O código de origem indica qual camada da solução disparou o erro.

| Código de Origem | Significado |
| :--- | :--- |
| `1` | Erro do aplicativo Tap on Phone |

## Códigos de Erro do Aplicativo

A tabela a seguir lista os códigos de erro específicos gerados pelo aplicativo Tap on Phone (onde o código de origem é `1`).

Em muitos casos, os problemas são temporários. Recomendamos sugerir que o lojista tente novamente a operação (ou atualize suas configurações de rede) pelo menos uma vez antes de entrar em contato com o suporte.

### Erros de Rede e Backend

| Código de Erro | Nome do Erro | Causas Comuns | Ação Recomendada |
| :--- | :--- | :--- | :--- |
| `1100` | `UnavailableNetwork` | A rede está desativada ou há problemas de conectividade. | Tente atualizar as configurações de rede e tente novamente. |
| `1101` | `BackendUnknown` | Problema no backend. | Entre em contato com o suporte. |
| `1102` | `BackendTimeout` | A conectividade de rede pode ter caído ou a infraestrutura do backend pode estar com um problema de rede. | Tente atualizar as configurações de rede e tente novamente. |
| `1103` | `BackendTransportSecurity` | A versão do app não é compatível com a versão do backend ou o app foi adulterado. | Verifique a compatibilidade do app/backend com o suporte ou tente instalar um app limpo e atualizado. |
| `1104` | `BackendResponseError` | Resposta do backend não reconhecida. | Entre em contato com o suporte. |
| `1105` | `BackendNotFound` | Recurso do backend não encontrado. | Entre em contato com o suporte. |
| `1106` | `BackendBadGateway` | Problema no gateway do backend. | Entre em contato com o suporte. |

### Erros de Autenticação e Permissão

| Código de Erro | Nome do Erro | Causas Comuns | Ação Recomendada |
| :--- | :--- | :--- | :--- |
| `1107` | `BackendWrongToken` | O token de usuário é inválido. | Tente redefinir (reset)/sair (logout) explicitamente e fazer login novamente. |
| `1108` | `BackendPermissionError` | A conta do usuário pode estar configurada incorretamente. | Entre em contato com o suporte para corrigir a conta do usuário. |
| `1109` | `BackendTokenExpired` | O token da conta do usuário expirou. | Tente redefinir (reset)/sair (logout) explicitamente e fazer login novamente. |
| `1901` | `InvalidAuthentication` / `UserNotFound` | O `userId` ou `userToken` está incorreto. | Use as credenciais corretas. |

### Erros de Banco de Dados e Estado Local

| Código de Erro | Nome do Erro | Causas Comuns | Ação Recomendada |
| :--- | :--- | :--- | :--- |
| `1201` | `DatabaseUnknown` | O banco de dados local pode estar corrompido. | Tente redefinir (reset)/sair (logout) explicitamente e fazer login novamente. |
| `1202` | `DatabaseNoUser` | O banco de dados local pode estar corrompido. | Tente redefinir (reset)/sair (logout) explicitamente e fazer login novamente. |
| `1203` | `DatabaseNoReceipt` | O banco de dados local pode estar corrompido. | Tente redefinir (reset)/sair (logout) explicitamente e fazer login novamente. |
| `1902` | `InvalidReceipt` | O banco de dados local pode estar corrompido. | Tente redefinir (reset)/sair (logout) explicitamente e fazer login novamente. |
| `1903` | `NoMerchantSelected` | A conta do usuário pode estar configurada incorretamente. | Tente novamente. Se o problema persistir, realize um reset. Se ainda persistir, entre em contato com o suporte para corrigir a conta do usuário. |
| `1904` | `InvalidMerchant` | A conta do usuário pode estar configurada incorretamente. | Tente novamente. Se o problema persistir, realize um reset. Se ainda persistir, entre em contato com o suporte. |
| `1905` | `InvalidTransaction` | O banco de dados local pode estar corrompido. | Tente redefinir (reset)/sair (logout) explicitamente e fazer login novamente. |

### Erros de Intent

Esses erros ocorrem quando os parâmetros passados no seu Android Intent são inválidos, ausentes ou malformados.

| Código de Erro | Nome do Erro | Ação Recomendada |
| :--- | :--- | :--- |
| `1300` | `IntentInvalidAction` | Verifique se o `transactionType` e a ação solicitada são suportados. |
| `1301` | `IntentParameterMissing` | Verifique se todos os parâmetros obrigatórios (por exemplo, `amount`, `merchantId`) estão incluídos nos extras do seu intent. |
| `1302` | `IntentInvalidUser` | Verifique se o `userId` passado no intent é válido. |
| `1303` | `IntentInvalidMerchant` | Verifique se o `merchantId` passado no intent é válido. |

### Erros Diversos

| Código de Erro | Nome do Erro | Causas Comuns | Ação Recomendada |
| :--- | :--- | :--- | :--- |
| `1000` | `LocationDisabled` | Os serviços de localização do dispositivo estão desativados. | Solicite ao usuário que ative os serviços de localização. |
| `1110` | `BackendSendReceiptError` | O e-mail pode não estar correto. | Tente inserir um endereço de e-mail adequado. Se o problema persistir, entre em contato com o suporte. |