Estado de una orden
Consulta el estado de tus órdenes.
Para verificar el estado de la transacción se debe llamar al recurso de Flow /payment/getStatus
mediante un método GET
. Los parámetros requeridos para realizar la consulta del estado de la transacción se describen en la siguiente tabla. Estos parámetros se deben incluir como query parameters en la consulta.
Parámetros consulta
Los parámetros requeridos para realizar la consulta del estado de la transacción se describen en la siguiente tabla. Estos parámetros se deben incluir como query parameters en la consulta.
apiKey required | string apiKey del comercio |
token required | string token de la transacción enviado por Flow |
s required | string la firma de los parámetros efectuada con su secretKey |
{- "apiKey": "1F90971E-8276-4715-97FF-2BLG5030EE3B",
- "token": "AJ089FF5467367",
- "s": "33373581FC32576FAF33C46FC6454B1FFEBD7E1H"
}
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()
Parámetros respuesta
La respuesta de la consulta del estado de la transacción es del tipo JSON y los parámetros de ella se detallan a continuación.
flowOrder | integer El número de la orden de Flow |
commerceOrder | string El número de la orden del comercio |
requestDate | string <yyyy-mm-dd hh:mm:ss> La fecha de creación de la orden |
status | integer El estado de la order
|
subject | string El concepto de la orden |
currency | string La moneda |
amount | number <float> El monto de la orden |
payer | string El email del pagador |
optional | string or null datos opcionales enviados por el comercio en el request de creación de pago en el parámetro optional en formato JSon |
object Información para un pago pendiente cuando se generó un cupón de pago. Si no existen datos es que no se generó un cupón de pago. | |
object Los datos del pago | |
merchantId | string or null Id de comercio asociado. Solo aplica si usted es comercio integrador. |
{- "flowOrder": 3567899,
- "commerceOrder": "sf12377",
- "requestDate": "2017-07-21 12:32:11",
- "status": 1,
- "subject": "game console",
- "currency": "CLP",
- "amount": 12000,
- "payer": "pperez@gamil.com",
- "optional": {
- "RUT": "7025521-9",
- "ID": "899564778"
}, - "pending_info": {
- "media": "Multicaja",
- "date": "2017-07-21 10:30:12"
}, - "paymentData": {
- "date": "2017-07-21 12:32:11",
- "media": "webpay",
- "conversionDate": "2017-07-21",
- "conversionRate": 1.1,
- "amount": 12000,
- "currency": "CLP",
- "fee": 551,
- "balance": 11499,
- "transferDate": "2017-07-24"
}, - "merchantId": "string"
}
Una vez recibida la respuesta de la consulta de la orden, el comercio podrá actualizar su estado en sus sistemas. De este modo, al ser redirigido, el cliente verá la vista correspondiente a la transacción, ya sea exitosa, fallida o pendiente de pago.
La consulta del estado se puede realizar en cualquier momento de la transacción, aunque se recomienda hacerlo después de recibir la confirmación de la transacción y al momento de recibir la redirección a la URL de retorno, para informar correctamente al cliente sobre el estado final de la transacción.
Una vez confirmada la transacción con un pago exitoso, Flow notificará por correo electrónico tanto al comercio como al cliente, indicando los detalles de la transacción.
Flow tiene disponible otros servicios para conocer el estado de la orden usando la API:
/payment/getStatusByCommerceId
: Este método permite obtener el estado de un pago en base alcommerceId
./payment/getStatusByFlowOrder
: Este método permite obtener el estado de un pago en base alflowOrder
./payment/getPayments
: Este método permite obtener la lista paginada de pagos recibidos en un día. Los objetos pagos de la lista tienen la misma estructura de los retornados en los serviciospayment/getStatus
./payment/getStatusExtended
: Este método se utiliza para obtener el estado de un pago. A diferencia del/payment/getStatus
este servicio retorna el tipo de pago, los 4 últimos dígitos de la tarjeta (si el pago se realizó con tarjeta) y la información del último intento de pago. Se debe utilizar en la página callback del comercio para recibir notificaciones de pagos. Cada vez que el pagador efectúe un pago, Flow enviará víaPOST
una llamada a la página del comercio, pasando como parámetro un token que deberá utilizarse en este servicio./payment/getStatusByFlowOrderExtended
: Este método permite obtener el estado de un pago en base alflowOrder
. A diferencia del/payment/getStatusByFlowOrder
este servicio retorna el tipo de pago, los 4 últimos dígitos de la tarjeta (si el pago se hizo con tarjeta) y la información del último intento de pago./payment/getTransactions
: Este método permite obtener la lista paginada de transacciones realizadas en un día. Los objetos transacción de la lista tienen la misma estructura de los retornados en los servicios payment/getStatus.