Flow es una plataforma de pagos Online con plugins para WordPress, JumpSeller, PrestaShop y otros CMS. Pero también cuentan con una API para conectarse desde cualquier otra aplicación. Solo necesitamos crear la conexión según los parámetros que ellos entregan.
Primero que nada debes crear una cuenta en Flow; Punto importante aquí, la cuenta de desarrollo creada en https://sandbox.flow.cl/ es diferente a la creada en https://flow.cl/. Por lo tanto si creas tu cuenta en flow.cl esta no existe en sandbox.flow.cl. Así que para comenzar te recomiendo crear tu cuenta con el mismo correo y contraseña en ambas paginas.
Flow recomienda tener una cuenta por cada Sitio/App que se conecte. Por lo que si estas creando una App para un cliente, el debe tener su propia cuenta de Flow, después de todo los datos bancarios estan vinculados a una cuenta. Si el cliente tuviera mas de 1 sitio/app es recomendable crear cuentas individuales para cada sitio/app.
Al crear la cuenta Flow te entrega tu clave de API y tu secretKey, debes apuntarlas para mas tarde.
La documentación de la API de Flow se encuentra en https://sandbox.flow.cl/docs/api.html. Aquí hay muchas opciones pero tu puedes elegir cual quieres implementar, no es necesario hacer una prueba de certificación así que “que funcione” es suficiente para comenzar.
Flow ofrece un Cliente API solo para PHP. En mi caso estaba desarrollando con NodeJS asi que tuve que crear la integracion manualmente.
¿Como usar la API de Flow?
Los Endpoints a los que nos conectamos son:
Site | Base URL for Rest Endpoints |
---|---|
Production | https://www.flow.cl/api |
Sandbox | https://sandbox.flow.cl/api |
Para hacer llamadas a la API es necesario firmar los datos que vamos a enviar con nuestra secretKey que puedes encontrarla acá:
Sitio | Mi cuenta Flow |
---|---|
Production | https://www.flow.cl/app/web/misDatos.php |
Sandbox | https://sandbox.flow.cl/app/web/misDatos.php |
Consumiendo Servicios GET/POST
Durante el desarrollo, pensé en hacer que el cliente hiciera las peticiones a donde debiera pero recibía errores CORS. Luego de contactarme con soporte me dijeron que para consumir los servicios debe hacerse desde el servidor debido a una certificación que imponía esto como regla.
Existe una clase no oficial que ayuda mucho a la hora de integrar con la API. Gracias a Esteban por el aporte:
https://github.com/EstebanFuentealba/flowcl-node-api-client
En nuestro software de NodeJS solo es necesario importar la clase y seguir las instrucciones en el repositorio.
¿Que ocurre luego de implementada la API de pagos?
Aunque hay muchas opciones en la API de Flow lo primero en implementar es la API para recibir pagos. El endpoint /payment/create del cual puedes revisar los parámetros en la documentación de la API.
Una vez hecho el pago. Flow te deposita en la cuenta de banco que hayas configurado en 1 o 2 días hábiles según tus preferencias. Si se realizan varias compras durante el día, te hacen llegar un solo deposito por el total. La transferencia no incluye ningún identificador especial que sirva para verificar desde el banco el pago de una compra en particular.
Cuando Flow confirma el pago (pago validado pero llegara a tu cuenta en 1 o 2 dias hábiles), envia una peticion POST a la url que especificaste en el parametro urlConfirmation. Aqui te envia el token que obtuviste junto al conectarte al endpoint /payment/create la primera vez. Este token te sirve para consultar payment/getStatus y saber el resultado del pago luego que Flow haya hecho todas las validaciones. Hay 4 posibles estados:
- 1 – pendiente de pago
- 2 – pagada
- 3 – rechazada
- 4 – anulada
Deberas actualizar el registro de tu App segun el estado obtenido desde la API payment/getStatus de Flow
Notas
Es importante mencionar, la confirmacion del pago puede ejecutarse antes de que el usuario sea redireccionado a urlReturn. Por lo que la compra debe guardarse cuando el cliente hace clic en “Pagar” y no esperar a que el usuario vuelva a urlReturn.
Aunque suena un poco enredado aquí les dejo un sencillo dibujo del flujo de información al utilizar en endpoint /payment/create
Para obtener soporte puedes escribir un correo a soporte@flow.cl, usualmente contestan en 24 horas.
Suerte en tu proyecto!
Un comentario
Muchas gracias