Modelli di URL per il reindirizzamento al pagamento

Dopo aver prenotato uno spazio di disponibilità con un prezzo specifico, l'utente verrà reindirizzato alla tua pagina di prenotazione utilizzando un URL definito da te. I passaggi forniti ti mostreranno come:

  1. Definisci il modello di URL.
  2. Imposta il modello di URL nei feed.
  3. Attiva il linkout per slot di disponibilità.
  4. Verifica i campi nel Centro azioni.

1. Definizione del modello di URL.

Il modello URI segue la specifica del modello URI di livello 2 RFC6570 dell'Internet Engineering Task Force (IETF). Per ulteriori dettagli, visita la pagina datatracker.ietf.org. L'URL viene impostato da te con parametri compilati dinamicamente con informazioni relative alla prenotazione. La tabella seguente include i parametri obbligatori e facoltativi disponibili per il modello di URI.

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

Valori disponibili per il modello di URL

Parametri del modello Obbligatorio / Facoltativo Feed Campo Valore di esempio
availability_slot_start_seconds Obbligatorio disponibilità start_sec 4152695841
resources_party_size Obbligatorio availability.resources party_size 2
availability_slot_availability_tag Facoltativo disponibilità availability_tag res-123
availability_slot_duration_seconds Facoltativo disponibilità duration_sec 3600

2. Imposta il modello URI nel feed.

La sezione seguente presuppone che tu disponga di un'integrazione E2E attiva con un feed di servizi esistente. L'URL che hai definito verrà impostato nel feed di servizio. Di seguito è riportata la definizione di questo campo.

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

Definizione del modello di 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;
}

Definizione di esempio del servizio

{
  "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"
          }
        ]
      }
    }
  ]
}

La sezione seguente presuppone che tu disponga di un'integrazione E2E live con un feed della disponibilità esistente. Una volta impostato il modello di URL nel feed di servizio, dovrai specificare quali slot di disponibilità saranno necessari per il linkout.

Per farlo, aggiungi il campo linkout_required_reason con un valore di PAYMENT_REQUIRED.

Definizione del motivo del link esterno

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;
  }

Esempio di definizione del motivo del link esterno

{
  "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 i campi nel Centro azioni

Una volta inviati correttamente i feed e senza errori nella cronologia dei feed, puoi verificare i campi seguendo i passaggi riportati di seguito.

Modello di URL nel visualizzatore dell'inventario

Puoi trovare la definizione del modello di URL nella sezione Servizi della visualizzazione dell'inventario di un commerciante. Troverai il modello nella sezione "Snippet del feed". Per ulteriori dettagli sulla visualizzazione commerciante e servizio, consulta la visualizzazione inventario.

Figura 1: esempio di ricerca di un URL all'interno del centro azioni

Motivo del link esterno nel visualizzatore della disponibilità

Puoi trovare il campo linkout_required_reason quando visualizzi lo slot di disponibilità specifico nella visualizzazione Disponibilità.

Figura 1: esempio di ricerca di un URL all'interno del centro azioni