Esta página utiliza traducción automática. Para cualquier inconsistencia, consulte la documentación en inglés.
Callbacks
Información general
- Se representa como una solicitud HTTP POST al sistema del cliente, enviada a la URL especificada en el área personal
- Los datos en el cuerpo de la solicitud y de la respuesta están disponibles en formato JSON
- La solicitud contiene los siguientes encabezados:
Content-Type: application/jsonUser-Agent: información sobre el sistema que realiza la llamada
- Las fechas se transmiten en UTC en formato ISO 8601. Por ejemplo:
2024-07-02T12:50:30Z
Requisitos de la URL de callback
- Debe usar el protocolo seguro HTTPS
- Debe usar nombres de dominio, no direcciones IP
Autenticación
La autenticación de un callback se realiza mediante el envío de encabezados en la solicitud, similares a los encabezados utilizados para autorizar las solicitudes a la API (consulte la sección Autorización).
Verificación del callback
Para prevenir el fraude, el sistema del cliente debe verificar los valores de los encabezados de callback especificados de la siguiente manera:
- La diferencia entre la hora actual del servidor y el valor del encabezado
X-Processing-Timestampno supera el valor del encabezadoX-Processing-RecvWindow - El valor del encabezado
X-Processing-Keycoincide con el valor de la clave de acceso pública activa de la API del cliente - El valor del encabezado
X-Processing-Signaturecoincide con la firma de los datos de la solicitud firmados con la clave secreta
Manejo de callbacks
Respuesta exitosa
Si la solicitud de callback se procesa correctamente, el sistema del cliente debe responder con el código HTTP 200 OK.
Idempotencia
Si, después de una respuesta exitosa a una solicitud de callback, llega otra solicitud similar, se debe generar la misma respuesta que para la anterior.
Las solicitudes se consideran similares si tienen los mismos valores para los siguientes parámetros en el cuerpo de la solicitud:
type- Tipo de transacciónid- Identificador de la transacción en el sistema de procesamiento (para una verificación de dirección -checkId)status- Estado de la transacción
Unicidad de la transacción
Para determinar si varios callbacks corresponden a la misma transacción o a transacciones diferentes, use la combinación de los parámetros type e id del elemento raíz del JSON del callback. Esta combinación es única en todas las transacciones.
Para los callbacks de verificación de direcciones (type = AddressCheck), se usa el parámetro checkId en lugar de id.
Política de reintentos
Códigos sin reintentos
Un callback no se reintentará si el sistema del cliente responde con los siguientes códigos HTTP:
- 1xx
- 3xx
- 4xx
Códigos con reintentos
Si la respuesta tiene un código HTTP en el rango 5xx, el callback permanece en la cola de envío y los intentos de entrega continúan según una política de retroceso exponencial.
Fórmula de cálculo del retroceso:
60 seconds + {retry count}^4
Número máximo de intentos de reintento: 10
Intervalos de reintento
| Intento | Intervalo | Tiempo total |
|---|---|---|
| 1 | 61 sec | 61 sec |
| 2 | 76 sec | 137 sec |
| 3 | 141 sec | 278 sec |
| 4 | 361 sec | 594 sec |
| 5 | 685 sec | 1,279 sec |
| 6 | 1,356 sec | 2,635 sec |
| 7 | 2,461 sec | 5,096 sec |
| 8 | 4,156 sec | 9,252 sec |
| 9 | 6,621 sec | 15,873 sec |
| 10 | 10,060 sec | 25,933 sec (~7.2 hours) |