Pruebas con la API de Rapid Lodging y 3DS 2.0
Prueba tu implementación de SCA con escenarios específicos compatibles con las API
Para probar la API de Rapid Lodging, incluye un encabezado HTTP adicional llamado « test » en la solicitud HTTP y utiliza uno de los valores admitidos por esa API para probar un escenario compatible.
Dentro del flujo de reserva de la autenticación reforzada de clientes (SCA), también puedes usar las respuestas de prueba de Rapid API para probar los métodos de la biblioteca del conector 3D-Secure (3DS).
Registrar un pago
Los valores de encabezados de prueba que se indican a continuación dan como resultado diferentes valores de encoded_init_config en la respuesta de la API y diferentes códigos de respuesta HTTP. El objeto « encoded_init_config » se puede pasar a la llamada « initSession » de la biblioteca «JavaScript » para activar diferentes casos de prueba dentro de la biblioteca del conector 3DS.
| Valor del encabezado de prueba | Código HTTP y respuesta | Caso de prueba de initSession |
|---|---|---|
| Estándar | 201 – Respuesta estándar | SUCCESS |
init_skip | 201 – Respuesta sin encoded_init_config | No se admite |
init_fail | 201 – Respuesta estándar | FAILED |
init_timeout | 201 – Respuesta estándar | TIMEOUT |
internal_server_error | 500 – Error interno del servidor | — |
internal_server_error | 503 - Servidor no disponible | — |
Nota:. Usa init_skip para los casos de prueba de la biblioteca 3DS Connector encoded_init_config, que se pueden pasar a initSession y forzar un statusCode con el valor SKIPPED.
Creación de una reserva
Además de los encabezados de prueba definidos en las solicitudes de prueba de la API de Rapid Lodging para el flujo de reserva « non-SCA », se admiten valores de encabezado de prueba adicionales para el flujo de trabajo de SCA.
>> Más información sobre cómo enviar solicitudes de prueba de alojamiento
Los valores del encabezado de prueba dan lugar a diferentes valores de « encodedChallengeConfig », que se pueden pasar a la llamada de desafío de la biblioteca JavaScript para activar distintos casos de prueba.
| Valor del encabezado de prueba | Código HTTP y respuesta | Caso de prueba de initSession |
|---|---|---|
complete_payment_session | 201 – Response with Complete Payment Session link | SUCCESS sin interacción con el iframe del usuario |
complete_payment_session_show | 201 – Response with Complete Payment Session link | SUCCESS/FAILED con interacción con el iframe del usuario |
complete_payment_session_fail | 201 – Response with Complete Payment Session link | FAILED sin interacción con el iframe del usuario |
complete_payment_session_timeout | 201 – Response with Complete Payment Session link | TIMEOUT |
complete_payment_session_error | 201 – Response with Complete Payment Session link | ERROR |
Además de los encabezados de prueba definidos en las solicitudes de prueba de la API de Rapid Lodging para el flujo de reserva « non-SCA », se admiten valores de encabezado de prueba adicionales para el flujo de trabajo de SCA.
>> Más información sobre cómo enviar solicitudes de prueba de alojamiento
Los valores del encabezado de prueba dan lugar a diferentes valores de « encodedChallengeConfig », que se pueden pasar a la llamada de desafío de la biblioteca JavaScript para activar distintos casos de prueba.
| Valor del encabezado de prueba | Código HTTP y respuesta | Caso de prueba de initSession |
|---|---|---|
complete_payment_session | 201 – Response with Complete Payment Session link | SUCCESS sin interacción con el iframe del usuario |
complete_payment_session_show | 201 – Response with Complete Payment Session link | SUCCESS/FAILED con interacción con el iframe del usuario |
complete_payment_session_fail | 201 – Response with Complete Payment Session link | FAILED sin interacción con el iframe del usuario |
complete_payment_session_timeout | 201 – Response with Complete Payment Session link | TIMEOUT |
complete_payment_session_error | 201 – Response with Complete Payment Session link | ERROR |
Completa la sesión de pago
Los valores del encabezado de prueba dan lugar a distintos casos de error que pueden surgir al intentar realizar un pago y confirmar una reserva.
| Valor del encabezado de prueba | Código HTTP y respuesta |
|---|---|
payment_declined | 400 – Payment Declined Response |
price_mismatch | 409 – Price Mismatch Response |
rooms_unavailable | 410 – Rooms Unavailable Response |
Biblioteca 3DS Connector y iframe
Para hacer pruebas en 3DS Connector sin depender de recursos externos, los valores de parámetros específicos corresponden con las respuestas de los métodos admitidos. Este comportamiento solo se admite cuando el iframe se carga con la URL del entorno de pruebas.
Inicio de la sesión
Puedes comprobar los valores compatibles con el initSessionResponse statusCode variando el initSessionRequest encoded_init_config.
| Valor statusCode | Valor encodedInitConfig de prueba |
|---|---|
| SUCCESS | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d |
| FAILED | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJGQUlMRUQifV0= |
| TIMEOUT | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJUSU1FT1VUIn1d |
| SKIPPED | No se admite en este momento. |
Nota: Los valores encoded_init_config también se pueden generar con los encabezados de prueba que admite la API de registro del pago.
Desafío
Puedes comprobar los valores compatibles con el challengeResponse statusCode variando el challengeRequest encoded_challenge_config.
| Valor statusCode | Valor encoded_Challenge_config de prueba | Descripción |
|---|---|---|
| SUCCESS | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNVQ0NFU1MifV0 | Sin interacción con el iframe del usuario |
| SUCCESS / FAILED | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNIT1cifV0 | Sin interacción con el iframe del usuario |
| FAILED | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIkZBSUxFRCJ9XQ | Sin interacción con el iframe del usuario |
| TIMEOUT | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlRJTUVPVVQifV0 | |
| ERROR | W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIkVSUk9SIn1d |
Los valores de « encoded_init_config » también se pueden generar con los encabezados de prueba compatibles con el flujo SCA de la API de reservas.
Nota: Cuando compruebes si el código de estado del desafío es SUCCESS o FAILED según lo que introduzcas en el iframe, la respuesta del método de desafío esperará a que termine la interfaz de autenticación simulada en el iframe.
Ejemplo de interfaz de usuario en iframe 3DS:

