# Códigos de resultado y errores

Cuando una operación falla o encuentra un problema, la app Tap on Phone devuelve un mensaje de error estándar junto con un código de error específico de 6 dígitos. Puedes extraer este código de los extras del Intent `errorCode` al gestionar una respuesta `RESULT_CANCELED`.

Esta página de referencia explica cómo interpretar estos códigos de error y proporciona una lista completa de los errores comunes de la app y sus resoluciones recomendadas.

## Composición del código de error

Los códigos de error de 6 dígitos siguen una estructura específica: `(Contexto)-(Origen){Código}`.

Por ejemplo, el código de error `10-2110` se desglosa de la siguiente manera:

* `10` **(Contexto)**: El error ocurrió en la pantalla de pago.  
* `2` **(Origen)**: El error fue generado por el SDK.  
* `110` **(Código)**: El tipo de error específico (`BackendSecurity`).

### Códigos de contexto (primeros 2 dígitos)

El código de contexto indica la pantalla o fase donde se produjo el error.

| Código de Contexto | Significado |
| :--- | :--- |
| `00` | Ninguno / Contexto desconocido |
| `01` | Pantalla de bienvenida |
| `02` | Pantalla de inicio de sesión |
| `10` | Pantalla de pago |
| `11` | Enviar recibo (ya sea desde la pantalla posterior al pago o desde el historial de recibos) |
| `20` | Contexto App2App |

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

El código de origen indica qué capa de la solución generó el error.

| Código de Origen | Significado |
| :--- | :--- |
| `1` | Error de la app Tap on Phone |
| `2` | Error del SDK |

## Códigos de error de la app

La siguiente tabla enumera los códigos de error específicos generados por la app Tap on Phone (donde el código de origen es `1`).

En muchos casos, los problemas son temporales. Recomendamos que el comercio vuelva a intentar la operación (o actualice su configuración de red) al menos una vez antes de ponerse en contacto con soporte.

### Errores de red y backend

| Código de Error | Nombre del Error | Causas Comunes | Acción Recomendada |
| :--- | :--- | :--- | :--- |
| `1100` | `UnavailableNetwork` | La red está desactivada o hay problemas de conectividad. | Prueba a actualizar la configuración de red y vuelve a intentarlo. |
| `1101` | `BackendUnknown` | Problema en el backend. | Ponte en contacto con soporte. |
| `1102` | `BackendTimeout` | La conectividad de red podría haberse cortado, o la infraestructura del backend podría tener un problema de red. | Prueba a actualizar la configuración de red y vuelve a intentarlo. |
| `1103` | `BackendTransportSecurity` | La versión de la app no es compatible con la versión del backend, o la app ha sido manipulada. | Comprueba la compatibilidad de la app/backend con soporte, o intenta instalar una versión limpia y actualizada de la app. |
| `1104` | `BackendResponseError` | Respuesta del backend no reconocida. | Ponte en contacto con soporte. |
| `1105` | `BackendNotFound` | Recurso del backend no encontrado. | Ponte en contacto con soporte. |
| `1106` | `BackendBadGateway` | Problema en el gateway del backend. | Ponte en contacto con soporte. |

### Errores de autenticación y permiso

| Código de Error | Nombre del Error | Causas Comunes | Acción Recomendada |
| :--- | :--- | :--- | :--- |
| `1107` | `BackendWrongToken` | El token de usuario no es válido. | Intenta restablecer (reset)/cerrar sesión (logout) explícitamente e iniciar sesión de nuevo. |
| `1108` | `BackendPermissionError` | La cuenta de usuario podría estar mal configurada. | Ponte en contacto con soporte para corregir la cuenta de usuario. |
| `1109` | `BackendTokenExpired` | El token de la cuenta de usuario ha caducado. | Intenta restablecer (reset)/cerrar sesión (logout) explícitamente e iniciar sesión de nuevo. |
| `1901` | `InvalidAuthentication` / `UserNotFound` | El `userId` o el `userToken` es incorrecto. | Utiliza las credenciales correctas. |

### Errores de base de datos y estado local

| Código de Error | Nombre del Error | Causas Comunes | Acción Recomendada |
| :--- | :--- | :--- | :--- |
| `1201` | `DatabaseUnknown` | La base de datos local podría estar dañada. | Intenta restablecer (reset)/cerrar sesión (logout) explícitamente e iniciar sesión de nuevo. |
| `1202` | `DatabaseNoUser` | La base de datos local podría estar dañada. | Intenta restablecer (reset)/cerrar sesión (logout) explícitamente e iniciar sesión de nuevo. |
| `1203` | `DatabaseNoReceipt` | La base de datos local podría estar dañada. | Intenta restablecer (reset)/cerrar sesión (logout) explícitamente e iniciar sesión de nuevo. |
| `1902` | `InvalidReceipt` | La base de datos local podría estar dañada. | Intenta restablecer (reset)/cerrar sesión (logout) explícitamente e iniciar sesión de nuevo. |
| `1903` | `NoMerchantSelected` | La cuenta de usuario podría estar mal configurada. | Vuelve a intentarlo. Si el problema persiste, realiza un reset. Si sigue persistiendo, ponte en contacto con soporte para corregir la cuenta de usuario. |
| `1904` | `InvalidMerchant` | La cuenta de usuario podría estar mal configurada. | Vuelve a intentarlo. Si el problema persiste, realiza un reset. Si sigue persistiendo, ponte en contacto con soporte. |
| `1905` | `InvalidTransaction` | La base de datos local podría estar dañada. | Intenta restablecer (reset)/cerrar sesión (logout) explícitamente e iniciar sesión de nuevo. |

### Errores de Intent

Estos errores ocurren cuando los parámetros pasados en tu Android Intent no son válidos, faltan o están mal formados.

| Código de Error | Nombre del Error | Acción Recomendada |
| :--- | :--- | :--- |
| `1300` | `IntentInvalidAction` | Verifica que el `transactionType` y la acción solicitada sean compatibles. |
| `1301` | `IntentParameterMissing` | Comprueba que todos los parámetros obligatorios (por ejemplo, `amount`, `merchantId`) están incluidos en los extras de tu Intent. |
| `1302` | `IntentInvalidUser` | Verifica que el `userId` pasado en el Intent sea válido. |
| `1303` | `IntentInvalidMerchant` | Verifica que el `merchantId` pasado en el Intent sea válido. |

### Errores diversos

| Código de Error | Nombre del Error | Causas Comunes | Acción Recomendada |
| :--- | :--- | :--- | :--- |
| `1000` | `LocationDisabled` | Los servicios de ubicación del dispositivo están desactivados. | Solicita al usuario que active los servicios de ubicación. |
| `1110` | `BackendSendReceiptError` | El correo electrónico podría no ser correcto. | Intenta introducir una dirección de correo electrónico adecuada. Si el problema persiste, ponte en contacto con soporte. |