Debes implementar un servidor de reservas para permitir que Actions Center realice devoluciones de llamada para crear y actualizar reservas en tu nombre.
- La implementación estándar: Esto permite que el Centro de Acciones cree citas y reservas en tu empresa en nombre del usuario.
- Implementación de listas de espera: Se usa cuando participas en el programa piloto de listas de espera. Esto permite que Actions Center recupere estimaciones de espera y cree entradas de lista de espera en nombre del usuario. Para implementar un servidor de reservas para la lista de espera, consulta Implementa el servidor de reservas de la lista de espera.
Consulta la documentación del Portal para socios para obtener información sobre cómo configurar la conexión a tus servidores de reserva de zona de pruebas y producción.
Implementa una interfaz de API de REST
Implementa una interfaz de API basada en REST. Esto permite que Google envíe solicitudes del servidor de reservas a través de HTTP.
Para comenzar, configura un servidor de reservas de zona de pruebas o de desarrollo que pueda conectarse al entorno de la zona de pruebas de Actions Center. Solo migra a un entorno de producción una vez que hayas probado completamente el servidor de zona de pruebas.
Métodos
Para cada tipo de servidor de reservas, debes utilizar un conjunto diferente de métodos de API. De manera opcional, puedes descargar la definición del servicio en formato proto para comenzar con la implementación de la API. En las siguientes tablas, se muestran los métodos para cada implementación y se incluyen vínculos a los formatos .proto de servicio.
Implementación estándar |
---|
Definición de servicio estándar Descarga el archivo de definición de servicio de proto. |
Método | Solicitud HTTP |
---|---|
HealthCheck | GET /v3/HealthCheck/ |
BatchAvailabilityLookup | POST /v3/BatchAvailabilityLookup/ |
CreateBooking | POST /v3/CreateBooking/ |
UpdateBooking | POST /v3/UpdateBooking/ |
GetBookingStatus | POST /v3/GetBookingStatus/ |
ListBookings | POST /v3/ListBookings/ |
Recursos de la API
Booking
Los siguientes tipos de recursos se usan en la implementación estándar:
Flujo: Cómo crear una reserva
En esta sección, se explica cómo crear una reserva para la implementación estándar.
Cuando un usuario crea una reserva, Google te envía el nombre, el apellido, el número de teléfono y el correo electrónico del usuario. Desde tu punto de vista, esta reserva debe tratarse como una confirmación de la compra como invitado, ya que el Centro de acciones no puede buscar la cuenta del usuario en tu sistema. Asegúrate de que la reserva final sea idéntica a las reservas de tus comercios que provienen de tu sistema de reservas. Los correos electrónicos alternativos y la confirmación de la compra como invitado se admiten de forma predeterminada para las reservas gratuitas.
Seguridad y autenticación
Toda la comunicación con tu servidor de reservas se realiza a través de HTTPS, por lo que es fundamental que tu servidor tenga un certificado TLS válido que coincida con su nombre DNS. Para configurar tu servidor, te recomendamos que utilices una herramienta de verificación de SSL/TLS disponible públicamente, como la SSL Server Test de Qualys.
Todas las solicitudes que Google realice a tu servidor de reservas se verificarán mediante la autenticación básica de HTTP. Las credenciales de autenticación básicas (nombre de usuario y contraseña) para tu servidor de reservas se pueden ingresar en la página Configuración del servidor de reservas en el Portal para socios. Las contraseñas se deben cambiar cada seis meses.
Ejemplos de esquemas de implementación
Para comenzar, consulta los siguientes ejemplos de esquemas de un servidor de reservas escritos para marcos de trabajo Node.js y Java:
- Esquema de Node.js js-maps-booking-rest-server-v3-skeleton
- Esquema de Java java-maps-booking-rest-server-v3-skeleton
Estos servidores simulan nuestros métodos REST.
Requisitos
Errores de HTTP y de lógica empresarial
Cuando tu backend controla las solicitudes HTTP, pueden ocurrir dos tipos de errores.
- Errores relacionados con la infraestructura o datos incorrectos
- Muestra estos errores al cliente con códigos de error HTTP estándar. Consulta la lista completa de códigos de estado HTTP.
- Errores relacionados con la lógica empresarial
- Muestra el código de estado HTTP establecido en
200
OK y especifica la falla de la lógica empresarial en el cuerpo de la respuesta. Los tipos de errores de lógica empresarial que puedes encontrar son diferentes para los distintos tipos de implementaciones de servidor.
- Muestra el código de estado HTTP establecido en
Para la implementación estándar, los posibles errores de lógica empresarial se capturan en una falla de la reserva y se muestran en la respuesta HTTP. Los errores de lógica
empresarial pueden ocurrir cuando se crea o actualiza un recurso. Por ejemplo, cuando controlas los métodos CreateBooking
o UpdatingBooking
. Estos son algunos ejemplos:
SLOT_UNAVAILABLE
se usa si el espacio solicitado ya no está disponible.PAYMENT_ERROR_CARD_TYPE_REJECTED
se usa si no se acepta el tipo de tarjeta de crédito proporcionado.
Idempotencia
La comunicación a través de la red no siempre es confiable, y Google puede reintentar las solicitudes HTTP si no se recibe ninguna respuesta. Por este motivo, todos los métodos que mutan el estado deben ser idempotentes:
CreateBooking
UpdateBooking
Para todos los mensajes de solicitud, excepto UpdateBooking
, se incluyen tokens de idempotencia para identificar de forma única la solicitud. Esto te permite distinguir entre una llamada de REST que se reintentó, con la intención de crear una sola solicitud, y dos solicitudes separadas.
UpdateBooking
se identifica de forma única por sus IDs de entrada de reserva, respectivamente, por lo que no se incluye ningún token de idempotencia en sus solicitudes.
Los siguientes son algunos ejemplos de cómo manejan la idempotencia los servidores de reservas:
Una respuesta HTTP correcta a
CreateBooking
debe incluir la reserva creada. En algunos casos, el pago se procesa como parte del flujo de reserva. Si se recibe exactamente la misma solicitudCreateBookingRequest
por segunda vez (con el mismoidempotency_token
), se debe mostrar la misma respuestaCreateBookingResponse
. No se crea una segunda reserva y se le cobra al usuario exactamente una vez, si corresponde.Ten en cuenta que si un intento de
CreateBooking
falla y se reenvía la misma solicitud, tu backend debería volver a intentarlo.
El requisito de idempotencia se aplica a todos los métodos que mutan el estado.