Crear una orden de pago
Aprende de inicio a fin como recibir los pagos de tus clientes.
Enviar datos de orden
A continuación, se detalla el método de integración al servicio de checkout de Flow utilizando la API versión 1.
El proceso inicia cuando el cliente selecciona su producto y elige pagar mediante Flow. Cuando el comercio recibe la solicitud de pago del cliente, este debe crear una orden de pago en Flow llamando al recurso /payment/create
mediante un método POST. El esquema de recurso es del tipo application/x-www-form-urlencoded
, que debe ser indicado en el header Content-Type
apiKey required | string apiKey del comercio |
commerceOrder required | string Orden del comercio |
subject required | string Descripción de la orden |
currency | string Moneda de la orden |
amount required | number Monto de la orden |
email required | string <email> email del pagador |
paymentMethod | integer Identificador del medio de pago. Si se envía el identificador, el pagador será redireccionado directamente al medio de pago que se indique, de lo contrario Flow le presentará una página para seleccionarlo. El medio de pago debe haber sido previamente contratado. Podrá ver los identificadores de sus medios de pago en la sección "Mis Datos" ingresando a Flow con sus credenciales. Para indicar todos los medios de pago utilice el identificador:
|
urlConfirmation required | string <uri> url callback del comercio donde Flow confirmará el pago |
urlReturn required | string <uri> url de retorno del comercio donde Flow redirigirá al pagador |
optional | string Datos opcionales en formato JSON clave = valor, ejemplo: {"rut":"9999999-9","nombre":"cliente 1"} |
timeout | integer tiempo en segundos para que una orden expire después de haber sido creada. Si no se envía este parámetro la orden no expirará y estará vigente para pago por tiempo indefinido. Si envía un valor en segundos, la orden expirará x segundos después de haber sido creada y no podrá pagarse. |
merchantId | string Id de comercio asociado. Solo aplica si usted es comercio integrador. |
payment_currency | string Moneda en que se espera se pague la orden |
s required | string la firma de los parámetros efectuada con su secretKey |
{- "apiKey": "string",
- "commerceOrder": "string",
- "subject": "string",
- "currency": "string",
- "amount": 0,
- "email": "user@example.com",
- "paymentMethod": 0,
- "optional": "string",
- "timeout": 0,
- "merchantId": "string",
- "payment_currency": "string",
- "s": "string"
}
Firma de parámetros
Ejemplos de firmado de parámetros en diferentes lenguajes de programación
- PHP
- NodeJS
- Phyton
$secretKey = 'my secret'
$params = array(
'apiKey' => '1F90971E-8276-4715-97FF-2BLG5030EE3B',
'token' => 'AJ089FF5467367'
);
$keys = array_keys($params);
sort($keys);
$toSign = '';
foreach($keys as $key) {
$toSign .= $key . $params[$key];
};
$signature = hash_hmac('sha256', $toSign , $secretKey);
const {createHmac} = require("node:crypto")
const secretKey = "my secret";
const params = {
apiKey: "1F90971E-8276-4715-97FF-2BLG5030EE3B",
token: "AJ089FF5467367",
};
const keys = Object.keys(params);
keys.sort();
let toSign = "";
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
toSign += key + params[key];
}
const signature = createHmac("sha256",secretKey).update(toSign).digest("hex")
import hmac
import hashlib
secret_key
params = {
'apiKey': '1F90971E-8276-4715-97FF-2BLG5030EE3B',
'token': 'AJ089FF5467367'
}
keys = list(params.keys())
keys.sort()
to_sign = ''
for key in keys:
to_sign += key + params[key]
signature = hmac.new(secret_key.encode(), to_sign.encode(), hashlib.sha256).hexdigest()
La respuesta que entrega por Flow al llamado a crear una orden es del tipo JSON donde se indican los parámetros, flowOrder, url y token. Los parámetros url y token permiten construir la dirección del checkout para que el cliente sea redirigido al checkout de Flow.
url | string URL ha redireccionar. Para formar el link de pago a esta URL se debe concatenar el token de la siguiente manera: url + "?token=" + token |
token | string token de la transacción |
flowOrder | number Número de order de cobro Flow |
{- "token": "33373581FC32576FAF33C46FC6454B1FFEBD7E1H",
- "flowOrder": 8765456
}
Redirección
El comercio debe redireccionar al cliente concatenado la url y token de la siguiente forma: url + "?token=" + token.
El cliente, a su vez, podrá seleccionar uno de los medios de pagos disponibles y proceder con la transacción. Los comercios pueden administrar los medios de pagos que tienen disponibles a sus clientes desde el portal de Flow.