Giá phòng có điều kiện

Giá phòng có điều kiện là một loại quy tắc giá giúp bạn cung cấp nhiều mức giá cho các hành trình, dựa trên các tiêu chí như thiết bị, quốc gia của người dùng hoặc việc người dùng đã đăng nhập vào Google hay chưa.

Khi bạn có nhiều mức giá công khai hoặc mức giá có điều kiện cho một lịch trình hoặc Gói dịch vụ phòng, người dùng sẽ thấy mức giá thấp nhất. Google luôn chọn mức giá đủ điều kiện thấp nhất cho người dùng.

Tổng quan

Giá phòng có điều kiện sẽ xuất hiện trong các khung giá tiêu chuẩn và chỉ được giới thiệu cho những người dùng có nội dung tìm kiếm đáp ứng các tiêu chí của giá phòng có điều kiện tương ứng. Các tiêu chí này có thể dựa trên các yếu tố sau:

Để bật giá phòng có điều kiện, hãy sửa đổi các mục sau:

Giá phòng có điều kiện theo thiết bị

Giá phòng theo thiết bị là giá khách sạn mà chỉ người dùng trên một thiết bị cụ thể (chẳng hạn như thiết bị di động, máy tính bảng hoặc máy tính) mới nhìn thấy và đặt phòng được. Mức giá do các đối tác của Google cung cấp và người dùng cuối có thể xem và đặt phòng bằng mức giá dành riêng cho từng thiết bị trên trang web của đối tác.

fenced_rates

Giá phòng có điều kiện theo quốc gia

Giá phòng dành riêng cho từng quốc gia là giá khách sạn mà chỉ những người dùng đang tìm kiếm khách sạn tại một quốc gia cụ thể mới nhìn thấy và đặt phòng được. Google xác định quốc gia bằng cách sử dụng địa chỉ IP của người dùng cuối. Mức giá do các đối tác của Google cung cấp và người dùng cuối có thể xem và đặt phòng bằng mức giá dành riêng cho từng quốc gia trên trang web dành riêng cho quốc gia của đối tác.

Giá phòng có điều kiện theo ngôn ngữ

Giá phòng theo từng ngôn ngữ chỉ được giới thiệu cho những người dùng tìm khách sạn trong khi sử dụng một chế độ cài đặt ngôn ngữ cụ thể trên Google. Các điều kiện theo ngôn ngữ cụ thể được xác định bằng phần tử <LanguageCode>.

Giá phòng có điều kiện áp dụng cho số lượng mẫu đã cắt giảm

Giá phòng có điều kiện áp dụng cho số lượng mẫu đã giảm chỉ được cung cấp cho một nhóm nhỏ người dùng ngẫu nhiên trong số tất cả người dùng đủ điều kiện. Tốc độ lấy mẫu được xác định bằng phần tử <MaxUsersPercent> và được tính như sau:

MaxUsersPercent = (number of users selected to view rate)/(total eligible users)

Giá phòng có điều kiện cho người dùng đã đăng nhập

Giá phòng đã đăng nhập chỉ được cung cấp cho những người dùng đã đăng nhập bằng Tài khoản Google. Đối tác của Google cung cấp mức giá và người dùng có thể xem và đặt phòng với mức giá trên trang web của đối tác. Giá phòng đã đăng nhập được xác định bằng phần tử <UserSignedIn>.

Vì Google luôn chọn mức giá đủ điều kiện thấp nhất, nên nếu giá phòng có điều kiện cao hơn giá đặt ở cấp <Result>, thì giá phòng có điều kiện sẽ không bao giờ được chọn. Để tránh trường hợp này, hãy xoá mức phí ở cấp <Result> và điều kiện tất cả mức giá. Ngoài ra, hãy hỏi Nhà quản lý tài khoản hỗ trợ kỹ thuật về việc sử dụng quy tắc giá mặc định cho các mức giá được đặt ở cấp <Result>.

Tạo tệp XML về quy tắc giá

Quy tắc giá cho giá phòng có điều kiện được xác định bằng tệp XML về quy tắc giá. Để biết thêm thông tin, hãy xem Tài liệu tham khảo XML về quy tắc giá.

