$ npm install kpf
El archivo de configuracion debe estar en formato JSON
{
"flow_url_exito": "http://ejemplo.com/exito",
"flow_url_fracaso": "http://ejemplo.com/fracaso",
"flow_url_confirmacion": "http://ejemplo.com/confirma",
"flow_tasa_default": 3,
"flow_url_pago": "http://flow.tuxpan.com/app/kpf/pago.php",
"flow_keys": "/ruta/a/llaves/",
"flow_logPath": "/ruta/a/logs/",
"flow_comercio": "correo@comercio.com"
}
Esta es una configuración para un servidor de pruebas
Se debe cambiar flow_url_pago
a https://www.flow.cl/app/kpf/pago.php
para poner en producción
Para poder usar la api se debe importar y crear un nuevo objeto
var FlowApi = require('kpf');
var config = require('/ruta/a/config.json');
var flow_api = new FlowApi(request, config);
Para generar los parametros para enviar a flow_url_pago
se usa la funcion newOrder
var flow_pack = flow_api.newOrder(numero_orden, total, descripcion);
Luego se debe enviar por metodo POST a la url definida en flow_url_pago
el valor obtenido en flow_pack
Por ejemplo a travez de un formulario
<form id="flow-form" method="post" action="http://flow.tuxpan.com/app/kpf/pago.php">
<input type="hidden" name="parameters" value="[flow_pack]">
<button type="submit">
<img id="flow" src="https://www.flow.cl/img/boton11.png">
</button>
</form>
Esto reenvia al usuario a la pagina de flow donde se realiza el pago
Flow llama a la url definida en flow_url_confirmacion
para confirmar el pago
Para revisar la informacion enviada por post y ver si el pago es valido
var flow_confirm;
var resultado;
try {
flow_confirm = flow_api.readConfirm(req.body.response);
} catch(e) {
console.log("ERROR: " + e.message);
resultado = flow_api.buildResponse(false); // Genera una respuesta de fracaso
}
La funcion buildResponse
genera una respuesta para el llamado a flow_url_confirmacion
Para poder obtener la informacion enviada y poder verificar el pago existen las siguientes funciones
flow_api.getOrderNumber() {
flow_api.getConcept() {
flow_api.getAmount() {
flow_api.getRate() {
flow_api.getStatus() {
flow_api.getFlowNumber()
flow_api.getPayer()
Para generar una respuesta se debe utilizar la funcion buildResponse
En caso de error o que el pago sea inválido se debe enviar una respuesta con parametro false
Si el pago es válido se debe enviar una respuesta con parametro true
Luego se debe responder el resultado de buildResponse
a la llamada a flow_url_confirmacion
Dependiendo si el pago es valido o no flow luego llama a flow_url_exito
o flow_url_fracaso
a traves de POST
Para obtener los datos enviados por flow en dichos llamados se debe obtener el parametro response
desde los datos enviados por POST
Por ejemplo en express.js
var response = req.body.response;
var flow_confirm = flow_api.readResult(response);
Se dispone de las mismas funciones que en el llamado a flow_url_confirmacion
para entregar una respuesta pertinente.
Para mayor informacion acerca del uso de Flow: Api Flow