Webhooks para Pagos diferidos
Debido a su naturaleza, los pagos a través de Zelle y Pago Móvil se hacen de forma diferida, es decir, el cliente paga directamente en su banco y luego registra el código de autorización en nuestra plataforma.
Luka tiene la capacidad de validar en línea la referencia registrada por el usuario, sin embargo, es posible que se equivoque al momento de escribirla, lo cual podría ocasionar que no la encuentre de forma automática. En este caso, Luka marca la transacción con el estado Pending (pendiente).
Cuando la transacción queda con estado pendiente, se vuelve a revisar automáticamente cada 2 minutos hasta reflejarse la transacción en la cuenta, pero, si de todas formas no se encuentra, se hace una revisión manual. En esta revisión manual, se aprueba o rechaza la transacción indicando el motivo del rechazo. En ambos casos, el cliente recibirá un email con el resultado de la operación.
A efectos de la integración, en la respuesta, el campo Exitoso tendrá el valor true
pero también se debe revisar la propiedad InfoProceso.EstatusProcesamiento
, la cual indica el estatus real del pago. Las 2 posibilidades son: success
(exitoso) o pending
(pendiente):
{
"Monto":16.03,
"MontoUsd":0,
"InfoProceso":{
"EstatusProcesamiento":"pending"
},
"TarjetaHabiente":{
"Nombre":"",
"Apellido":""
},
"Moneda":"USD",
"InfoTarjeta":{
"Id":0,
"UltimosCuatroDigitos":"",
"SubTipoTarjeta":"",
"TipoTarjeta":"",
"CategoriaTarjeta":"",
"Bin":"",
"FechaVencimiento":"",
"Pais":"",
"Direccion":"",
"CodigoPostal":"",
"Descripcion":""
},
"InfoUsuarioPagador":{
"Nombre":"Dennis",
"Apellido":"Castillo",
"Email":"demo@payco.net.ve"
},
"TransaccionId":11339,
"TransaccionMerchantId":0,
"Descripcion":"Tx Pendiente",
"TrazaId":"d225cd97-f3bd-40ad-a92f-ae05f72eb042",
"Exitoso":true,
"MedioDePago":"Zelle",
"Canal":"API",
"MontoOriginal":{
"Monto":16.03,
"Moneda":"USD",
"ComisionMerchant":0.76487
},
"MerchantId": null,
"FechaOperacion": null,
"CargosAdicionales": null,
"Cuotas": null
}
En caso de que la transacción quede en estatus Pendiente, se debe mostrar un mensaje al usuario indicando que su pago será revisado y recibirá la respuesta vía correo.
Para recibir el estatus final de la transacción, se envía la respuesta a través de un webhook.
En este caso, el integrador debe crear una función en su API que reciba la respuesta de Lukapay y actualice el estatus de la transacción en su sistema.
El objeto con la respuesta que se envía a través del método POST y tiene el siguiente formato:
Nombre del campo | Descripción | Tipo | Obligatorio |
---|---|---|---|
Monto | Monto de la operación | number | Sí |
Id | Identificador de la transacción en Luka | number | Sí |
IdTraza | Identificador único de trazabilidad en la base de datos del comercio | string | Sí |
CodigoAutorizacion | Código de autorización del Zelle | string | Sí |
Estatus | Objeto con el detalle del estado de la transacción | object | Sí |
Estatus.Id | ID del estado de la operación devuelto por Lukapay. Valores posibles: 6 (exitoso), 7 (fallido) | number | Sí |
Estatus.Descripcion | Nombre del estado de la operación devuelto por Lukapay. Valores posibles: Tx Exitosa, Tx Fallida | string | Sí |
Fecha | Fecha de la operación | string | Sí |
FechaCreacion | Fecha de la operación | string | Sí |
[
{
"Monto":16.03,
"Id":8357,
"IdTraza":"1234567890",
"CodigoAutorizacion":"kjfkgds874k",
"Estatus":{
"Id":6,
"Descripcion":"Tx Exitosa"
},
"Fecha":"2022-02-23T18:27:47.0170155Z",
"FechaCreacion":"2022-02-23T18:27:47.1959116Z"
},
{
"Monto":1.0,
"Id":3547,
"IdTraza":"1234567890",
"CodigoAutorizacion":"kljghdfjg45646",
"Estatus":{
"Id":7,
"Descripcion":"Tx Fallida"
},
"Fecha":"2021-04-23T22:10:29.4103Z",
"FechaCreacion":"2021-04-23T22:10:29.4519723Z"
}
]
Nota: Una vez creado el endpoint del webhook, se debe enviar esta información al equipo de desarrollo de Luka para proceder a configurarlo en el servicio.