Webhook Liquidación
El Webhook o Callback de Liquidación le permitirá al agrupador realizar la liquidación en línea de las operaciones de Sub-Comercios.
Las condiciones técnicas que deberá cumplir este tipo de webhook son las mismas que un Webhook de Operaciones.
Campo | Descripción |
|---|---|
type | Tipo de Webhook Procesado |
data | Información general de la intención de liquidación |
data.deviceData | Indica la terminal física con la que se ejecutó el pago |
data.entity | Información del Sub-Comercio |
data.account | Información sobre la cuenta configurada por el comercio para la liquidación. |
data.payment | Información completa del Cobro Realizado y Medio de Pago |
data.service | Costo del Servicio o paquete utilizado en la operación, junto con los importes de servicio o arancel calculado en base a las reglas definidas y su fecha de acreditación |
data.net | Monto neto de las transacciones. Corresponde con las transacciones financieras que aplican para la liquidación en curso. |
data.transactions | Transacciones realizadas en la la liquidación, como cálculo de impuestos, costo de servicio u otros. Cada tipo de Transacción posee una codificación para identificarla. |
data.settlement | Contiene información identificatoria sobre la liquidación enviada. |
{
"type": "operator_settlement",
"data": {
"result": true,
"deviceData": {
"appVersion": "0.6.0",
"buildNumber": "600",
"manufacturer": "ingenico",
"model": "DX8000",
"os": "android",
"serialNumber": "ING:226GCD8H7743"
},
"view": {
"type": "card"
},
"entity": {
"uid": "gcynnGJwU",
"reference": "123456",
"name": "Wayne, Inc",
"tax_id": "123456789"
},
"account": {
"type": "arg.cbu",
"number": "0110000000000000000002"
},
"source": {
"name": "visa",
"type": "card",
"reference": "visa.galicia"
},
"payment": {
"context": "plugin.value.pos:mobile.pos",
"id": "PWSbfHH9A",
"total": 6705,
"source": {
"name": "Visa Galicia",
"type": "card",
"number": "450799******0010",
"reference": "visa.galicia",
"cardholder": {
"name": "Bruce Wayne"
},
"expiration": {
"year": "12",
"month": "35"
},
"installment": {
"count": 1,
"amount": 0,
"reference": "",
"description": "1"
},
"transaction": {
"batchNo": "10",
"ticketNo": "1234",
"transactionId": "PWSbfHH9A",
"authorizationCode": "1010101010"
}
},
"status": {
"code": "200",
"data": {},
"text": "Transacción Aprobada",
"view": "default",
"message": "Transacción Aprobada",
"resultCode": 0
},
"created": "2022-05-24T08:26:05.377Z",
"updated": "2022-05-24T08:26:09.966Z",
"currency": {
"code": "ARS",
"text": "Peso Argentino",
"locale": "es-AR",
"symbol": "$"
},
"operation": {
"type": "payment.v2"
},
"reference": "576127271",
"description": "Compra: 576127271",
"riskAnalysis": {
"band": "N/A",
"level": "N/A"
},
"requestedTotal": 6705,
"requestedCurrency": {
"code": "ARS",
"text": "Peso Argentino",
"locale": "es-AR",
"symbol": "$"
}
},
"customer": {
"name": "Bruce Wayne",
"email": "[email protected]",
"phone": "+15555555555",
"identification": "12123123"
},
"service": {
"rule": "223ssTHACBy",
"percentage": 2, // Porcentaje de arancel sobre la operacóón
"amount": 0, // Importe fijo de arancel
"total": 35, // Total del arancel (porcentaje + fijo)
"paymentDate": 1653381736930 // Fecha original de pago en formato Timestamp
},
"net": {
"total": -6668,
"currency": "ARS"
},
"transactions": [
{
"uid": "Lc718a91k7",
"status": "300",
"description": "Costo de Servicio",
"type": "Service",
"currency": {
"value": "ARS",
"label": "Peso Argentino",
"symbol": "$",
"locale": "es-AR",
"hidden": false
},
"total": 35,
"updated": "2021-11-18T18:02:06.759Z",
"created": "2021-11-07T03:01:26.804Z"
},
{
"uid": "jU920kaiUA",
"status": "300",
"description": "Pago",
"type": "Payment",
"currency": {
"value": "ARS",
"label": "Peso Argentino",
"symbol": "$",
"locale": "es-AR",
"hidden": false
},
"total": -6705,
"updated": "2021-11-18T18:02:06.759Z",
"created": "2021-11-07T03:01:26.804Z"
}
],
"settlement": {
"id": "HAJUSIKA81921782HY",
"action": "refund"
}
}
}Respuesta de liquidación
El agrupador deberá responder al webhook con una respuesta válida. En el caso de que el agrupador desee indicar cual es el código de liquidación asignado, deberá responder a la notificación de la siguiente forma:
{
"result": true,
"data": {
"status": "fulfilled",
"settlementConfirmationId": "UAIKSIAO8291" // ID de confirmación de liquidación (Opcional)
}
}Valores posibles para el objeto stauts:
- fulfilled: La liquidación pudo ser cursada exitosamente.
- fulfillment_fail_retry: La liquidación no pudo ser cursada y se debe reintentar la solicitud de liquidación.
- fulfillment_fail_not_retry: La liquidación no pudo ser cursada y no se debe reintentar la solicitud de liquidación.
En caso de que no se devuelva este cuerpo de respuesta (es decir, sin cuerpo de respuesta), el sistema considerará siempre que la liquidación fue fulfilled.
Validación de respuesta
La notificación será tomada como válida si cumple con las siguientes condiciones:
- Es respondida con un estado HTTP 200, 201 o 204.
- Si contiene un cuerpo en la respuesta, siempre que la propiedad "result" esté definida como true
En cualquier otra condición, la notificación de liquidación será marcada como no procesada o fallida.