Ejemplo de uso
Este ejemplo muestra cómo usar los valores predefinidos de los parámetros para probar la biblioteca con un desafío 3DS sin que el usuario tenga que interactuar con el iframe.
var c = new PayThreeDSConnector.ThreeDSConnector('threedsiframe', 'https://static.pay.expedia.com'); // change to match the 3DS iframe ID
c.setup({ referenceId: '1000' })
.then((setupResponse) => {
console.log('Setup Output: ', setupResponse);
return c.initSession({
paymentSessionId: 1,
encodedInitConfig: 'W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d',
}); // SUCCESS
})
.then((initResponse) => {
console.log('InitSession Output: ', initResponse);
$('#threedsIframeModal').modal(); // replace with code to show the modal containing the 3DS iframe
return c.challenge({
paymentSessionId: 1,
encodedChallengeConfig:
'W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNVQ0NFU1MifV0=',
}); // SUCCESS
})
.then((challengeResponse) => {
console.log('Challenge Output: ', challengeResponse);
})
.finally(() => {
$('#threedsIframeModal').modal('hide'); // replace with code to hide the modal containing the 3DS iframe
});Autenticación 3DS y pago aplazado
Al hacer una reserva con una modelo de pay-later, Expedia no realiza ningún cargo en la tarjeta. En lugar de eso, se lo mandamos al proveedor para que se encargue de ello. El proveedor puede usar esta información para validar la tarjeta antes de hacer la reserva. Se espera que el viajero pague en persona al llegar.
Sin embargo, a veces los planes cambian y, en ese caso, el proveedor puede cobrarte una tarifa de « no-show ». Estas transacciones pueden verse afectadas por la normativa de la SCA, ya que implican realizar un cargo en una tarjeta cuando el viajero no está presente.
Si las transacciones se ven afectadas, los pagos pueden fallar o los proveedores pueden enfrentarse a sanciones por parte de las entidades emisoras de tarjetas si el cargo es non-compliant.
Para proteger nuestra relación con nuestros proveedores y seguir prestando servicio a nuestros socios, Expedia Group ofrece una vía opcional para cumplir con los requisitos: Expedia Group puede encargarse de la autenticación en su nombre. Esto permite a los proveedores proteger su negocio y garantiza que Rapid API pueda seguir ofreciendo la misma variedad de opciones.
En la API de Rapid Lodging, esto se indica mediante el indicador « payment_registration_recommended=true » en el archivo de contenido del alojamiento y en el contenido del alojamiento, lo que te puede ayudar a identificar una propiedad cuando pueda estar relacionada con el proyecto.
Posibles repercusiones en una integración
Si quieres ofrecer proveedores que puedan exigir una autenticación segura, el proceso de reserva debería ser compatible con 3DS. Si no es compatible con 3DS, es posible que la reserva de estas opciones falle si el banco « card-issuing » determina que es necesaria una autenticación para la transacción.
Cuando se cobre una cuota de « no-show », Rapid API figurará como Merchant en el registro. El nombre que aparecerá en el extracto de la tarjeta como descripción del cargo lo pondrá tu organización, no el alojamiento. Para personalizar este texto, contacta con el servicio de asistencia para colaboradores de Rapid.
Para seguir cumpliendo con los requisitos de las marcas de tarjetas y el proceso de lanzamiento de « Rapid API », usa la API de Accepted Payments para mostrar el « processing_country » en la página « check-out » en caso de que no-show. Esto es obligatorio para todas las transacciones en las que Rapid API figure como « Merchant » (entidad de pago), y puede ocurrir si se utiliza 3DS y se produce una « no-show » (autenticación de la tarjeta).
Cómo mitigar los efectos de la integración
Si una integración de Rapid API no admite la autenticación segura en el proceso de reserva, puedes reducir el riesgo de que las reservas fallen eliminando a los proveedores cuyos anuncios no cumplan con los requisitos. Ponte en contacto con el servicio de asistencia de Rapid Partner para que eliminen las tarifas afectadas de tus respuestas de la API de disponibilidad.
Cuando se utiliza una herramienta de agente, la transacción queda exenta de la SCA según lo establecido en la normativa. Usa el campo « sales_channel » de la API de disponibilidad para indicarlo.
Resolución de errores
A través de las API de creación de reserva y finalización de la sesión de pago se pueden confirmar reservas y transacciones de pago.
Ten en cuenta las siguientes instrucciones en tu integración para evitar pérdidas económicas y situaciones que involucren una gestión por parte del cliente:
| Origen | Función | Configuración de tiempo de espera sugerida | Proceso de recuperación de errores | Acciones necesarias |
|---|---|---|---|---|
| Rapid API | Comprobación de precios antes de la reserva para el token de registro del pago | 10 segundos | Vuelve a intentarlo o selecciona otra opción de alojamiento, habitación o tarifa | - |
| JavaScript | Configuración de 3DS Connector | 10 segundos | Vuelve a intentar la misma solicitud | - |
| Rapid API | Registro de la sesión de pago | 10 segundos | Vuelve a intentar la misma solicitud sin el proceso «Expect: 100-continue» | - |
| JavaScript | Inicio de la sesión de pago | 10 segundos | Vuelve a intentar la misma solicitud | - |
| Rapid API | Creación de una reserva | 90 segundos | Vuelve a intentar la misma solicitud | En caso de cualquier error: Recupera la reserva con affiliate_reference_id |
| JavaScript | Mostrar solicitud de autenticación | 10 segundos | Vuelve a intentar la misma solicitud | - |
| JavaScript | Esperar a challenge.statusCode | 180 ~ 1200 segundos | Solicita la finalización de la sesión de pago | - |
| Rapid API | Finalización de la sesión de pago | 90 segundos | Vuelve a intentar la misma solicitud | En caso de cualquier error: Recupera la reserva con affiliate_reference_id |
| Rapid API | En caso de cualquier error: Recupera la reserva con affiliate_reference_id | 30 segundos | Vuelve a intentar la misma solicitud | Para todos los errores: espera 90 segundos antes de volver a intentarlo para confirmar el estado final de las reservas mediante el código de respuesta de la API 404 o 200 |