תבניות של כתובות URL להפניה אוטומטית לתשלום

אחרי שהמשתמש יבצע הזמנה של זמן זמינות במחיר ספציפי, הוא יועבר לדף ההזמנות שלכם באמצעות כתובת URL שתגדירו. בשלבים הבאים מוסבר איך לבצע את הפעולות הבאות:

  1. מגדירים את תבנית כתובת ה-URL.
  2. מגדירים את תבנית כתובות ה-URL בפיד.
  3. מפעילים קישורים יוצאים לכל חריץ זמינות.
  4. מאמתים את השדות במרכז הפעולות.

‫1. הגדרת תבנית כתובת ה-URL.

תבנית ה-URI תואמת למפרט של תבנית URI ברמה 2 של RFC6570 של Internet Engineering Task Force‏ (IETF). פרטים נוספים זמינים בכתובת datatracker.ietf.org. אתם מגדירים את כתובת ה-URL עם פרמטרים שמאוכלסים באופן דינמי במידע שקשור להזמנה. בטבלה הבאה מפורטים הפרמטרים הנדרשים והאופציונליים שזמינים לתבנית ה-URI.

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

הערכים הזמינים לתבנית של כתובת URL

פרמטרים של תבניות חובה / אופציונלי פיד שדה ערך לדוגמה
availability_slot_start_seconds חובה זמינות start_sec 4152695841
resources_party_size חובה availability.resources party_size 2
availability_slot_availability_tag אופציונלי זמינות availability_tag res-123
availability_slot_duration_seconds אופציונלי זמינות duration_sec 3600
resources_room_id אופציונלי availability.resources room_id bar_123

2. מגדירים את תבנית ה-URI בפיד.

בקטע הבא נניח שיש לכם אינטגרציה פעילה מקצה לקצה עם פיד שירות קיים. כתובת ה-URL שתגדירו תוגדר בפיד השירות. בהמשך מופיעה ההגדרה של השדה הזה.

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

הגדרת תבנית 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;
}

הגדרת דוגמה לשירות

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

בקטע הבא נניח שיש לכם אינטגרציה פעילה מקצה לקצה עם פיד זמינות קיים. אחרי שתגדירו את תבנית כתובת ה-URL בפיד השירות, תצטרכו לציין אילו משבצות זמינות יידרשו ליצירת קישורים לאתרים אחרים.

כדי לעשות זאת, מוסיפים את השדה linkout_required_reason עם הערך PAYMENT_REQUIRED.

הגדרה של הסיבה להצגת קישור

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

הגדרה לדוגמה של סיבה לקישור החוצה

{
  "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. אימות השדות במרכז הפעולות

אחרי שהפידים נשלחים בהצלחה ואין שגיאות בהיסטוריית הפיד, אפשר לאמת את השדות לפי השלבים הבאים.

תבנית של כתובת URL ב'כלי להצגת מלאי שטחי הפרסום'

ההגדרה של תבנית כתובת ה-URL מופיעה בקטע 'שירותים' בתצוגת המלאי של המוכר. התבנית מופיעה בקטע 'קטע פיד'. פרטים נוספים על תצוגת המלאי זמינים במאמר תצוגת מלאי.

איור 1: דוגמה למציאת כתובת URL במרכז הפעולות

הסיבה להפניה החוצה בתצוגת הזמינות

השדה linkout_reason_required מופיע כשמציגים את חלון הזמינות הספציפי בתצוגת הזמינות.

איור 1: דוגמה למציאת כתובת URL במרכז הפעולות