Estado global mutable (problema de concurrencia)
El SDK utiliza un objeto global "KeyPayCheckoutSession" para almacenar el callback, el URI de retorno y el intent de pago.
Esto significa que si se inician múltiples flujos de pago en paralelo (por ejemplo, desde diferentes Activities o con diferentes requests), el estado se sobrescribirá, provocando que los callbacks se pierdan o se entreguen al flujo incorrecto. Esto es un bug crítico de concurrencia.
Sugerencia: En lugar de un objeto global, el estado debería asociarse a cada instancia de KeyPayCheckoutActivity o gestionarse mediante un identificador de sesión único.
Estado global mutable (problema de concurrencia)
El SDK utiliza un objeto global "KeyPayCheckoutSession" para almacenar el callback, el URI de retorno y el intent de pago.
Esto significa que si se inician múltiples flujos de pago en paralelo (por ejemplo, desde diferentes Activities o con diferentes requests), el estado se sobrescribirá, provocando que los callbacks se pierdan o se entreguen al flujo incorrecto. Esto es un bug crítico de concurrencia.
Sugerencia: En lugar de un objeto global, el estado debería asociarse a cada instancia de KeyPayCheckoutActivity o gestionarse mediante un identificador de sesión único.