Skip to Content
Integra pagos con terminales POS directamente desde tu app Android 🚀 - Conoce el SDK Android
API EndpointsPagos con 3DSConsultar resultado 3DS

Consultar resultado 3DS

Esta sección detalla el uso del endpoint para consultar el resultado de la autenticación 3D Secure una vez que el tarjetahabiente resolvió el challenge con su banco. Corresponde al paso 4 del flujo de pagos con 3DS.

Detalles del endpoint

  • Método: GET
  • URL: /api/v1/transactions/3ds-results/:transactionId

El endpoint devuelve la respuesta del proveedor 3DS con los datos necesarios para enviar la solicitud de confirmación. Consúltalo cada 2 o 3 segundos después del 3DS Method y mientras el challenge esté en curso, hasta obtener un estado final.

Configuración de la solicitud

Headers

HeaderDescripción
X-API-KEYAPI Key generada en Cubo Admin.
3ds-tokenEl authenticationToken devuelto en la solicitud inicial, no tu API Key.

Parámetros de ruta

ParámetroTipoDescripción
transactionIdstringValor de authenticationResponse.transactionId devuelto en la solicitud inicial.

Ejemplos de uso

fetch('https://<CUBO_API_URL>/api/v1/transactions/3ds-results/a3f9c2b1-...', { method: 'GET', headers: { 'X-API-KEY': 'TU_API_KEY_AQUI', '3ds-token': 'eyJhbGciOiJIUzI1NiIs...', }, }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error));

Respuestas del servidor

✅ Respuesta exitosa

La respuesta es la del proveedor 3DS tal cual. El campo status indica en qué punto está la autenticación:

statusSignificadoQué hacer
CEl emisor pide challenge.Muestra un iframe que haga POST del campo creq a acsURL y sigue consultando.
DAutenticación fuera del navegador en curso (por ejemplo, en la app del banco).Sigue consultando. Es un estado transitorio.
YAutenticación exitosa.Continúa con la solicitud de confirmación.
AIntento de autenticación aceptado.Continúa con la solicitud de confirmación, igual que con Y.
N, U, RLa autenticación falló o no está disponible.Detén el flujo. No envíes la solicitud de confirmación.
Sin status u otro valorLa autenticación sigue en curso.Sigue consultando hasta obtener un estado final.

Trata A como éxito, igual que Y: tomarlo como fallo deja sin cobrar pagos autenticados. Y no detengas el flujo en D, porque abortarías una autenticación que todavía podía completarse.

Con status Y o A, toma estos campos para la solicitud de confirmación:

CampoTipoDescripción
ecistringIndicador de comercio electrónico. Se envía como eci.
authenticationValuestringValor de verificación del tarjetahabiente. Se envía como cavv.
dsTransIdstringIdentificador en el Directory Server. Se envía como dsTransId y como xid. La respuesta no trae un campo xid propio.
protocolVersionstringVersión del protocolo 3DS utilizada. Se envía como protocolVersion.
⚠️

dsTransId cambia entre la respuesta C y la final. Toma los valores de la respuesta terminal (Y o A), no los del challenge: son valores distintos y usar el equivocado invalida la solicitud de confirmación.

{ "status": "Y", "eci": "05", "authenticationValue": "AAABBJg0VhI0VniQEjRWAAAAAAA=", "dsTransId": "1d9a2b6e-0d6b-4f0e-9f11-01", "acsTransId": "7c1e0f52-3b7a-4a1e-9d2b-02", "protocolVersion": "2.2.0" }

Mientras el emisor pide challenge, la respuesta incluye además la información para mostrarlo:

{ "status": "C", "creq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6...", "acsURL": "https://acs.banco.com/challenge", "dsTransId": "1d9a2b6e-0d6b-4f0e-9f11-01", "protocolVersion": "2.2.0" }

Con estos valores, continúa con la solicitud de confirmación para efectuar el cobro.

❌ Respuesta de error

{ "statusCode": 404, "message": "Transaction not found" }
CódigoDescripción
401API Key inválida o 3ds-token inválido o expirado.
404El transactionId no corresponde a una autenticación iniciada por tu comercio.