Integración de Bizum en TPVs

Creación de un servicio proxy hacia Bizum

Bizum se ha convertido en un medio de pago muy popular, tanto por su rápidez como su comodidad para el usuario.

En este post vamos a explicar la solución implementada para su integración en un red de TPVs (terminales punto de venta)

El caso de uso es bastante simple:

Una red de tiendas dispone de un gran número de TPVs que ya cuentan con integración en medios de pago como el efectivo o pago con tarjeta. Ahora queremos incluir Bizum como otro método de pago.

Bizum ofrece una API securizada para realizar las operaciones de solicitud de pago, consulta del estado, etc. En lugar de tener que implementar el diálogo contra este servicio (y tener que compartir las claves en cada uno) se ha desarrollado un servicio interno que hará de proxy

Este servicio proxy se encuentra en la red interna por lo que se cuenta con un primer nivel de seguridad. Así mismo se han implementado otros dos niveles de seguridad:

  • filtro por IPs de tal forma que sólo las peticiones desde ciertos origenes son permitidas

  • Un ApiToken interno requerido en cada petición

Request Payment

El diálogo para solicitar un pago a través de Bizum se convierte en algo casi trivial

bizum

Como se puede ver en la secuencia, la integración se realiza principalmente entre los TPVs y BizumProxy, evitando tener la lógica en aquellos, junto con claves sensibles.

Así mismo, al tener un único punto de acceso hacia Bizum controlamos y medimos mejor quién está usando la pasarela.

INFO

El sistema Bizum cuenta con otros sistemas de integración, pero el propuesto en esta solución sigue un modelo PULL evitando tener que habilitar puntos de entrada públicos con todos los problemas de seguridad que ello implica.

Servicio

Mediante una implementación Java, usando librerías reactivas, se ha conseguido que una simple instancia pueda ofrecer servicio a cientos de terminales de forma simultánea.

En este caso en particular se ha desplegado dentro del propio cluster kubernetes pero gracias a los requisitos mínimos que necesita se puede ejecutar en otros sistemas sin mucho esfuerzo.

Open Source

Lamentablemente, la implementación actual ha sido creada como software propietario pero estamos trabajando para poder publicarla como Open Source.

Mientras tanto, si deseas saber más sobre la implementación no dudes en ponerte en contacto con nosotros.