نرخ های مشروط

نرخ‌های مشروط نوعی قانون نرخ هستند که به شما امکان می‌دهد بر اساس معیارهایی مانند دستگاه کاربر، کشور، یا اینکه آیا کاربر به سیستم Google وارد شده است، نرخ‌های متفاوتی را برای برنامه‌های سفر ارائه دهید.

هنگامی که بیش از یک نرخ عمومی یا مشروط برای یک برنامه سفر یا Room Bundle دارید، کاربر کمترین نرخ را خواهد دید. گوگل همیشه پایین ترین نرخ واجد شرایط را برای کاربر انتخاب می کند.

نمای کلی

نرخ‌های مشروط در جایگاه‌های قیمت‌گذاری استاندارد قابل مشاهده هستند و فقط برای کاربرانی که جستجوهایشان معیارهای نرخ مشروط مرتبط را برآورده می‌کند نشان داده می‌شود. این معیارها می تواند بر اساس موارد زیر باشد:

برای فعال کردن نرخ های مشروط، موارد زیر را تغییر دهید:

نرخ های مشروط مخصوص دستگاه

نرخ‌های خاص دستگاه، نرخ‌های هتلی هستند که فقط توسط کاربران در یک دستگاه خاص مانند تلفن همراه، تبلت یا رایانه رومیزی قابل مشاهده و رزرو هستند. نرخ‌ها توسط شرکای Google ارائه می‌شوند و کاربران نهایی می‌توانند همان نرخ‌های خاص دستگاه را در سایت شریک ببینند و رزرو کنند.

نرخ های حصارکشی شده

نرخ های مشروط خاص کشور

نرخ‌های خاص کشور، نرخ‌های هتلی هستند که فقط توسط کاربرانی که در جستجوی هتل‌های یک کشور خاص هستند، قابل مشاهده و رزرو هستند. گوگل کشور را با استفاده از آدرس IP کاربر نهایی تعیین می کند. نرخ‌ها توسط شرکای Google ارائه می‌شوند و کاربران نهایی می‌توانند همان نرخ‌های خاص کشور را در سایت خاص کشور شریک ببینند و رزرو کنند.

نرخ های شرطی خاص زبان

نرخ‌های خاص زبان فقط برای کاربرانی قابل مشاهده است که در حال جستجوی هتل‌ها هستند، در حالی که از یک تنظیم زبان خاص در Google استفاده می‌کنند. شرایط خاص زبان با استفاده از عنصر <LanguageCode> تعریف می شود.

زبان در پیام‌های درخواستی با پرس و جوهای زمینه مشخص نشده است. بنابراین، اگر در قوانین نرخ خود <LanguageCode> را مشخص کنید، پاسخ With Context باید شامل تمام نرخ های مربوط به زبان باشد.

نرخ های مشروط نمونه برداری شده

نرخ‌های مشروط نمونه‌برداری شده فقط برای زیرمجموعه‌ای تصادفی از همه کاربران واجد شرایط قابل مشاهده است. نرخ نمونه برداری با استفاده از عنصر <MaxUsersPercent> تعریف شده و با استفاده از موارد زیر محاسبه می شود:

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

نرخ های مشروط ورود به سیستم

نرخ‌های ورود به سیستم فقط برای کاربرانی قابل مشاهده است که با یک حساب Google وارد سیستم شده‌اند. شرکای Google نرخ ها را ارائه می دهند و کاربران می توانند نرخ ها را در سایت خود شریک مشاهده و رزرو کنند. نرخ ورود به سیستم با استفاده از عنصر <UserSignedIn> تعریف می شود.

از آنجایی که Google همیشه کمترین نرخ واجد شرایط را انتخاب می کند، اگر نرخ مشروط بالاتر از قیمت تعیین شده در سطح <Result> باشد، نرخ مشروط هرگز انتخاب نخواهد شد. برای جلوگیری از این امر، نرخ را در سطح <Result> حذف کنید و همه نرخ ها را شرطی کنید. از طرف دیگر، از مدیر حساب فنی خود در مورد استفاده از قانون نرخ پیش‌فرض برای قیمت‌های تعیین‌شده در سطح <Result> بپرسید.

یک فایل XML قوانین نرخ ایجاد کنید

قوانین نرخ برای نرخ های شرطی با استفاده از فایل XML قوانین نرخ تعریف می شوند. برای اطلاعات بیشتر، به مرجع XML قوانین نرخ‌گذاری مراجعه کنید.

فید قیمت خود را به روز کنید

نرخ های مشروط با استفاده از عنصر موجود در پیام تراکنش تنظیم می شوند.

عنصر <Rate> همچنین می تواند به عنوان چندین عنصر فرزند <Rates> در عناصر <RoomBundle> یا <Result> استفاده شود. برای استفاده از آن به عنوان نرخ شرطی، باید مقدار ویژگی rate_rule_id را با شناسه قانون نرخی که در فایل XML قوانین نرخ تعریف کرده‌اید مطابقت دهید.

اگر نرخ اشغال دوگانه عمومی پیش‌فرض ندارید، عنصر فرزند <Baserate> پیام <Result> را روی -1 تنظیم کنید. هر <Rates> مشروط که در این مورد به Google ارسال شود معتبر تلقی می شود.

نمونه ها

پایه + مشروط

مثال زیر یک پیام تراکنش را نشان می دهد که حاوی نرخ پایه و نرخ مشروط است:

<?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>

RoomBundle یک نفره

مثال زیر یک پیام تراکنش را نشان می‌دهد که حاوی یک نرخ واحد تحت <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 چندگانه

مثال زیر یک پیام تراکنش را نشان می دهد که حاوی چندین نرخ تحت یک <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>

دو نفره عمومی ندارد

مثال زیر یک پیام تراکنش را نشان می دهد که حاوی نرخ مشروط بدون نرخ اشغال دوگانه عمومی است:

<?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>

فایل صفحه فرود خود را به روز کنید

برای اطمینان از اینکه کاربران نهایی واجد شرایط می توانند نرخ تخفیف را از طریق پیوند عمیق رزرو کنند، فایل صفحه فرود خود را تغییر دهید. همچنین ممکن است در وب سایت رزرو به پیاده سازی بیشتری نیاز باشد تا به درستی نرخ های تخفیف نشان داده شده و برآورده شود.

ما از شرکا انتظار داریم قیمت نشان داده شده در پیوند عمیق نرخ مشروط را رعایت کنند.

در یک پیوند عمیق پویا، می توانید قانون نرخ را با نام آن، ویژگی id عنصر <RateRule> ، با متغیر RATE-RULE-ID وارد کنید.

مثال زیر شناسه قانون نرخ را اضافه می کند:

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)

فایل Landing Page همچنین از دستورالعمل IF-RATE-RULE-ID پشتیبانی می کند که به شما امکان می دهد بخش هایی از URL را به صورت مشروط تعریف کنید، بر اساس اینکه آیا قانون نرخ وجود دارد یا خیر:

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)

این مثال بسته به اینکه شناسه قانون نرخ تنظیم شده باشد، بین دو صفحه فرود انتخاب می کند.

برای اطلاعات بیشتر، استفاده از متغیرها و شرایط را ببینید.