176 lines
5.1 KiB
Markdown
176 lines
5.1 KiB
Markdown
# 🔧 Actualización - Debug de Movimientos
|
||
|
||
## Problema Reportado
|
||
Los movimientos no se estaban mostrando en la aplicación, solo el número de tarjeta y el saldo.
|
||
|
||
## ✅ Cambios Implementados
|
||
|
||
### 1. Mejorado el Manejo de Errores
|
||
- **Antes**: Los errores al leer movimientos se "tragaban" silenciosamente
|
||
- **Ahora**: Se capturan y muestran en la UI para debugging
|
||
|
||
### 2. Comandos APDU Múltiples
|
||
He implementado 3 intentos diferentes para leer los registros de eventos:
|
||
|
||
```kotlin
|
||
// Intento 1: SFI 0x08 (file 8)
|
||
0x80 0x2B [record] 0x45 0x1D
|
||
|
||
// Intento 2: SFI 0x07
|
||
0x80 0x2B [record] 0x3D 0x1D
|
||
|
||
// Intento 3: Comando simplificado
|
||
0x80 0x2B [record] 0x05 0x1D
|
||
```
|
||
|
||
Esto aumenta las posibilidades de éxito con diferentes implementaciones de tarjetas Calypso.
|
||
|
||
### 3. Status Words Flexibles
|
||
Ahora la app reconoce:
|
||
- `9000` - Éxito
|
||
- `6A83` - Registro no encontrado (normal si no hay movimientos)
|
||
- `6A82` - Archivo no encontrado (tarjeta sin historial)
|
||
|
||
### 4. UI con Información de Debug
|
||
|
||
Ahora verás uno de estos escenarios:
|
||
|
||
#### Caso A: Movimientos Encontrados ✅
|
||
```
|
||
┌─────────────────────────────┐
|
||
│ Últimos Movimientos │
|
||
│ │
|
||
│ Carga +10.00 € │
|
||
│ 15/03/2026 14:30 │
|
||
│ Línea 12 │
|
||
│ ... │
|
||
└─────────────────────────────┘
|
||
```
|
||
|
||
#### Caso B: Sin Movimientos (con debug) 🔍
|
||
```
|
||
┌─────────────────────────────┐
|
||
│ Últimos Movimientos │
|
||
│ │
|
||
│ No se pudieron leer los │
|
||
│ movimientos │
|
||
│ │
|
||
│ Debug: Registro no │
|
||
│ encontrado │
|
||
└─────────────────────────────┘
|
||
```
|
||
|
||
## 🧪 Qué Probar Ahora
|
||
|
||
1. **Reinstala la app** con el nuevo APK:
|
||
```
|
||
app\build\outputs\apk\debug\app-debug.apk
|
||
```
|
||
|
||
2. **Lee tu tarjeta nuevamente**
|
||
|
||
3. **Observa la sección "Últimos Movimientos"**:
|
||
- Si ves movimientos: ¡Perfecto! ✅
|
||
- Si ves "No se pudieron leer...": Lee el mensaje de debug
|
||
|
||
## 📊 Posibles Resultados
|
||
|
||
### Resultado 1: Funciona Ahora ✅
|
||
Si los movimientos aparecen, significa que uno de los nuevos comandos funcionó.
|
||
|
||
### Resultado 2: "Debug: Registro no encontrado" ⚠️
|
||
**Significado**: La tarjeta no tiene registros de eventos disponibles para leer.
|
||
|
||
**Posibles causas**:
|
||
- La tarjeta es nueva y no tiene movimientos todavía
|
||
- Los registros de eventos están en un archivo diferente
|
||
- La tarjeta Millennium usa un formato propietario diferente
|
||
|
||
**Solución**: Es normal. Algunas tarjetas no almacenan historial localmente.
|
||
|
||
### Resultado 3: Otro mensaje de error 🔍
|
||
Si ves otro error, por favor compártelo conmigo para investigar más.
|
||
|
||
## 🔬 Próximos Pasos según el Resultado
|
||
|
||
### Si Funciona:
|
||
- ✅ Ya está todo listo
|
||
- Puedes usar la app normalmente
|
||
- Los movimientos se mostrarán cuando estén disponibles
|
||
|
||
### Si No Funciona:
|
||
Necesitaré más información:
|
||
|
||
1. **¿Qué dice el mensaje de debug?**
|
||
- El texto exacto que aparece en rojo
|
||
|
||
2. **¿Es una tarjeta usada o nueva?**
|
||
- Si es nueva, puede no tener historial
|
||
|
||
3. **¿Puedes leer movimientos en la app oficial de iTranvias?**
|
||
- Esto confirmaría que los datos existen
|
||
|
||
## 💡 Información Técnica
|
||
|
||
### Por qué pueden faltar los movimientos:
|
||
|
||
1. **Formato Propietario**: Algunas ciudades usan extensiones propietarias del formato Calypso
|
||
|
||
2. **Archivo Diferente**: Los eventos pueden estar en un SFI (Short File Identifier) diferente
|
||
|
||
3. **Sin Historial Local**: Algunas tarjetas no almacenan historial en el chip, solo en servidores
|
||
|
||
4. **Encriptación**: Algunos campos pueden estar encriptados y requerir claves específicas
|
||
|
||
### Comandos que estamos probando:
|
||
|
||
Las tarjetas Calypso usan el comando READ RECORD (`0x2B`) con diferentes parámetros:
|
||
|
||
- **P1**: Número de registro (1, 2, 3)
|
||
- **P2**: SFI × 8 + modo (ej: `0x45` = SFI 8, modo 5)
|
||
- **Le**: Longitud esperada (`0x1D` = 29 bytes)
|
||
|
||
Estamos probando los SFI más comunes:
|
||
- SFI 7 (típico para eventos de validación)
|
||
- SFI 8 (típico para log de transacciones)
|
||
- Modo directo sin SFI
|
||
|
||
## 📱 Instalación del APK Actualizado
|
||
|
||
El nuevo APK está en:
|
||
```
|
||
app\build\outputs\apk\debug\app-debug.apk
|
||
```
|
||
|
||
Para instalar:
|
||
1. Transfiere el APK a tu teléfono
|
||
2. Abre el APK y permite la instalación
|
||
3. Si ya tenías la app instalada, se actualizará automáticamente
|
||
|
||
## ✅ Build Exitoso
|
||
|
||
```
|
||
BUILD SUCCESSFUL ✅
|
||
35 tareas ejecutadas
|
||
7 cambios aplicados
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 Resumen
|
||
|
||
He mejorado significativamente la lectura de movimientos:
|
||
- ✅ Múltiples comandos APDU (3 intentos)
|
||
- ✅ Mejor manejo de errores
|
||
- ✅ Información de debug visible
|
||
- ✅ Status words más flexibles
|
||
|
||
**Próximo paso**: Prueba la app actualizada y cuéntame qué mensaje ves en la sección de movimientos.
|
||
|
||
---
|
||
|
||
**Actualización**: 9 de Marzo, 2026
|
||
**Versión**: 1.1 (Debug Build)
|
||
**Estado**: Listo para probar
|
||
|