Plantillas de URL para el redireccionamiento de pagos

Cuando el usuario reserve un horario disponible con un precio específico, se lo redireccionará a tu página de reservas a través de una URL que tú definas. En los pasos proporcionados, se muestra cómo hacer lo siguiente:

  1. Define tu plantilla de URL.
  2. Configura tu plantilla de URL en tus feeds.
  3. Habilita la vinculación desde la disponibilidad por horario.
  4. Verifica los campos en el Centro de acciones.

1. Cómo definir tu plantilla de URL

La plantilla de URI sigue la especificación de plantilla de URI de nivel 2 del RFC6570 del Grupo de trabajo de ingeniería de Internet (IETF). Para obtener más detalles, consulta datatracker.ietf.org. Tú configuras la URL con parámetros que se completan de forma dinámica con información relacionada con esa reserva. En la siguiente tabla, se incluyen los parámetros obligatorios y opcionales disponibles para tu plantilla de URI.

`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`

Valores disponibles para la plantilla de URL

Parámetros de plantilla Obligatorio / Opcional Feed Campo Ejemplo de valor
availability_slot_start_seconds Obligatorio de disponibilidad start_sec 4152695841
resources_party_size Obligatorio availability.resources party_size 2
availability_slot_availability_tag Opcional de disponibilidad availability_tag res-123
availability_slot_duration_seconds Opcional de disponibilidad duration_sec 3600

2. Establece tu plantilla de URI en el feed.

En la siguiente sección, se supone que tienes una integración E2E activa con un feed de servicios existente. La URL que definiste se establecerá en el feed de servicios. A continuación, se incluye la definición de ese campo.

message Service {
  // ..
  UriTemplate uri_template = 38;
}

Definición de plantilla de URI

// A template specifying how Google should generate URLs to external site.
message UriTemplate {
  // The uri template must follow the RFC6570, see
  // https://datatracker.ietf.org/doc/html/rfc6570.
  // Supports Level 2 templates.
  // These parameters will be resolved to their values specified in their
  // respective entities.
  //
  // Available parameters for Dining Reservation Linkout:
  // 1) (required) {availability_slot_start_seconds} :: populated from start_sec
  //   field in availability feed
  // 2) (required) {resources_party_size} :: populated from party_size field in
  //   availability feed
  // 3) (optional) {availability_slot_duration_seconds} :: populated from
  //   duration_sec field in availability feed
  // 4) (optional) {availability_slot_availability_tag} :: populated from
  //   availability_tag field in availability feed
  //
  // Example usage:
  // http://example.com/book/restaurant?start={availability_slot_start_seconds}
  // &num_guests={resources_party_size}
  // * start_sec = 123456
  // * party_size = 2
  // https://example.com/book/restaurant?start=123456&num_guests=2
  string uri_template = 1;
}

Definición de muestra del servicio

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 0,
    "total_shards": 1,
    "nonce": "12484913",
    "generation_timestamp": 1530432018
  },
  "service": [
    {
      "merchant_id": "dining-A",
      "service_id": "reservation",
      "uri_template": {
        "uri_template": "https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}"
      },
      "localized_service_name": {
        "value": "Reservation",
        "localized_value": [
          {
            "locale": "en",
            "value": "Reservation"
          }
        ]
      }
    }
  ]
}

En la siguiente sección, se supone que tienes una integración de E2E activa con un feed de disponibilidad existente. Una vez que hayas establecido la plantilla de URL en tu feed de servicios, deberás especificar cuáles de tus horarios disponibles requerirán un vínculo para salir.

Para ello, agrega el campo linkout_required_reason con un valor de PAYMENT_REQUIRED.

Definición del motivo del vínculo externo

message Availability {
  // ..
  LinkoutRequiredReason linkout_required_reason = 19;
}
  // The reason why a slot requires a linkout. Currently only used for Dining
  // Reservations Payment Redirect Partners.
  enum LinkoutRequiredReason {
    // Default value: Do not use, equates to unknown.
    LINKOUT_REQUIRED_REASON_UNSPECIFIED = 0;
    // Slot requires payment in the partner platform to be booked.
    PAYMENT_REQUIRED = 1;
  }

Definición de muestra del motivo de vínculo externo

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 0,
    "total_shards": 1,
    "nonce": "11203880",
    "generation_timestamp": 1543875200
  },
  "service_availability": [
    {
      "availability": [
        {
          "merchant_id": "dining-A",
          "service_id": "reservation",
          "linkout_required_reason": "PAYMENT_REQUIRED",
          "start_sec": 1535853600,
          "duration_sec": 2700,
          "spots_total": 2,
          "spots_open": 2,
          "resources": {
            "room_id": "A-dining-room",
            "room_name": "Dining Room",
            "party_size": 2
          }
        }
      ]
    }
  ]
}

4. Verifica los campos en el Centro de acciones

Una vez que envíes tus feeds correctamente y no haya errores en el historial de feeds, podrás verificar los campos siguiendo estos pasos.

Plantilla de URL en el Visualizador de inventario

Puedes encontrar la definición de la plantilla de URL en la sección Servicios de la vista del inventario de un comercio. Encontrarás la plantilla en la sección "Resumen del feed". Consulta la vista del inventario para obtener más detalles sobre la vista del comercio y la vista del servicio.

Figura 1: Ejemplo para encontrar una URL en el Centro de acción

Motivo del vínculo externo en el Visualizador de disponibilidad

Puedes encontrar el campo linkout_required_reason cuando ves el intervalo de disponibilidad específico en la Vista de disponibilidad.

Figura 1: Ejemplo para encontrar una URL en el Centro de acción