Modèles d'URL pour la redirection des paiements

Lorsqu'il réserve un créneau de disponibilité à un prix spécifique, l'utilisateur sera redirigé vers votre page de réservation à l'aide d'une URL que vous avez définie. Les étapes ci-dessous vous expliquent comment procéder :

  1. Définissez votre modèle d'URL.
  2. Définissez votre modèle d'URL dans vos flux.
  3. Activez la liaison externe par créneau de disponibilité.
  4. Vérifiez les champs dans le Centre d'action.

1. Définition de votre modèle d'URL.

Le modèle d'URI respecte la spécification de modèle d'URI de niveau 2 RFC6570 de l'IETF (Internet Engineering Task Force). Pour en savoir plus, consultez datatracker.ietf.org. C'est vous qui définissez l'URL à l'aide de paramètres qui sont renseignés dynamiquement avec les informations relatives à cette réservation. Le tableau suivant inclut les paramètres obligatoires et facultatifs disponibles pour votre modèle d'URI.

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

Valeurs disponibles pour le modèle d'URL

Paramètres du modèle Obligatoire / Facultatif Flux Champ Exemple de valeur
availability_slot_start_seconds Obligatoire disponibilité start_sec 4152695841
resources_party_size Obligatoire availability.resources party_size 2
availability_slot_availability_tag Facultatif disponibilité availability_tag res-123
availability_slot_duration_seconds Facultatif disponibilité duration_sec 3600
resources_room_id Facultatif availability.resources room_id bar_123

2. Définissez votre modèle d'URI dans votre flux.

Dans la section suivante, nous partons du principe que vous disposez d'une intégration de bout en bout Flux du service : L'URL que vous avez définie sera définie dans le flux de services. La définition de ce champ est indiquée ci-dessous.

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

Définition du modèle d'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.
  //
  // 5 available parameters for Dining Reservation Linkout:
  // 1) (required) {availability_slot_start_seconds} :: populated from start_sec
  //   field in availability feed
  // 2) (required) {availability_slot_duration_seconds} :: populated from
  //   duration_sec field in availability feed
  // 3) (optional) {resources_party_size} :: populated from party_size field in
  //   availability feed
  // 4) (optional) {availability_availability_tag} :: populated from
  //   availability_tag field in availability feed
  // 5) (optional) {resources_room_id} :: populated from room_id 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;
}

Définition de l'exemple de service

{
  "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 section suivante suppose que vous disposez d'une intégration E2E active avec un flux de disponibilité existant. Une fois que vous avez défini le modèle d'URL dans votre flux de services, vous devez spécifier les créneaux de disponibilité qui seront nécessaires pour créer des liens.

Pour ce faire, ajoutez le champ linkout_required_reason avec la valeur PAYMENT_REQUIRED

Définition du motif de lien externe

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

Exemple de définition pour les motifs de lien externe

{
  "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. Vérifier les champs dans le Centre d'actions

Une fois vos flux envoyés et qu'aucune erreur ne s'affiche dans l'historique des flux, vous pouvez vérifier les champs en procédant comme suit.

Modèle d'URL dans le lecteur d'inventaire

Vous trouverez la définition du modèle d'URL dans la section "Services" du dans l'affichage de l'inventaire. Vous le trouverez dans la section "Extrait de flux". Pour en savoir plus sur la vue "Marchand et service", consultez Vue "Inventaire".

Figure 1: Exemple de recherche d'une URL dans le centre d'action

Motif de la redirection dans le lecteur de disponibilité

Vous trouverez le champ linkout_reason_required lorsque vous afficherez l'espace de disponibilité spécifique dans la vue Disponibilité.

Figure 1: Exemple de recherche d'une URL dans le centre d'action