Webhook
Due to their nature, payments via Zelle and Pago Móvil are made in a asynchronous manner, meaning the customer pays directly through their bank and then records the authorization code in our platform.
Luka has the ability to validate the reference registered by the user online. However, it is possible that the user might enter it incorrectly, which could prevent the system from finding it automatically. In this case, Luka marks the transaction with the status Pending
.
When a transaction is marked as pending, it is automatically checked every 2 minutes until the transaction reflects in the account. If it still cannot be found, a manual review is conducted. In this manual review, the transaction is either approved or rejected, with the reason for rejection provided. In both cases, the customer will receive an email with the result of the operation.
For integration purposes, in the response, the field Exitoso
will have the value true
, but it is also necessary to check the InfoProceso.EstatusProcesamiento
property, which indicates the real status of the payment. The two possibilities are: success
(successful) or pending
(pending).
{
"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
}
If the transaction remains in Pending
status, a message should be displayed to the user, indicating that their payment will be reviewed and they will receive a response via email.
To receive the final transaction status, the response is sent via a webhook.
In this case, the integrator must create a function in their API that receives the response from Lukapay and updates the transaction status in their system.
The object with the response, sent through the POST method, follows this format:
Field Name | Description | Type | Mandatory |
---|---|---|---|
Monto | Transaction amount | number | Yes |
Id | Transaction identifier in Luka | number | Yes |
IdTraza | Unique traceability identifier in the merchant's database | string | Yes |
CodigoAutorizacion | Authorization code from Zelle | string | Yes |
Estatus | Object with the transaction status details | object | Yes |
Estatus.Id | Transaction status ID returned by Lukapay. Possible values: 6 (successful), 7 (failed) | number | Yes |
Estatus.Descripcion | Transaction status description returned by Lukapay. Possible values: Tx Exitosa, Tx Fallida | string | Yes |
Fecha | Date of the transaction | string | Yes |
FechaCreacion | Creation date of the transaction | string | Yes |
[
{
"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"
}
]
Note: Once the webhook endpoint is created, this information should be sent to the Luka development team for configuration in the service.