Que es YapeListener
App Android que captura automaticamente las notificaciones de pago de Yape Bolivia (BCP) y las envia a tu servidor via HTTP POST. Ideal para automatizar la verificacion de pagos en tu sistema.
Yape (pago recibido)
↓
Android genera notificacion
↓
YapeListener captura el monto y remitente
↓
HTTP POST al servidor configurado
↓
Tu sistema procesa el pago
Diferencia entre V1 y V2
| Caracteristica | V1 | V2 |
| NotificationListener |
SI |
SI |
| AccessibilityService |
NO |
SI |
| Lectura de ventana (Window Content) |
NO |
SI |
| Android 14 e inferior |
OK |
OK |
| Android 15+ (notif. sensibles) |
FALLA montos >1000 Bs |
OK |
El problema de Android 15
Desde Android 15, Google introdujo "Enhanced Notification Protection": las notificaciones de apps financieras (como Yape) son marcadas como sensibles y su contenido se oculta de servicios de terceros.
Que ve el NotificationListener
title: "Yape"
text: "Juan te envio Bs 50.00"
title: "Sensitive notification content hidden"
text: null
Como lo soluciona V2
El AccessibilityService de V2 usa una estrategia dual:
- Primero intenta leer la notificacion por el metodo clasico (evento)
- Si detecta censura ("Sensitive notification content hidden"), activa la lectura de ventana
- Recorre el arbol de nodos de accesibilidad del SystemUI para leer el texto visible de la notificacion (que NO esta censurado para el usuario)
- Extrae el monto con regex y lo envia al servidor
Clave: Android censura el contenido para apps de terceros, pero el texto que el usuario ve en pantalla esta intacto. V2 lee directamente de la pantalla.
Instalacion paso a paso
1
Descargar e instalar el APK
Descarga YapeListenerV2.apk en el celular. Si pide permiso para instalar de fuentes desconocidas, acepta.
2
Permiso de notificaciones
Abre la app y toca "Activar permiso de notificaciones". Busca Yape Listener en la lista y activalo.
Apps sideloaded en Android 13+: Si la app no aparece en la lista, ve a Ajustes > Apps > Yape Listener > Info > Permitir ajustes restringidos.
3
Permiso de accesibilidad (V2)
Toca "Activar Accesibilidad". Busca Yape Listener y activalo. Esto permite leer el contenido de ventana cuando las notificaciones estan censuradas.
4
Configurar URL y token
Ingresa la URL de tu servidor y el token de seguridad. El servidor recibira un POST por cada pago detectado.
5
Iniciar captura
Toca "Iniciar captura". La app pedira desactivar el ahorro de bateria para funcionar en segundo plano.
6
Configurar bateria del fabricante
Sigue las instrucciones especificas de tu marca (Samsung, Xiaomi, Honor, etc.) para que la app no sea cerrada en segundo plano.
API del servidor (HTTP POST)
Cada pago detectado genera un POST a la URL configurada con estos parametros:
| Parametro | Tipo | Descripcion |
token | string | Token de seguridad configurado en la app |
app | string | Siempre "yape" |
monto | string | Monto en formato "1500.00" (punto decimal) |
mensaje | string | Texto completo de la notificacion |
remitente | string | Nombre del remitente (o "desconocido") |
Ejemplo de request
POST /pago.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: YapeListener/5.0
token=4804&app=yape&monto=1500.00&mensaje=Juan+te+envio+Bs+1500.00&remitente=Juan
Respuesta esperada
El servidor debe responder con HTTP 200. Cualquier otra respuesta activa el reintento via WorkManager (backoff de 15 segundos).
Endpoint de consulta
GET /api_pagos.php
Configuracion adicional Android 15 (ADB)
Si el AccessibilityService V2 no es suficiente, estos comandos ADB pueden ayudar:
adb shell settings put secure enhanced_notifications 0
adb shell device_config put systemui android.service.notification.redact_sensitive_notifications_from_untrusted_listeners false
adb shell device_config put systemui android.service.notification.redact_sensitive_notifications_big_text_style false
adb shell settings put secure enabled_notification_assistant none
adb shell device_config set_sync_disabled_for_tests persistent
Nota: Los comandos device_config put pueden no funcionar en todos los fabricantes (Honor/Huawei los restringen). La solucion V2 con lectura de ventana funciona sin estos comandos.
Arquitectura del APK
| Componente | Funcion |
MainActivity |
UI principal: config URL/token, permisos, inicio/parada de captura, log de actividad |
YapeNotificationListener |
PRIMARIO NotificationListenerService con foreground service. Captura notificaciones de Yape. Funciona perfecto en Android 14 e inferior. |
YapeAccessibilityService |
FALLBACK V2 AccessibilityService que lee el contenido visible de la ventana del SystemUI cuando las notificaciones estan censuradas. |
SendPaymentWorker |
Worker de WorkManager para envio HTTP con reintentos automaticos (backoff lineal 15s) |
BootReceiver |
Reinicia el servicio automaticamente al encender el telefono |
KeepAliveService |
Watchdog que verifica que el listener siga activo |
Flujo de captura V2
Notificacion de Yape llega
↓
NotificationListener intenta leer
↓ ↓
Contenido OK "Sensitive content hidden"
↓ ↓
Procesar pago AccessibilityService V2
↓ ↓
HTTP POST Lee ventana del SystemUI
↓
Extrae monto real visible
↓
HTTP POST
Solucion de problemas
"Sin monto" en el log
El texto de la notificacion no contiene un monto reconocible. Verifica que la notificacion sea de un pago recibido (no de publicidad u otro tipo).
"Sensitive notification content hidden"
- Verifica que el AccessibilityService este activado
- Desactiva y reactiva el servicio de accesibilidad
- Si persiste, aplica los comandos ADB de la seccion anterior
La app se cierra en segundo plano
- Desactiva la optimizacion de bateria para YapeListener
- Sigue las instrucciones del fabricante que aparecen en la app
- "Fijar" la app en la lista de apps recientes
No llegan pagos al servidor
- Verifica la URL y token en la app
- Revisa que el servidor responda HTTP 200
- Revisa el log de la app para ver errores de envio
Datos tecnicos
| Package | com.boliviaimpuestos.yapelistener |
| Min SDK | 26 (Android 8.0) |
| Target SDK | 35 (Android 15) |
| Yape package | com.bcp.bo.wallet |
| User-Agent | YapeListener/5.0 |
| Dependencias | androidx.work:work-runtime:2.10.0 |
| Permisos | INTERNET, FOREGROUND_SERVICE, BIND_NOTIFICATION_LISTENER, BIND_ACCESSIBILITY_SERVICE, RECEIVE_BOOT_COMPLETED, WAKE_LOCK |