Template URL Untuk Pengalihan Pembayaran

Setelah memesan slot ketersediaan dengan harga tertentu, pengguna akan diarahkan ke halaman pemesanan menggunakan URL yang ditentukan oleh Anda. Langkah-langkahnya yang akan ditunjukkan kepada Anda cara melakukan hal berikut:

  1. Tentukan Template URL Anda.
  2. Tetapkan Template URL di feed Anda.
  3. Mengaktifkan penautan per slot ketersediaan.
  4. Verifikasi kolom di Pusat Tindakan.

1. Menentukan Template URL Anda.

Template URI mengikuti Internet Engineering Task Force (IETF) RFC6570 Spesifikasi Template Uri Level 2, detail selengkapnya di datatracker.ietf.org. URL ditetapkan oleh Anda dengan parameter yang diisi secara dinamis dengan informasi terkait reservasi tersebut. Tabel berikut berisi parameter wajib dan opsional yang tersedia untuk template URI Anda.

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

Nilai yang Tersedia untuk Template URL

Parameter Template Wajib/Opsional Feed Kolom Nilai Contoh
availability_slot_start_seconds Wajib ketersediaan start_sec 4152695841
resources_party_size Wajib availability.resources party_size 2
availability_slot_availability_tag Opsional ketersediaan availability_tag res-123
availability_slot_duration_seconds Opsional ketersediaan duration_sec 3600
resources_room_id Opsional availability.resources room_id bar_123

2. Tetapkan Template URI di feed Anda.

Bagian berikut mengasumsikan bahwa Anda memiliki integrasi E2E live dengan Feed Layanan. URL yang telah Anda tentukan akan ditetapkan di feed Layanan, berikut adalah definisi untuk kolom tersebut.

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

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

Definisi Contoh Layanan

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

Bagian berikut mengasumsikan bahwa Anda memiliki integrasi E2E live dengan Feed Ketersediaan. Setelah menetapkan template URL di feed layanan, Anda harus menentukan slot ketersediaan mana yang diperlukan untuk penautan keluar.

Anda dapat melakukannya dengan menambahkan kolom linkout_required_reason dengan nilai PAYMENT_REQUIRED.

Definisi Alasan Linkout

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

Definisi Contoh Alasan Linkout

{
  "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. Memverifikasi Kolom di Pusat Tindakan

Setelah feed berhasil dikirim dan tidak ada error dalam histori feed, Anda dapat memverifikasi kolom menggunakan langkah-langkah berikut.

Template URL di Inventory Viewer

Anda dapat menemukan definisi Template URL di bagian Layanan pada tampilan inventaris. Anda akan menemukan template di bagian "cuplikan feed". Lihat Tampilan Inventaris untuk mengetahui detail selengkapnya tentang Tampilan Penjual dan Layanan.

Gambar 1: Contoh menemukan URL dalam Action Center

Alasan Penautan di Penampil Ketersediaan

Anda dapat menemukan kolom linkout_reason_required saat melihat slot ketersediaan tertentu di Tampilan Ketersediaan.

Gambar 1: Contoh menemukan URL dalam Action Center