결제 리디렉션용 URL 템플릿

사용자는 특정 가격으로 이용 가능한 시간대를 예약할 때 사용자가 정의한 URL을 사용하여 예약 페이지로 리디렉션됩니다. 제공된 단계에서는 다음을 수행하는 방법을 보여줍니다.

  1. URL 템플릿을 정의합니다.
  2. 피드에서 URL 템플릿을 설정합니다.
  3. 이용 가능 시간대별로 연결을 사용 설정합니다.
  4. 알림 센터에서 입력란을 확인합니다.

1. URL 템플릿 정의

URI 템플릿은 IETF (Internet Engineering Task Force) RFC6570을 따릅니다. 레벨 2 URI 템플릿 사양, 자세한 내용은 datatracker.ietf.org를 참조하세요. URL은 예약과 관련된 정보로 동적으로 채워지는 매개변수를 사용하여 설정합니다. 다음 표에는 필수 및 선택적 매개변수를 제공합니다.

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

사용 가능한 URL 템플릿 값

템플릿 매개변수 필수/선택사항 피드 필드 예시 값
availability_slot_start_seconds 필수 availability start_sec 4152695841
resources_party_size 필수 availability.resources party_size 2
availability_slot_availability_tag 선택사항 availability availability_tag res-123
availability_slot_duration_seconds 선택사항 availability duration_sec 3600
resources_room_id 선택사항 availability.resources room_id bar_123

2. 피드에서 URI 템플릿을 설정합니다.

다음 섹션에서는 기존 서비스 피드와의 실시간 E2E 통합이 있다고 가정합니다. 정의한 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"
          }
        ]
      }
    }
  ]
}

다음 섹션에서는 기존 어베일러빌리티 피드와의 실시간 E2E 통합이 있다고 가정합니다. 서비스 피드에서 URL 템플릿을 설정하면 연결에 필요한 이용 가능 시간대를 지정해야 합니다.

PAYMENT_REQUIRED 값의 linkout_required_reason 필드를 추가하면 됩니다.

링크 아웃 이유 정의

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 템플릿 정의는 판매자의 인벤토리 뷰에 있는 서비스 섹션에서 확인할 수 있습니다. 템플릿은 '피드 스니펫' 아래에 있습니다. 섹션으로 이동합니다. 판매자 및 판매자에 대한 자세한 내용은 인벤토리 보기를 참조하세요. 서비스 뷰.

<ph type="x-smartling-placeholder">
</ph> 그림 1: 작업 센터 내에서 URL을 찾는 예

어베일러빌리티 뷰어의 링크 아웃 이유

linkout_reason_required 필드는 이용 가능 여부 보기에서 특정 이용 가능 여부 슬롯을 볼 때 확인할 수 있습니다.

<ph type="x-smartling-placeholder">
</ph> 그림 1: 작업 센터 내에서 URL을 찾는 예