Cập nhật nguồn cấp dữ liệu giá

Giá phòng có điều kiện được đặt bằng phần tử trong thông báo Giao dịch.

Bạn cũng có thể sử dụng phần tử <Rate> làm nhiều phần tử con của <Rates> trong các phần tử <RoomBundle> hoặc <Result>. Để sử dụng giá này làm giá phòng có điều kiện, bạn phải đặt giá trị của thuộc tính rate_rule_id sao cho khớp với mã quy tắc giá mà bạn đã xác định trong tệp XML quy tắc giá.

Nếu bạn không có giá mặc định cho phòng hai người công khai, hãy đặt phần tử con <Baserate> của thông báo <Result> thành -1. Mọi <Rates> có điều kiện được gửi đến Google trong trường hợp này sẽ được coi là hợp lệ.

Ví dụ

Cơ sở + có điều kiện

Ví dụ sau đây cho thấy một Thông báo giao dịch chứa giá cơ bản và giá phòng có điều kiện:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Gói Room đơn lẻ

Ví dụ sau đây cho thấy một thông báo Giao dịch chứa một mức giá duy nhất dưới <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>

    <Baserate currency="USD">300.00</Baserate>
    <Tax currency="USD">30.00</Tax>
    <OtherFees currency="USD">2.00</OtherFees>

    <RoomBundle>
      <RoomID>single</RoomID>
      <Baserate currency="USD">300.00</Baserate>
      <Tax currency="USD">30.00</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
    </RoomBundle>

    <RoomBundle>
      <RoomID>3</RoomID>  <!-- Links to data in metadata -->
      <RatePlanID>basic</RatePlanID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <ChargeCurrency>web</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">269.00</Baserate>
          <Tax currency="USD">2.69</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rates>
      </Rates>

    </RoomBundle>
  </Result>
</Transaction>

RoomBundle nhiều

Ví dụ sau đây cho thấy một thông báo Giao dịch chứa nhiều mức giá trong một <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

Không có phòng hai người công cộng

Ví dụ sau đây thể hiện một Thông báo giao dịch chứa giá phòng có điều kiện không có mức giá cho phòng hai người công khai:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">

  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <!-- <Unavailable/> should not be specified when available nested rates
    exist. -->
    <Baserate currency="USD">-1</Baserate>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates. -->
      <Rate rate_rule_id="mobile">
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <OtherFees currency="USD">1.00</OtherFees>
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Cập nhật tệp trang đích của bạn

Để đảm bảo rằng người dùng cuối đủ điều kiện có thể đặt phòng với mức giá chiết khấu thông qua một đường liên kết sâu, hãy chỉnh sửa tệp Trang đích. Bạn cũng có thể cần triển khai thêm trên trang web đặt phòng để đăng và thực hiện đúng mức giá đã chiết khấu.

Chúng tôi mong các đối tác sẽ tuân thủ mức giá trong đường liên kết sâu của giá phòng có điều kiện.

Trong một đường liên kết sâu linh động, bạn có thể thêm quy tắc giá theo tên (thuộc tính id của phần tử <RateRule>) với biến RATE-RULE-ID.

Ví dụ sau đây sẽ thêm mã quy tắc giá:

https://bookingsite.com/landing.do?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)&currency=(USER-CURRENCY)&prid=(RATE-RULE-ID)

Tệp Trang đích cũng hỗ trợ lệnh IF-RATE-RULE-ID cho phép bạn xác định có điều kiện các phần của URL, dựa trên việc quy tắc giá có tồn tại hay không:

https://bookingsite.com/(IF-RATE-RULE-ID)privatelanding.do(RATE-RULE-ID)(ELSE)landing.do(ENDIF)?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)&currency=(USER-CURRENCY)

Ví dụ này chọn giữa hai trang đích, tuỳ thuộc vào việc bạn có đặt mã quy tắc giá hay không.

Để biết thêm thông tin, hãy xem bài viết Sử dụng biến và điều kiện.