El interceptor entrega respuestas a las solicitudes que enviaste. Hay un segundo canal asíncrono separado: el observador de eventos, que te informa sobre el estado de la aplicación de pago — cuándo comienza un pago y cuándo termina — independientemente de quién lo haya iniciado. Esta guía explica ese canal y la única cosa que los desarrolladores más desean de él: traer su propia aplicación de vuelta al primer plano en el momento adecuado.
Dos canales, dos funciones
Mantén estas diferencias claras en tu mente:
-
El interceptor (cubierto en Cómo funciona el modelo de mensajes) recibe respuestas
DomainMessage— el resultado de una solicitud que enviaste. -
El observador de eventos recibe notificaciones de estado
ObservableEvent— lo que la aplicación de pago está haciendo en este momento.
Registras el observador de eventos en la inicialización del SDK con bindEventObserver. El evento que más te interesa es ObservableEvent.TransactionStateChanged.
.bindEventObserver { event ->
when (event) {
is ObservableEvent.ServerEvent ->
Logger.d("la aplicación de pago emitió un evento del servidor")
is ObservableEvent.TransactionStateChanged ->
when (event.state) {
is PaymentTransactionState -> { /* un pago ha comenzado */ }
is IdleTransactionState -> { /* la aplicación de pago ha terminado */ }
else -> { /* ignorar otros estados */ }
}
}
}
Los dos estados que importan
| Estado | Significado | Lo que típicamente haces |
|---|---|---|
PaymentTransactionState | El procesamiento del pago ha comenzado. | Opcional: trae tu aplicación al frente para mostrar una pantalla personalizada durante la autorización (tu marca, detalles de la transacción, un anuncio) en lugar de la interfaz predeterminada de la aplicación de pago. |
IdleTransactionState | La aplicación de pago ha terminado con la transacción. | Recomendado: trae tu aplicación al frente para mostrar el resultado final al operador. |
La razón por la que este canal existe separado de las respuestas: durante un pago, la aplicación de pago está en primer plano manejando la interacción con la tarjeta, no tu aplicación. Los eventos de estado te permiten decidir cuándo recuperar la pantalla.
Traer tu aplicación al primer plano
bringToForeground(MainActivity::class.java) trae tu aplicación de vuelta al frente de la aplicación de pago. Conéctalo a los estados que te interesan:
.bindEventObserver { event ->
when (event) {
is ObservableEvent.TransactionStateChanged ->
when (event.state) {
// Recomendado: venir al frente cuando el pago termina,
// para mostrar el resultado.
is IdleTransactionState -> bringToForeground(MainActivity::class.java)
// Opcional: venir al frente mientras la autorización está en progreso,
// por ejemplo, para mostrar tu propia interfaz en lugar del spinner de la aplicación de pago.
is PaymentTransactionState -> bringToForeground(MainActivity::class.java)
else -> { /* ignorar */ }
}
is ObservableEvent.ServerEvent -> Logger.d("evento del servidor")
}
}
Si tu aplicación es de una sola actividad, simplemente pasa la clase de tu actividad principal — no necesitas preocuparte por qué pantalla estaba mostrando; el SDK trae la actividad al frente y se preserva tu propio estado de navegación.
Permiso requerido.
bringToForegroundsolo funciona si tu aplicación ha recibido el permisoSYSTEM_ALERT_WINDOW. Sin él, la llamada no hace nada. Solicítalo como parte de la configuración de tu aplicación; en muchas versiones de terminal debe ser concedido explícitamente.
Elegir qué estados manejar
-
La mayoría de las integraciones solo manejan
IdleTransactionState— vienen al frente cuando el pago termina para mostrar el resultado. Ese es el mínimo recomendado. -
Maneja
PaymentTransactionStatetambién solo si tienes una razón para estar al frente durante la autorización — una pantalla de progreso personalizada, detalles de la transacción o publicidad. Si no, deja la aplicación de pago al frente; tiene su propia interfaz para el titular de la tarjeta. - Todo lo demás puede ser ignorado.
Relacionado
- Cómo funciona el modelo de mensajes — el canal interceptor, el contraparte de este.
- Inicio rápido — donde se registra por primera vez el observador de eventos.
- Guía: pago — la operación cuyo estado rastrean estos eventos.