5.1 KiB
🔧 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:
// 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- Éxito6A83- 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
-
Reinstala la app con el nuevo APK:
app\build\outputs\apk\debug\app-debug.apk -
Lee tu tarjeta nuevamente
-
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:
-
¿Qué dice el mensaje de debug?
- El texto exacto que aparece en rojo
-
¿Es una tarjeta usada o nueva?
- Si es nueva, puede no tener historial
-
¿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:
-
Formato Propietario: Algunas ciudades usan extensiones propietarias del formato Calypso
-
Archivo Diferente: Los eventos pueden estar en un SFI (Short File Identifier) diferente
-
Sin Historial Local: Algunas tarjetas no almacenan historial en el chip, solo en servidores
-
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:
- Transfiere el APK a tu teléfono
- Abre el APK y permite la instalación
- 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