قیمت گذاری & موجودی اتاق (معاملات) مرجع XML

این صفحه مرجعی برای پیام‌های تراکنش مبتنی بر XML ارائه می‌کند.

<Transaction>

عنصر اصلی یک پیام تراکنش <Transaction> است. این محفظه ای برای اطلاعات توصیفی در مورد اتاق ها و بسته ها و/یا قیمت و در دسترس بودن اتاق ها و بسته ها است.

عنصر <Transaction> در مکان زیر در سلسله مراتب XML پیام تراکنش ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

پیام هایی که از <Transaction> به عنوان عنصر اصلی استفاده می کنند حداقل به یک عنصر فرزند نیاز دارند. پیام‌های تراکنش می‌توانند هر تعداد عنصر فرزند داشته باشند، تا زمانی که حجم پیام از 100 مگابایت تجاوز نکند.

نحو

عنصر <Transaction> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">

  <!-- Defines data about a room or package (Room Bundle) -->
  <PropertyDataSet>
    ...
  </PropertyDataSet>

  <!-- Updates/sets prices and availability for rooms and Room Bundles -->
  <!-- (Also removes itineraries from inventory) -->
  <Result>
    ...
  </Result>

</Transaction>

ویژگی های

عنصر <Transaction> دارای ویژگی های زیر است:

صفت ضروری؟ تایپ کنید شرح
id Required رشته یک شناسه منحصر به فرد برای هر پیام تراکنش.
partner Optional string حساب شریکی که پیام تراکنش برای آن است. معمولاً اگر قسمت پشتی شما فید قیمت برای چندین حساب شریک ارائه دهد، از این استفاده می‌کنید. این مقدار رشته، مقدار «کلید شریک» است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است.
timestamp Required DateTime

لحظه ای که پیام تراکنش ارسال شد.

هر پیامی که در 24 ساعت قبل با مهر زمانی ارسال شود، پردازش می‌شود و پیام‌هایی که با مهر زمانی ارسال نشده‌اند، کنار گذاشته می‌شوند.

پیام ها به ترتیب timestamp پردازش می شوند نه به ترتیب دریافت. به عنوان مثال، به‌روزرسانی قیمت با مهر زمانی 2019-05-03 14:09:00 که پس از پیامی با مهر زمانی 2019-05-03 14:10:00 دریافت می‌شود همچنان به ترتیب پردازش می‌شود و قیمت از پیام با مهر زمانی 2019-05-03 14:10:00 استفاده خواهد شد.

عناصر کودک

عنصر <Transaction> دارای عناصر فرزند زیر است:

عنصر کودک ضروری؟ تایپ کنید شرح
<PropertyDataSet> Optional* <PropertyDataSet>

یک اتاق خاص و بسته‌های اتاق را توصیف می‌کند. شما معمولاً از این عنصر در یک پیام تراکنش جداگانه برای تعریف مقادیر به اشتراک گذاشته شده برای Room Bundles و کاهش اندازه پیام های تراکنش خود استفاده می کنید.

<Result> Optional* <Result>

داده‌های قیمت‌گذاری برای برنامه سفر اتاق یا عنصر <RoomBundle> که بسته‌های اتاق و انواع اتاق‌های اضافی را برای ملک تعریف می‌کند. عنصر <Result> همچنین می تواند برای حذف برنامه های سفر از موجودی استفاده شود.

* حداقل یکی از <PropertyDataSet> یا <Result> مورد نیاز است.

مثال ها

داده های اتاق

مثال زیر داده های اتاق را در یک پیام تراکنش ساده تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

داده های قیمت گذاری

مثال زیر داده های قیمت گذاری را در یک پیام تراکنش ساده تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

نرخ های شبانه

مثال زیر داده‌های قیمت‌گذاری را برای 1 تا 7 شب از تاریخ 7 ژوئن 2023 تعریف می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">209.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">419.98</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>3</Nights>
    <Baserate currency="USD">614.97</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>4</Nights>
    <Baserate currency="USD">819.96</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>5</Nights>
    <Baserate currency="USD">999.95</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>6</Nights>
    <Baserate currency="USD">1193.94</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>7</Nights>
    <Baserate currency="USD">1259.93</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </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>

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

موجودی را حذف کنید

مثال زیر چندین موجودی (یک شب اقامت برای چندین تاریخ مختلف) را برای یک هتل از موجودی حذف می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-23</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-24</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <!---Sending <Baserate> is optional with <Unavailable> -->
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-25</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

ظرفی برای اطلاعات اتاق و بسته (یا Room Bundle ) در پیام <Transaction> . ارزش‌های تعیین‌شده در هتل، ارزش‌های تعیین‌شده برای یک شریک را لغو می‌کند. Google این اطلاعات را ذخیره می کند تا هر بار که به روز رسانی قیمت را ارسال می کنید نیازی به تعریف آن نداشته باشید.

عنصر <PropertyDataSet> در مکان زیر در سلسله مراتب XML پیام تراکنش ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.

نحو

عنصر <PropertyDataSet> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>hotel_ID</Property>

    <!-- (Optional) Defines metadata about a room -->
    <RoomData>
      ...
    </RoomData>

    <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) -->
    <PackageData>
      ...
    </PackageData>
  </PropertyDataSet>
  ...
</Transaction>

ویژگی های

عنصر <PropertyDataSet> هیچ ویژگی ندارد.

عناصر کودک

عنصر <PropertyDataSet> دارای عناصر فرزند زیر است:

عنصر کودک ضروری؟ تایپ کنید شرح
<PackageData> Optional* <PackageData> یک اتاق بسته را توصیف می کند. این داده ها با یک شریک و هتل مرتبط است، اما نه با یک برنامه سفر. این عنصر شبیه <RoomData> است، اما امکانات و اصطلاحاتی را توصیف می کند که بخشی از توضیحات اتاق فیزیکی نیستند.

شما به شناسه بسته در به‌روزرسانی‌های قیمت‌گذاری خود اشاره می‌کنید.

برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.

<Property> Required string شناسه هتلی که داده‌های مرتبط با آن اعمال می‌شود. مقدار این عنصر باید رشته ای باشد که با فهرست <id> در فید فهرست هتل شما مطابقت داشته باشد.
<RoomData> Optional* <RoomData> یک اتاق را توصیف می کند. این داده ها با یک شریک و هتل مرتبط است، اما نه با یک برنامه سفر.

در به‌روزرسانی‌های قیمت‌گذاری، به شناسه اتاق اشاره می‌کنید.

* حداقل یکی از <PackageData> یا <RoomData> مورد نیاز است.

مثال ها

داده های اتاق و بسته

مثال زیر داده های اتاق و بسته را در <PropertyDataSet> نشان می دهد:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

وقتی قیمت‌ها و در دسترس بودن این اتاق و/یا Room Bundle را ارسال می‌کنید، به شناسه اتاق و بسته در پیام‌های قیمت‌گذاری خود اشاره می‌کنید. نتیجه این است که اندازه پیام های خود را تا حد زیادی کاهش می دهید و همچنین میزان خطاهایی که ممکن است به دلیل داده های تکراری با آنها مواجه شوید را کاهش می دهید. برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.

<RoomData>

فراداده‌های مستقل از برنامه سفر را درباره اتاق‌ها، و در نتیجه، Room Bundles را تعریف می‌کند (زیرا Room Bundles اتاق‌هایی به اضافه امکانات اضافی هستند). از <RoomData> برای کاهش تکرار داده های توصیفی در فید قیمت خود استفاده کنید.

عنصر <RoomData> در مکان زیر در سلسله مراتب XML پیام تراکنش ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

عناصر <RoomData> حاوی اطلاعاتی هستند که با یک شریک و هتل مرتبط است، اما نه با یک برنامه سفر. هدف مورد نظر برای همه داده های غیر سفرنامه است.

عنصر <RoomData> شبیه <PackageData> است، اما به جای امکانات و شرایط یک بسته، اتاق فیزیکی را توصیف می کند. شما از <RoomData> و <PackageData> به صورت ترکیبی برای ارائه جزئیات در مورد Room Bundles استفاده می کنید. برای اتاق های فردی که بخشی از یک بسته نیستند، فقط از <RoomData> استفاده کنید.

شما می توانید هر دو عنصر <RoomData> و <PackageData> را برای یک اتاق یا Room Bundle تعریف کنید. هنگامی که Google آن اتاق یا بسته را در نتایج جستجو نشان می‌دهد، توضیحات هر دو را که با خط فاصله از هم جدا شده‌اند، شامل می‌شود.

برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.

نحو

عنصر <RoomData> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    ...
    <RoomData>
      <RoomID>room_ID</RoomID>

      <Name>
        <Text text="room_name" language="language_code"/>
        ...
      </Name>

      <Description>
        <Text text="room_description" language="language_code"/>
        ...
      </Description>

      <Capacity>max_number_of_occupants</Capacity>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults, children, or seniors --></OccupancyDetails>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

ویژگی های

عنصر <RoomData> هیچ ویژگی ندارد.

عناصر کودک

عنصر <RoomData> دارای عناصر فرزند زیر است:

عنصر کودک ضروری؟ تایپ کنید شرح
<Capacity> Optional integer حداکثر تعداد مهمانانی که یک اتاق می تواند از نظر فیزیکی در خود جای دهد . برای یک اتاق، ظرفیت بیشتر یا برابر با اشغال است.

در صورت مشخص شدن، این مقدار باید برابر یا بیشتر از مقدار عنصر <Occupancy> باشد که تعداد مهمانان در نظر گرفته شده برای یک اتاق خاص است. برای مثال، <Capacity> یک سوئیت بزرگ ممکن است 6 باشد، اما <Occupancy> برای آن 4 باشد.

مقدار <Capacity> باید یک عدد صحیح مثبت بین 1 و 20 باشد.

<Description> Optional Object توضیحات کامل اتاق این عنصر باید حاوی اطلاعاتی باشد که توسط عناصر دیگر یا عنصر <Name> توصیف نشده است. هنگام تعیین توضیحات اتاق نباید از تمام حروف بزرگ استفاده کنید.

عنصر <Description> یک عنصر فرزند به <Text> را می گیرد که دارای دو ویژگی ضروری زیر است:

  • text : شرح مفصلی از اتاق.
  • language : یک کد زبان دو حرفی. به عنوان مثال، fr .

از یک عنصر <Text> جداگانه برای هر زبانی که ممکن است آگهی شما یا پیوند رزرو رایگان در آن ظاهر شود (با مقادیر متفاوت برای ویژگی‌های language ) استفاده کنید.

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

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string نام دسته اتاق. این مقدار باید با آنچه در صفحه فرود هتل (نقطه فروش سابق) ظاهر می شود مطابقت داشته باشد. مقدار این عنصر را روی همه حروف بزرگ تنظیم نکنید.

این عنصر یک عنصر فرزند <Text> را می گیرد که دارای دو ویژگی ضروری زیر است:

  • text : نام اتاق.
  • language : یک کد زبان دو حرفی. به عنوان مثال، fr .

از یک عنصر <Text> جداگانه برای هر زبانی که ممکن است آگهی شما یا پیوند رزرو رایگان در آن ظاهر شود (با مقادیر متفاوت برای ویژگی‌های language ) استفاده کنید.

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

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer حداکثر تعداد مهمانانی که یک اتاق برای آنها در نظر گرفته شده است . به عنوان مثال، یک سوئیت بزرگ ممکن است بتواند از لحاظ فیزیکی 6 مهمان را در خود جای دهد (ظرفیت = 6)، اما فقط برای حداکثر 4 مهمان در نظر گرفته شده است.

این مقدار باید کمتر یا مساوی عنصر <Capacity> باشد، که تعداد افرادی است که اتاق می تواند از نظر فیزیکی در خود جای دهد.

مقدار <Occupancy> باید یک عدد صحیح مثبت بین 1 و 99 باشد.

<Occupancy> ممکن است با <OccupancyDetails> همراه باشد که نوع مهمانان (بزرگسالان یا کودکان) را مشخص می کند. برای نحو و شرح عناصر فرزند به <OccupancyDetails> مراجعه کنید.

<OccupancySettings> Optional Object تنظیماتی که می تواند شرایط اشغال یک اتاق را محدود یا تغییر دهد.

عنصر <OccupancySettings> عناصر فرزند زیر را می گیرد:

  • <MinOccupancy> : حداقل تعداد مهمانانی که می توانند در یک اتاق بمانند. برای مثال، اگر روی 2 تنظیم شده باشد، این اتاق را نمی توان برای یک مهمان رزرو کرد.

    مقدار <MinOccupancy> باید یک عدد صحیح مثبت بین 1 و 99 باشد.

  • <MinAge> : حداقل سن برای تمام مهمانانی که در یک اتاق می مانند. به عنوان مثال، اگر این روی 18 تنظیم شده باشد، این اتاق را فقط می‌توان برای گروه‌هایی رزرو کرد که همه مهمان‌ها بالای 18 سال سن دارند.

    مقدار <MinAge> باید یک عدد صحیح مثبت بین 0 تا 99 باشد.

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

لازم نیست همه عناصر کودک گنجانده شوند.

<PhotoURL> Optional Object یک URL و شرح اختیاری برای عکسی از اتاق یا بسته اتاق داده شده. شما می توانید بیش از یک <PhotoURL> برای یک اتاق یا اتاق بسته مشخص کنید. هر URL عکس باید در <PhotoURL> خودش باشد.

این عنصر عناصر فرزند زیر را می گیرد:

  • <URL> : مکان عکس را مشخص می کند. مکان باید عمومی باشد (نه پشت فایروال) و باید شامل پروتکل باشد (مثلاً https:// ). در هر <PhotoURL> فقط از یک <URL> استفاده کنید.
  • <Caption> : شرح عکس را مشخص می کند. این عنصر یک عنصر فرزند <Text> را می گیرد که دارای دو ویژگی ضروری است: text و language . ویژگی text عبارت است و ویژگی language یک کد زبان دو حرفی مانند en را مشخص می کند.

مثال:

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> حاوی اطلاعاتی در مورد ویژگی های اتاق است.
<RoomID> Required string شناسه منحصر به فرد اتاق از این شناسه برای تطبیق داده‌های اتاق با بلوک‌های <Result> در به‌روزرسانی‌های قیمت‌گذاری خود استفاده کنید. برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید. (همچنین می توانید از این شناسه برای ارجاع به تعریف اتاق مشترک در یک پیام تراکنش زمانی که داده های اتاق را به صورت خطی تعریف می کنید استفاده کنید.)

مثال ها

داده های اتاق

مثال زیر داده های اتاق را تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

فراداده اتاق و بسته

مثال زیر فراداده اتاق و بسته را تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

بسته های چند اتاق

مثال زیر فراداده اتاق و بسته را برای چندین اتاق بسته تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<RoomFeatures>

ویژگی های موجود در اتاق را تعریف می کند.

عنصر <RoomFeatures> در مکان زیر در سلسله مراتب XML پیام تراکنش ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

نحو

عنصر <RoomFeatures> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>

      </RoomFeatures>
      ...
    </RoomData>
    ...
  </PropertyDataSet>
</Transactions>

ویژگی های

عنصر <RoomFeatures> هیچ ویژگی ندارد.

عناصر کودک

عنصر <RoomFeatures> دارای عناصر فرزند زیر است:

عنصر کودک ضروری؟ تایپ کنید شرح
<JapaneseHotelRoomStyle> Optional enum

نشان دهنده سبک یک اتاق هتل ژاپنی است.

مقادیر معتبر عبارتند از:

  • western : اتاقی به سبک غربی با تخت.
  • japanese : اتاقی به سبک ژاپنی با تختخواب های فوتون.
  • japanese_western : اتاقی به سبک وسترن ژاپنی که هم تخت های به سبک غربی و هم فوتون های سبک ژاپنی دارد.
<Beds> Optional Object به اندازه اتاق دارای <Bed> است. لطفا توجه داشته باشید که فوتون های ژاپنی نباید در اینجا شمارش شوند.

هر <Bed> دارای ویژگی های زیر است:

  • size (اختیاری): مقادیر معتبر single ، semi_double ، double ، queen و king هستند.
هر <Bed> دارای عناصر فرزند زیر است:
  • <Width> (اختیاری): عرض بستر را مشخص می کند. باید unit مشخصه با مقدار cm و number مشخصه با عرض بستر بر حسب سانتی متر باشد.
  • <Length> (اختیاری): طول تخت را مشخص می کند. باید unit مشخصه با مقدار cm و number مشخصه با طول بستر بر حسب سانتی متر باشد.
مثال:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty وقتی این اتاق یک سوئیت است، این عنصر را ارائه دهید.
<Capsule> Optional empty وقتی این اتاق یک اتاق کپسولی است، این عنصر را فراهم کنید.
<Roomsharing> Optional enum این که آیا این اتاق با ساکنان دیگر مانند مالکان یا سایر مهمانان مشترک است. مقادیر معتبر shared و private هستند.
<Outdoor> Optional empty هنگامی که این اتاق اقامتگاهی در فضای باز است که دیوارهای ثابت، لوله کشی و کنترل آب و هوا ندارد، این عنصر را ارائه دهید. برای مثال، اتاق‌های هتل محل اقامت در فضای باز نیستند، در حالی که کمپینگ‌هایی که مهمانان در چادرها اقامت می‌کنند و پارک‌های RV که مهمانان RV خود را می‌آورند، اقامتگاه در فضای باز هستند.
<MobilityAccessible> Optional empty زمانی که این اتاق قابل جابجایی است، این عنصر را ارائه دهید.
<Smoking> Optional enum چه این اتاق یک اتاق غیرسیگاری باشد یا یک اتاق سیگار. مقادیر معتبر non_smoking و smoking هستند.
<BathAndToilet> Optional Object حاوی اطلاعاتی درباره حمام و توالت در اتاق است.

صفت این است:

  • relation (اختیاری): نشان می دهد که چگونه حمام و توالت در مقابل یکدیگر قرار گرفته اند. مقادیر معتبر together (حمام و توالت با هم در یک اتاق قرار دارند (مثلاً حمام) درست در کنار یکدیگر) و separate (حمام و توالت هر کدام دارای فضاهای اختصاصی هستند). وقتی اتاق حمام و توالت ندارد، این ویژگی نباید تنظیم شود.

عنصر به صورت اختیاری عناصر فرزند زیر را می گیرد:

  • <Bath> (اختیاری): وجود این عنصر نشان دهنده حمام بودن اتاق است.

    صفات عبارتند از:

    • bathtub (اختیاری): نشان می دهد که حمام دارای وان در حمام است. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند.
    • shower (اختیاری): نشان می دهد که حمام دوش دارد. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند.
  • <Toilet> (اختیاری): وجود این عنصر نشان می دهد که این اتاق دارای سرویس بهداشتی است.

    صفات عبارتند از:

    • electronic_bidet (اختیاری): نشان می دهد که توالت دارای یک قیمت الکترونیکی است. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند.
    • mobility_accessible (اختیاری): نشان می دهد که توالت قابل تحرک است. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند.

مثال:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty زمانی که این اتاق دارای حمام خصوصی در فضای باز است، این عنصر را تامین کنید.
<AirConditioning> Optional empty زمانی که این اتاق دارای تهویه مطبوع است، این عنصر را فراهم کنید.
<Balcony> Optional empty زمانی که این اتاق دارای بالکن یا لانه است، این عنصر را فراهم کنید.
<Views> Optional Object گزینه های معتبر عبارتند از:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

مثال ها

JapaneseHotelRoomStyle مقدار پیش فرض ندارد. حذف یک مقدار منجر به خطای XML نمی شود، اما زمانی که کاربر بر اساس سبک اتاق یا تخت فیلتر می کند، فهرست شما در نتایج جستجو نشان داده نمی شود.

دو تخت یک نفره

مثال زیر نحوه استفاده از <RoomFeatures> را نشان می دهد:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

دو تخت دونفره

در زیر نمونه ای از اتاق ژاپنی سبک western با دو تخت double را مشاهده می کنید.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


سبک ژاپنی بدون تخت

نمونه زیر یک اتاق بدون تخت به سبک ژاپنی است. اطلاعات تخت برای اتاق به سبک japanese مورد نیاز نیست.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

وسترن ژاپنی با تخت

در زیر نمونه ای از یک اتاق به سبک japanese_western با تخت king است.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

اگر شریک اطلاعات تعداد تخت‌ها را در اتاق‌های japanese_western ندارد، از مثال زیر پیروی کنید:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

<PackageData>

فراداده مستقل از برنامه سفر را در مورد Room Bundles برای یک ملک تعریف می کند. این عنصر حاوی اطلاعاتی است که با شریک و هتل مرتبط است، اما نه با یک برنامه سفر. هدف در نظر گرفته شده این است که همه داده های غیر سفرنامه را یک بار تعریف کنیم و از داده های سفر به آنها ارجاع دهیم.

عنصر <PackageData> در مکان زیر در سلسله مراتب XML پیام تراکنش ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

عنصر <PackageData> شبیه <RoomData> است، اما ویژگی‌های نرخ و اصطلاحاتی را توصیف می‌کند که بخشی از توضیحات اتاق فیزیکی نیستند. شما از <RoomData> و <PackageData> به صورت ترکیبی برای ارائه جزئیات درباره بسته‌های اتاق و ویژگی‌های امتیازدهی استفاده می‌کنید. برای اتاق های فردی که بخشی از یک بسته نیستند، فقط از <RoomData> استفاده کنید.

شما می توانید هر دو عنصر <RoomData> و <PackageData> را برای یک اتاق یا Room Bundle تعریف کنید. هنگامی که Google آن اتاق یا بسته را در نتایج جستجو نشان می‌دهد، توضیحات هر دو را که با خط فاصله از هم جدا شده‌اند، شامل می‌شود.

اگر یک عنصر <PackageData> را برای یک ویژگی به روز کنید، باید همه عناصر <PackageData> و <RoomData> را برای ویژگی به روز کنید. هر <PropertyDataSet> همه داده‌های مربوط به ویژگی در نظر گرفته می‌شود و هر داده موجود را بازنویسی می‌کند.

برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.

نحو

عنصر <PackageData> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    <PackageData>
      <PackageID>package_ID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
        ...
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
        ...
      </Description>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000 </NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines">
        </Provider>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

ویژگی های

عنصر <PackageData> هیچ ویژگی ندارد.

عناصر کودک

عنصر <PackageData> دارای عناصر فرزند زیر است:

عنصر کودک ضروری؟ تایپ کنید شرح
<BreakfastIncluded> Optional boolean مشخص می کند که آیا این بسته شامل صبحانه با نرخ است یا خیر. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند.

ترجیحاً از <Meals> به جای <BreakfastIncluded> استفاده کنید.

<ChargeCurrency> Optional enum زمان و مکان کاربر برای رزرو هزینه پرداخت می کند. این عنصر از نحوی مشابه <ChargeCurrency> در <Result> استفاده می کند.

مقدار پیش فرض web است.

<CheckinTime> Optional Time زودترین زمان ممکن برای ورود زمان باید کمتر از 24:00 به وقت محلی هتل باشد.
<CheckoutTime> Optional Time آخرین زمان ممکن برای خروج به وقت محلی هتل.
<Description> Optional Object توضیحات مفصل در مورد بسته. این عنصر باید حاوی اطلاعاتی باشد که توسط عناصر دیگر یا عنصر <Name> توصیف نشده است. هنگام تعیین توضیحات اتاق نباید از تمام حروف بزرگ استفاده کنید.

عنصر <Description> یک عنصر فرزند به <Text> را می گیرد که دارای دو ویژگی ضروری text و language است. ویژگی text توضیحات است و ویژگی language یک کد زبان دو حرفی را مشخص می کند، همانطور که مثال زیر نشان می دهد:

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean اگر یک بسته شامل دسترسی به اینترنت بدون هزینه باشد، در حالی که بسته های دیگر شامل این امکانات نمی شوند. این عنصر را برای Room Bundles در هتلی که اینترنت رایگان برای همه اتاق ها ارائه می دهد، تنظیم نکنید. این عنصر برای اینترنت سیمی داخل اتاق یا اینترنت بی‌سیمی که در اتاق‌های مهمان در دسترس نیست اعمال نمی‌شود. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند.
<Meals> Optional Object حاوی اطلاعاتی در مورد وعده های غذایی در این بسته است.

عنصر <Meals> دو عنصر اختیاری فرزند را انتخاب می کند، <Breakfast> و <Dinner> که دارای ویژگی های زیر هستند:

  • included (الزامی): اگر نرخ شامل صبحانه/شام باشد، روی 1 (یا true ) تنظیم کنید. در غیر این صورت روی 0 یا false تنظیم کنید.
  • in_room (اختیاری): اگر مهمانان می‌توانند صبحانه/شام را در اتاقی که در آن اقامت می‌کنند می‌خورند، روی 1 (یا true ) تنظیم کنید. در غیر این صورت روی 0 (یا false ) تنظیم کنید.
  • in_private_space (اختیاری): اگر مهمانان می‌توانند صبحانه/شام را در فضایی (به استثنای اتاقی که در آن اقامت می‌کنند) می‌خورند، روی 1 (یا true ) تنظیم کنید تا از تماس با مهمانان دیگر اجتناب کنند. در غیر این صورت روی 0 (یا false ) تنظیم کنید.
  • buffet (اختیاری): اگر صبحانه/شام به صورت بوفه سرو می شود، روی 1 (یا true ) تنظیم کنید. در غیر این صورت روی 0 (یا false ) تنظیم کنید.

ویژگی‌های اختیاری تنها زمانی استفاده می‌شوند که included درست باشد.

برای اینکه فیلترهای وعده غذایی ( no meals ، breakfast only ، dinner only ، و breakfast and dinner ) کار کنند، هر دو <Breakfast> و <Dinner> باید دارای ویژگی included باشند.

<Name> Required string نام بسته. این مقدار باید با آنچه در صفحه فرود هتل ظاهر می شود مطابقت داشته باشد. مقدار این عنصر را روی همه حروف بزرگ تنظیم نکنید.

این عنصر یک عنصر فرزند به <Text> را می گیرد که دارای دو ویژگی text و language است. ویژگی text توضیحات است و ویژگی language یک کد زبان دو حرفی را مشخص می کند، همانطور که مثال زیر نشان می دهد:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer حداکثر تعداد مهمانانی که یک Room Bundle برای آنها در نظر گرفته شده است . به عنوان مثال، یک سوئیت بزرگ ممکن است بتواند از لحاظ فیزیکی 6 مهمان را در خود جای دهد، اما فقط برای حداکثر 4 مهمان در نظر گرفته شده است.

این مقدار باید کمتر یا مساوی عنصر <Capacity> باشد، که تعداد افرادی است که اتاق می تواند از نظر فیزیکی در خود جای دهد.

مقدار <Occupancy> باید یک عدد صحیح مثبت بین 1 و 99 باشد.

اگر این عنصر را در <RoomBundle> و <PackageData> مشخص کنید، مقدار در <RoomBundle> اولویت دارد.

توجه داشته باشید :

<Occupancy> ممکن است با <OccupancyDetails> همراه باشد، که نوع مهمانان (بزرگسالان یا کودکان) را مشخص می کند. برای نحو و شرح عناصر فرزند به <OccupancyDetails> مراجعه کنید.

<PackageID> Required string شناسه منحصر به فرد بسته. از این شناسه برای تطبیق داده‌های Room Bundle با بلوک‌های <Result> در به‌روزرسانی‌های قیمت‌گذاری خود استفاده کنید. برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.

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

<ParkingIncluded> Optional boolean این که آیا یک بسته اتاق شامل پارکینگ بدون پرداخت هزینه می‌شود، در غیر این صورت پارکینگ در این هتل یک سرویس پولی خواهد بود. برای هتلی که پارکینگ رایگان ارائه می دهد، مقداری برای این عنصر مشخص نکنید.

مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند. مقدار پیش فرض false است .

<PhotoURL> Optional Object (همانند <PhotoURL> در <RoomData> ، اما برای بسته (مثلاً عکس های غذا).)
<Refundable> Optional Object فهرست کردن نرخ به عنوان کاملاً قابل بازپرداخت یا ارائه یک لغو رایگان را فعال می‌کند. در صورت عدم ارائه، هیچ اطلاعاتی در مورد بازپرداخت نمایش داده نمی شود. خط مشی بازپرداخت در سطح <PackageData> خط مشی بازپرداخت را در سطح <Result> لغو می کند. خط مشی بازپرداخت در سطح <Rates> خط مشی بازپرداخت در سطح <PackageData> را لغو می کند. قیمت قابل استرداد نیز می تواند از طریق گزینه های جایگزین بدون تغییر مستقیم طرح پیام تراکنش شما برای کاربران برجسته شود. در اینجا درباره این گزینه ها بیشتر بدانید.

مثال زیر عنصر <Refundable> را با مجموعه تمام ویژگی های آن نشان می دهد:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

توجه: توصیه می کنیم همه ویژگی ها را تنظیم کنید. هنگامی که یک یا چند ویژگی تنظیم نشده باشد، یک پیام هشدار وضعیت فید ایجاد می شود.

اگر هیچ ویژگی تنظیم نکنید، نرخ به عنوان قابل استرداد نمایش داده نمی شود. صفات عبارتند از:

  • available : (الزامی) روی 1 یا true تنظیم کنید تا مشخص شود آیا نرخ امکان بازپرداخت کامل را دارد یا خیر. در غیر این صورت روی 0 یا false تنظیم کنید.
  • refundable_until_days : (الزامی در صورت available true باشد) تعداد روزهایی را که قبل از اعلام حضور می‌توان درخواست بازپرداخت کامل کرد را مشخص می‌کند. مقدار refundable_until_days باید یک عدد صحیح بین 0 تا 330 باشد.
  • refundable_until_time : (به شدت توصیه می شود در صورت available true باشد) آخرین زمانی از روز را در زمان محلی هتل مشخص می کند که درخواست بازپرداخت کامل انجام می شود. این را می توان با refundable_until_days ترکیب کرد تا مشخص شود، به عنوان مثال، "بازپرداخت تا ساعت 16:00 دو روز قبل از اعلام حضور در دسترس است". اگر refundable_until_time تنظیم نشده باشد، مقدار پیش‌فرض نیمه‌شب است.

    مقدار این ویژگی از قالب Time استفاده می کند.

هنگام تنظیم ویژگی ها، به موارد زیر توجه کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد، نرخ به عنوان قابل استرداد نمایش داده نمی شود.
  • اگر available 0 یا false باشد، سایر ویژگی ها نادیده گرفته می شوند. حتی اگر یک یا هر دو ویژگی دیگر تنظیم شده باشد، نرخ به عنوان قابل استرداد نمایش داده نمی شود.
<MembershipBenefits Included> Optional boolean نرخ شامل مزایای وضعیت نخبگان برای مدت اقامت است. شامل پارامترهای زیر است:
  • ProgramName : نام برنامه وضعیت نخبگان
  • ProgramLevel : سطح برنامه، به عنوان مثال، "طلا".
  • NightlyValue (optional) : ارزش شبانه مزایا.
<CarRentalIncluded> Optional boolean نرخ شامل اجاره ماشین رایگان برای مدت اقامت است.
<MilesIncluded> > Optional boolean نرخ شامل مایل پرواز مکرر است. پارامترها عبارتند از:
  • NumberofMiles : تعداد مایل در هر مسیر سفر.
  • Provider : مایل پروازهای مکرر ارائه می دهد.
<OnPropertyCredit> Optional boolean نرخ شامل اعتبار ملک (F&B، استراحتگاه، اسپا، و غیره) است. پارامتر:
  • Amount : ارزش اعتبار در هر مسیر سفر، به ارز محلی.
<AirportTransportationIncluded> Optional Object نرخ شامل حمل و نقل رایگان به / از فرودگاه نزدیک است. ویژگی direction اختیاری جهت دار بودن حمل و نقل را مشخص می کند. مقادیر معتبر عبارتند از:
    from : حمل و نقل از فرودگاه به ملک ارائه می شود. اگر جهتی مشخص نشده باشد، این مقدار پیش فرض است. to : حمل و نقل از ملک به فرودگاه ارائه می شود. round_trip : حمل و نقل هم به فرودگاه و هم از فرودگاه ارائه می شود.

مثال ها

بسته اتاق یک نفره

مثال زیر یک اتاق یک نفره را با ظرفیت 2 نفر (یک بزرگسال و یک کودک) تعریف می کند و شامل صبحانه می شود:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>1</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <PackageID>P54321</PackageID>
      <Name>
         <Text text="Breakfast Included" language="en"/>
         <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Two certificates for continental
          breakfast will be provided." language="en"/>
        <Text text="Deux certificats pour le petit déjeuner
          continental seront fournis." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

فراداده اتاق و بسته

مثال زیر فراداده اتاق و بسته را تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

بسته های چند اتاق

مثال زیر فراداده اتاق و بسته را برای چندین اتاق بسته تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>


بسته اتاق با نرخ

مثال زیر فراداده اتاق و بسته را برای یک بسته اتاق با ویژگی‌های نرخ تعریف می‌کند:

<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
     ...
    </RoomData>
<!-- definitions of PackageData types including rate features -->
    <PackageData>
      <PackageID>room_with_addl_benefits</PackageID>
      <Name>
        <Text text="Acme Hotels 2017 Promotion Package" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Marriott Rewards"/>
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum"/>
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
        <Text text="Room with Bundled Miles" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000</NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines"/>
        </Provider>
      </MilesIncluded>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</Transaction>

غذا و عکس

مثال زیر فراداده اتاق و بسته را برای وعده‌های غذایی، عکس‌ها و زمان‌های ورود و خروج تعریف می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Meals Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

صبحانه

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<Result>

ظرفی برای قیمت‌گذاری و به‌روزرسانی‌های موجود در پیام <Transaction> .

عنصر <Result> در مکان زیر در سلسله مراتب XML پیام تراکنش ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

برای تنظیم یا به‌روزرسانی قیمت‌های اتاق و تعریف موجودی موجود <Result> استفاده کنید. موارد تعریف شده در این عنصر معمولاً به ابرداده مستقل از برنامه سفر درباره یک اتاق یا بسته (مانند توضیحات یا مجموعه ای از امکانات) که در <PackageData> و <RoomData> تعریف شده است، ارجاع می دهند.

شما معمولاً پیام‌های تراکنش را با به‌روزرسانی‌های قیمت‌گذاری بسیار مکرر ارسال می‌کنید. اینکه دقیقاً چگونه و چند وقت یکبار این کار را انجام می دهید به حالت تحویل شما بستگی دارد.

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

یک پیام تراکنش می‌تواند هر تعداد عنصر <Result> را در خود داشته باشد، تا زمانی که اندازه پیام از 100 مگابایت تجاوز نکند.

نحو

عنصر <Result> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <!-- Required -->
    <Property>hotel_ID</Property>
    <!-- Required -->
    <Checkin>YYYY-MM-DD</Checkin>
    <!-- Required -->
    <Nights>number_of_nights</Nights>

    <Baserate currency="currency_code">price</Baserate>
    <!-- Only required when <Baserate> contains a real price -->
    <Tax currency="currency_code">tax_amount</Tax>
    <!-- Only required when <Baserate> contains a real price  -->
    <OtherFees currency="currency_code">fee_amount</OtherFees>
    <Refundable available="[false|true]" refundable_until_days="number_of_days"
      refundable_until_time="time"/>

    <RoomID>room_ID</RoomID>
    <PackageID>package_ID</PackageID>
    <ExpirationTime>expiration_time</ExpirationTime>
    <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

    <AllowablePointsOfSale>
      <PointOfSale id="landing_page_identifier"/>
      ...
    </AllowablePointsOfSale>

    <Custom[1-5]>custom_value</Custom[1-5]>
  </Result>
  ...
  </Transaction>

ویژگی های

عنصر <Result> دارای ویژگی های زیر است:

صفت ضروری؟ تایپ کنید شرح
mergeable Optional boolean به‌طور پیش‌فرض، قیمت‌های جدید برای یک هتل خاص و جفت برنامه سفر، قیمت‌های قبلی (منقضی نشده) موجود در حافظه پنهان Google را بازنویسی می‌کند. ویژگی ادغام شدن به شما امکان می دهد بدون حذف اطلاعات قیمت قبلی، قیمت های اضافی را در حافظه پنهان Google ذخیره کنید. جستار قیمت‌گذاری زنده با پاسخ‌های زمینه همیشه این ویژگی را روی true تنظیم می‌کند (صرف نظر از پاسخ پیام تراکنش شما).

عناصر کودک

عنصر <Result> دارای عناصر فرزند زیر است:

عنصر کودک ضروری؟ تایپ کنید شرح
<AllowablePointsOfSale> Optional Object یک یا چند صفحه فرود که برای هتل واجد شرایط هستند. صفحه فرود وب سایتی است که می تواند فرآیند رزرو را برای کاربر نهایی انجام دهد. برای گنجاندن صریح صفحه فرود خاص (و حذف سایرین)، یک یا چند عنصر <AllowablePointsOfSale> را که با ویژگی id عنصر <PointOfSale> مطابقت دارند در فایل صفحات فرود اضافه کنید.

اگر این عنصر را درج نکنید، تمام صفحات فرود تعریف شده در فایل صفحات فرود واجد شرایط استفاده برای رزرو اتاق در نظر گرفته می شوند. برای اطلاعات بیشتر، به نحو فایل صفحات فرود مراجعه کنید.

<Baserate> Optional float قیمت اتاق برای اقامت. مقدار این عنصر باید منعکس کننده موارد زیر باشد:

  • برای یک اتاق خصوصی، ارزان‌ترین نرخ دو نفره را که ارائه می‌دهید تعیین کنید.
  • برای یک اتاق مشترک، خالی بگذارید و از <RoomBundle> استفاده کنید.
  • کل مدت اقامت، نه میانگین نرخ شبانه.

هنگامی که اتاق برای برنامه سفر در دسترس نیست، <Baserate> باید حذف شود یا روی -1 تنظیم شود، و <Unavailable> باید به همراه دلایل شناخته شده برای در دسترس نبودن مشخص شود.

برای حذف یک اتاق بسته، از دستورالعمل‌های حذف بسته اتاق استفاده کنید.

<Baserate> نباید دارای علامت های گروه بندی رقمی، مانند کاما (،) یا نقطه (.) باشد. همیشه کسرها را با استفاده از نقطه (.) به عنوان علامت اعشار جدا کنید. به عنوان مثال، 1200.40 دلار را به صورت زیر نشان دهید:

<Baserate currency="USD">1200.40</Baserate>

عنصر <Baserate> ویژگی های اختیاری زیر را می گیرد:

  • all_inclusive : یک Boolean که نشان می دهد آیا این نرخ شامل مالیات و هزینه است یا خیر. به طور کلی، این مقدار را برای کاربران نهایی ایالات متحده و کانادا روی false تنظیم کنید و مقادیر عرضه را برای عناصر <Tax> و <OtherFees> تنظیم کنید. اگر از قیمت‌های فراگیر استفاده می‌کنید، اگر قیمت‌های شما مالیات و هزینه‌های کاربران آمریکایی و کانادایی را جدا نکرده باشد، ممکن است واجد شرایط ظاهر شدن در فهرست نباشید.

    برای همه کاربران نهایی دیگر، معمولاً مالیات و هزینه‌ها را در نرخ پایه لحاظ می‌کنید و مقدار مشخصه all_inclusive را روی true تنظیم می‌کنید. برای اطلاعات بیشتر، به سیاست مالیات ها و هزینه ها مراجعه کنید.

    مقدار پیش فرض false است .

  • currency : کد ارز سه حرفی. به عنوان مثال، USD برای دلار آمریکا.
<ChargeCurrency> Optional enum زمان و مکان کاربر برای رزرو هزینه پرداخت می کند. این عنصر را می توان در یک پیام تراکنش در عنصر <Result> برای قیمت هتل یا بلوک <PackageData> برای یک بسته اتاق استفاده کرد.

مقادیر معتبر عبارتند از:

  • web : در زمان رزرو هزینه از کاربر به صورت آنلاین محاسبه می شود. این مقدار پیش فرض است. صفحه فرود واقعی توسط فایل صفحه فرود تعریف می شود و می تواند تحت تأثیر واحد پول، مکان، زبان یا عوامل دیگر کاربر قرار گیرد.
  • hotel : هنگام ورود به هتل هزینه ای از کاربر دریافت می شود. اگر پرداخت باید همیشه به واحد پول هتل انجام شود، مقدار <ChargeCurrency> را روی hotel تنظیم کنید. صفحه فرود واقعی تحت تأثیر واحد پولی کاربر قرار نمی گیرد.
  • deposit : مقداری از کاربر بلافاصله دریافت می شود و مابقی در زمان بعدی، معمولاً زمانی که کاربر از هتل خارج می شود، هزینه می شود.
  • installments : کسری اولیه از کل مبلغ سررسید از کاربر دریافت می شود و انتظار می رود که به طور معمول موجودی تعیین شده را در یک دوره زمانی ثابت پرداخت کند.

مقدار پیش فرض web است.

<Checkin> Required Date تاریخ ورود برای یک برنامه سفر با استفاده از قالب تاریخ . ترکیب عنصر <Nights> و عنصر <Checkin> یک برنامه سفر را تشکیل می دهند.
<Custom[1‑5]> Optional string یک فیلد سفارشی را تعریف می کند که می توانید از آن برای ارسال اطلاعات اضافی مرتبط با یک هتل استفاده کنید. می توانید حداکثر پنج مقدار سفارشی را با نام عناصر زیر ارسال کنید:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

عناصر <Custom> به شما امکان می دهند داده های دلخواه را منتقل کنید. برای مثال، می‌توانید مقداری را در این فیلد مشخص کنید که سپس توسط فایل صفحات فرود برای ساخت یک URL سفارشی برای صفحه فرود استفاده می‌شود. محدودیت 200 کاراکتر در هر فیلد سفارشی وجود دارد. برای اطلاعات بیشتر، به فایل های صفحه فرود مراجعه کنید.

عناصر <Custom> ارائه شده در عنصر <Rate> به عنصر <RoomBundle> به ارث برده نمی شوند. شما باید ویژگی <Custom> را به طور جداگانه در هر <RoomBundle> تعریف کنید.

<ExpirationTime> Optional DateTime تاریخ و زمانی که قیمت در نظر گرفته شده است منقضی شده است (حداقل 3 ساعت).

توصیه می‌کنیم اگر برای ساختار قیمت‌گذاری شما مهم نیست، مهر زمانی انقضا ارائه نکنید.

Google هیچ قیمتی را که منقضی شده است ارائه نمی دهد و هر برنامه سفری که قیمت منقضی شده باشد واجد شرایط درخواست قیمت زنده می شود.

<Nights> Required integer تعداد شب های یک برنامه سفر. مقدار عنصر <Nights> باید یک عدد صحیح مثبت باشد. ترکیب <Nights> و <Checkin> یک برنامه سفر را تشکیل می دهد.
<OtherFees> Optional float هزینه هایی غیر از نرخ پایه و مالیات هایی که بر قیمت نهایی یک اتاق تأثیر می گذارد. عنصر <OtherFees> یک ویژگی واحد مورد نیاز، currency را می گیرد که کد ارز سه حرفی را برای هزینه ها تعریف می کند. به عنوان مثال، USD .

اگر <Baserate> بزرگتر از صفر باشد، عنصر <OtherFees> مورد نیاز است.

<Occupancy> Optional integer حداکثر تعداد سرنشینان را مشخص می کند. وقتی <Occupancy> در زیر <Result> ظاهر می شود، باید 2 یا بیشتر را مشخص کند. <Occupancy> ممکن است با <OccupancyDetails> همراه باشد که نوع مهمانان (بزرگسالان یا کودکان) را مشخص می کند. برای نحو و شرح عناصر فرزند، به <OccupancyDetails> مراجعه کنید. اگر عنصر <Occupancy> ارائه نشده باشد، اشغال به صورت پیش فرض 2 است.

توجه: برای فعال کردن این ویژگی برای ارسال قیمت‌های غیر دو نفره، با تیم پشتیبانی خود تماس بگیرید.

<PackageID> Optional string شناسه منحصر به فرد بسته برای نگاشت آن به داده های بسته از پیش تعریف شده. همچنین برای پر کردن متغیر صفحه فرود PACKAGE-ID استفاده می شود. برای اطلاعات بیشتر، به فراداده اتاق بسته مراجعه کنید.
<Property> Required string شناسه هتلی که تحت تأثیر داده‌های مرتبط (قیمت، برنامه سفر، بسته اتاق یا فراداده) قرار گرفته است. مقدار این عنصر باید یک رشته باشد. مقدار این عنصر باید با فهرست <id> که در فید فهرست هتل خود تعریف کرده اید مطابقت داشته باشد.
<Rates> Optional <Rates> ظرفی برای یک یا چند بلوک <Rate> . هر <Rate> در <Rates> قیمت متفاوتی را برای ترکیب اتاق/برنامه سفر تعریف می کند.

از عنصر <Rates> فقط زمانی استفاده کنید که چندین نرخ برای یک اتاق/ترکیب برنامه سفر وجود داشته باشد. برای مثال، نرخ‌های متعددی را برای نرخ‌های مشروط ، نرخ‌های خصوصی یا نرخ‌های مشروط در Room Bundles تعریف می‌کنید.

<Refundable> Optional Object فهرست کردن نرخ به عنوان کاملاً قابل بازپرداخت یا ارائه یک لغو رایگان را فعال می‌کند. در صورت عدم ارائه، هیچ اطلاعاتی در مورد بازپرداخت نمایش داده نمی شود. خط مشی بازپرداخت در سطح <PackageData> خط مشی بازپرداخت را در سطح <Result> لغو می کند. خط مشی بازپرداخت در سطح <Rates> خط مشی بازپرداخت در سطح <PackageData> را لغو می کند. قیمت گذاری قابل استرداد همچنین می تواند از طریق گزینه های جایگزین بدون تغییر مستقیم طرح پیام معاملات شما ، از طریق گزینه های جایگزین برای کاربران برجسته شود. در مورد این گزینه ها در اینجا بیشتر بدانید.

مثال زیر عنصر <Refundable> را با تمام ویژگی های آن نشان می دهد:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

توجه: توصیه می کنیم تمام ویژگی ها را تنظیم کنید. هنگامی که یک یا چند ویژگی تنظیم نشده است ، یک پیام هشدار دهنده وضعیت خوراک ایجاد می شود.

اگر هیچ ویژگی را تنظیم نکنید ، نرخ به صورت قابل استرداد نمایش داده نمی شود. ویژگی ها عبارتند از:

  • available : (مورد نیاز) روی 1 (یا true ) تنظیم کنید تا نشان دهد آیا نرخ بازپرداخت کامل را مجاز می کند. در غیر این صورت روی 0 (یا false ) تنظیم کنید.
  • refundable_until_days : (لازم است در صورت available true باشد) تعداد روزهای قبل از ورود به سیستم را مشخص می کند که می توان بازپرداخت کامل را درخواست کرد. مقدار refundable_until_days باید یک عدد صحیح بین 0 تا 330 باشد ، فراگیر.
  • refundable_until_time : (بسیار توصیه می شود در صورت available true است) آخرین زمان روز را در زمان محلی هتل مشخص می کند که از درخواست بازپرداخت کامل تجلیل می شود. این می تواند با refundable_until_days ترکیب شود تا به عنوان مثال ، "بازپرداخت تا ساعت 4 بعد از ظهر دو روز قبل از ورود به سیستم" در دسترس باشد. اگر refundable_until_time تنظیم نشده باشد ، مقدار پیش فرض تا نیمه شب است.

    مقدار این ویژگی از قالب زمان استفاده می کند.

هنگام تنظیم ویژگی ها ، موارد زیر را یادداشت کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد ، نرخ به صورت قابل استرداد نمایش داده نمی شود.
  • در صورت available 0 (یا false ) ، سایر ویژگی ها نادیده گرفته می شوند. این نرخ حتی اگر یک یا هر دو ویژگی دیگر تنظیم شود ، قابل استرداد نیست.
<RoomBundle> Optional <RoomBundle> یک ظرف برای اطلاعات در مورد توضیحات فیزیکی قیمت یک اتاق ، هرگونه بسته بندی امکانات و برخی جزئیات سیاست خرید برای هتل و برنامه سفر.

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

<RoomID> Optional string شناسه منحصر به فرد اتاق برای نقشه برداری از آن به داده های از پیش تعریف شده اتاق. همچنین برای جمع آوری متغیر صفحه Landing Partner-room-ID استفاده می شود. برای اطلاعات بیشتر ، به ابرداده بسته نرم افزاری مراجعه کنید.
<Tax> Optional float مالیات هایی که برای قیمت نهایی یک اتاق محاسبه می شوند. عنصر <Tax> یک ویژگی مورد نیاز واحد ، currency می گیرد که کد ارز سه نامه را برای مالیات ها تعریف می کند. به عنوان مثال ، USD . عنصر <Tax> در صورت <Baserate> بیشتر از صفر مورد نیاز است.
<Unavailable> Optional Object نشان می دهد که برنامه سفر برای رزرو در دسترس نیست. به دلایل دقیق تر اینکه برنامه سفر در دسترس نبود ، به عنوان یک ظرف خدمت می کند. یک یا چند دلیل عدم دسترسی به زیر ممکن است در زیر برچسب <Unavailable> توخالی شود:
  • <NoVacancy/> : هیچ اتاق دیگری برای یک یا چند شب اقامت برای فروش در دسترس نیست.
  • <MinNightStay value=N/> : برنامه سفر زیر حداقل شب اقامت N برای تاریخ اقامت بود.
  • <MaxNightStay value=N/> : برنامه سفر بالاتر از حداکثر اقامت شب N برای تاریخ اقامت بود.
  • <MinAdvancePurchase value=N/> : برنامه سفر زیر حداقل پنجره رزرو پیش N برای تاریخ اقامت بود.
  • <MaxAdvancePurchase value=N/> : برنامه سفر بالاتر از پنجره رزرو N رو برای تاریخ اقامت بود.
  • <ClosedToArrival/> : این ملک اجازه ورود به تاریخ ورود برنامه سفر را نمی دهد.
  • <ClosedToDeparture/> : این ملک اجازه ورود به تاریخ عزیمت برنامه سفر را نمی دهد.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/> : این ملک برای برخی یا تمام اقامت بسته است. ویژگی های توصیه شده first_open و first_closed اولین تاریخ های بیشتر از یا مساوی با تاریخ ورود که به ترتیب املاک باز یا بسته است ، مشخص می کنند. برای املاک که پس از تاریخ ورود بسته می شود ، first_open باید برابر با تاریخ ورود باشد و first_closed باید تاریخ بسته شدن ملک باشد. برای املاک بسته شده در تاریخ ورود ، first_closed باید برابر با تاریخ ورود باشد و first_opened باید تاریخ بعدی باز است که ملک در آن باز است.
  • <NotFetched/> : قیمت برنامه سفر توسط منابع داده پایین دست ارائه نشده است.
  • <InvalidProperty/> : شناسه املاک درخواست شده به رسمیت شناخته نشد.
  • <InvalidOccupancy/> : اشغال درخواست شده توسط این ملک پشتیبانی نمی شود.
  • <PriceIssue/> : مسئله ای با قیمت باعث ارسال آن نشده است.
  • <InternalError reason=""/> : برخی از خطاهای غیرقانونی رخ داده است. ویژگی دلیل اختیاری می تواند خطا را به عنوان متن گزارش دهد.
  • <OtherRestriction restriction=""/> : برنامه سفر به دلیل برخی محدودیت های رزرو نشده در دسترس نبود. ویژگی محدودیت اختیاری اجازه می دهد تا محدودیت را به عنوان متن گزارش دهید.

مثال ها

مثال چند پروپری

مثال زیر یک برنامه سفر و قیمت گذاری آن را برای دو ویژگی تعریف می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

در این مثال جزئیات مربوط به اتاق مانند توضیحات ، تصویر و عنوان ، نام اتاق و ظرفیت آن نشان داده نشده است.

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

مثال چند نرخ

مثال زیر یک برنامه سفر و ملک واحد با نرخ های متعدد برای مشاغل مختلف را تعریف می کند. از عنصر <Rates> می توان برای تهیه قیمت چند نرخ برای یک خاصیت خاص استفاده کرد. مثال زیر برای خواص اجاره تعطیلات (VR) نیز مفید است.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2021-01-13</Checkin>
    <Nights>9</Nights>
    <Baserate currency="USD">3196.1</Baserate>
    <Tax currency="USD">559.49</Tax>
    <OtherFees currency="USD">543.34</OtherFees>
    <Occupancy>2</Occupancy>
    <Rates>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>1</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>3</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>4</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>5</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>6</Occupancy>
      </Rate>
    </Rates>
  </Result>
</Transaction>

مثال غیرقابل دسترسی

مثال زیر یک برنامه سفر را تعریف می کند که در دسترس بودن آن از کانال های پایین دست قابل بازیابی نیست ، ثانیه ای که هر دو زیر حداقل اقامت شبانه است و هم قبلاً برای تاریخ های مشخص شده رزرو شده است ، و یک سوم که دارایی آن در تاریخ ورود بسته است ، اما این در طول باز می شود دوره اقامت:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NotFetched/>
    </Unavailable>
  </Result>
  <Result>
    <Property>073313</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NoVacancy/>
      <MinNightStay value=3/>
    </Unavailable>
  </Result>
  <Result>
    <Property>052213</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>10</Nights>
    <Unavailable>
      <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
    </Unavailable>
  </Result>
</Transaction>

<Rates>

یک کانتینر برای یک یا چند بلوک <Rate> . هر <Rate> در <Rates> قیمت متفاوتی را برای ترکیب اتاق/برنامه سفر تعریف می کند.

از عنصر <Rates> فقط در صورت وجود نرخ های مختلف برای ترکیب یک اتاق/برنامه سفر استفاده کنید. به عنوان مثال ، شما چندین نرخ را برای نرخ مشروط ، نرخ خصوصی یا نرخ مشروط در بسته های اتاق تعریف می کنید.

عنصر <Rates> در مکان زیر در پیام تراکنش XML سلسله مراتب ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>           (Can also contain <Rates>)
        + ...

مقادیر تعیین شده در یک <Rate> مقادیر مربوط به قیمت گذاری در عنصر والدین <Result> یا <RoomBundle> . اگر آنها در <Rate> تنظیم نشده باشند ، ارزش خود را از عنصر والدین به ارث می برند. فقط <AllowblePointsOfSale> به عنصر <RoomBundle> به ارث رسیده است.

نحو

عنصر <Rates> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <Rates>
      <Rate rate_rule_id="rate_rule_id">
        <Baserate currency="currency_code">price</Baserate>
        <Tax currency="currency_code">tax_amount</Tax>
        <OtherFees currency="currency_code">fee_amount</OtherFees>
        <ExpirationTime>expiration_time</ExpirationTime>
        <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
        <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
        <AllowablePointsOfSale>
          <PointOfSale id="landing_page_identifier"/>
        </AllowablePointsOfSale>
        <Occupancy>max_number_of_intended_occupants</Occupancy>
        <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
          ...
        <Custom[1-5]>custom_value</Custom[1-5]>
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

ویژگی های

عنصر <Rates> دارای ویژگی های زیر است:

صفت ضروری؟ شرح
rate_rule_id Optional برای نرخ مشروط ، این شناسه با یک تعریف در پرونده تعریف قانون نرخ شما مطابقت دارد. حد شخصیت برای این قسمت 40 کاراکتر است.

عناصر کودک

عنصر <Rates> عناصر کودک زیر را دارد:

عنصر کودک ضروری؟ تایپ کنید شرح
<AllowablePointsOfSale> Optional Object یک یا چند صفحه فرود که واجد شرایط هتل هستند. این عنصر از همان نحو به عنوان <AllowablePointsOfSale> در <Result> استفاده می کند.
<Baserate> Required float قیمت اتاق برای اقامت. این عنصر از همان نحو به عنوان <Baserate> در <Result> استفاده می کند.

توجه: عنصر کودک <Baserate> تحت <Rate> نمی تواند در دسترس نباشد.

<ChargeCurrency> Optional enum چه زمانی و کجا کاربر برای رزرو پرداخت می کند. این عنصر از همان نحو به عنوان <ChargeCurrency> در <Result> استفاده می کند.
<Custom[1‑5]> Optional string زمینه های سفارشی که می توانید از آنها برای انتقال داده های اضافی مرتبط با یک هتل به صفحه فرود استفاده کنید. این عنصر از همان نحو به عنوان یک <Custom[1‑5]> در یک <Result> استفاده می کند. در هر قسمت سفارشی محدودیت 200 کاراکتر وجود دارد. برای اطلاعات بیشتر ، به پرونده های صفحه فرود مراجعه کنید.

اگر عناصر <upuare> در عنصر <Result> ارائه شده است ، در این صورت در عنصر <RoomBundle> به ارث نمی رسند و باید برای هر <RoomBundle> به طور جداگانه تعریف شوند یا در صورت لزوم در <CackagedAta> گنجانده شوند.

<ExpirationTime> Optional DateTime تاریخ و زمانی که نرخ در نظر گرفته شده است. این عنصر از همان نحو به عنوان یک <ExpirationTime> در یک <Result> استفاده می کند.
<Occupancy> Optional integer

حداکثر تعداد سرنشینان را مشخص می کند. <Occupancy> ممکن است با <OccupancyDetails> همراه باشد ، که نوع میهمانان (بزرگسالان یا کودکان) را مشخص می کند. برای نحو و توضیحات عناصر کودک با <OccupancyDetails> مشورت کنید.

<OtherFees> Required float هزینه های غیر از نرخ پایه و مالیات هایی که بر قیمت نهایی یک اتاق تأثیر می گذارد. این عنصر از همان نحو به عنوان <OtherFees> در <Result> استفاده می کند.
<Refundable> Optional Object لیست کردن نرخ را به عنوان کاملاً قابل استرداد یا ارائه لغو رایگان امکان پذیر می کند. در صورت عدم ارائه ، هیچ اطلاعاتی در مورد بازپرداخت نمایش داده نمی شود. خط مشی بازپرداخت در سطح <PackageData> سیاست بازپرداخت را در سطح <Result> غلبه می کند. خط مشی بازپرداخت در سطح <Rates> ، سیاست بازپرداخت را در سطح <PackageData> غلبه می کند. قیمت گذاری قابل استرداد همچنین می تواند از طریق گزینه های جایگزین بدون تغییر مستقیم طرح پیام معاملات شما ، از طریق گزینه های جایگزین برای کاربران برجسته شود. در مورد این گزینه ها در اینجا بیشتر بدانید.

مثال زیر عنصر <Refundable> را با تمام ویژگی های آن نشان می دهد:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

توجه: توصیه می کنیم تمام ویژگی ها را تنظیم کنید. هنگامی که یک یا چند ویژگی تنظیم نشده است ، یک پیام هشدار دهنده وضعیت خوراک ایجاد می شود.

اگر هیچ ویژگی را تنظیم نکنید ، نرخ به صورت قابل استرداد نمایش داده نمی شود. ویژگی ها عبارتند از:

  • available : (مورد نیاز) روی 1 (یا true ) تنظیم کنید تا نشان دهد آیا نرخ بازپرداخت کامل را مجاز می کند. در غیر این صورت روی 0 (یا false ) تنظیم کنید.
  • refundable_until_days : (لازم است در صورت available true باشد) تعداد روزهای قبل از ورود به سیستم را مشخص می کند که می توان بازپرداخت کامل را درخواست کرد. مقدار refundable_until_days باید یک عدد صحیح بین 0 تا 330 باشد ، فراگیر.
  • refundable_until_time : (بسیار توصیه می شود در صورت available true است) آخرین زمان روز را در زمان محلی هتل مشخص می کند که از درخواست بازپرداخت کامل تجلیل می شود. این می تواند با refundable_until_days ترکیب شود تا به عنوان مثال ، "بازپرداخت تا ساعت 4 بعد از ظهر دو روز قبل از ورود به سیستم" در دسترس باشد. اگر refundable_until_time تنظیم نشده باشد ، مقدار پیش فرض تا نیمه شب است.

    مقدار این ویژگی از قالب زمان استفاده می کند.

هنگام تنظیم ویژگی ها ، موارد زیر را یادداشت کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد ، نرخ به صورت قابل استرداد نمایش داده نمی شود.
  • در صورت available 0 (یا false ) ، سایر ویژگی ها نادیده گرفته می شوند. این نرخ حتی اگر یک یا هر دو ویژگی دیگر تنظیم شود ، قابل استرداد نیست.
<Tax> Required float مالیات هایی که برای قیمت نهایی یک اتاق محاسبه می شوند. این عنصر از همان نحو به عنوان A <Tax> در یک <Result> استفاده می کند.

مثال ها

نرخ پایه و نرخ مشروط

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

<?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> تعریف می کند:

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

<RoomBundle>

قیمت گذاری و در دسترس بودن برای بسته های اتاق را به عنوان کودک <Result> در یک پیام <Transaction> تعریف می کند. یک عنصر جداگانه برای هر ترکیب بسته/برنامه سفر تعریف کنید. برای تعریف بسته و شرایط بسته های اتاق ، از <RoomData> استفاده کنید.

عنصر <RoomBundle> در مکان زیر در پیام تراکنش XML سلسله مراتب ظاهر می شود:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

برای اطلاعات بیشتر ، به استفاده از بسته های اتاق مراجعه کنید.

نحو

عنصر <RoomBundle> از نحو زیر استفاده می کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <RoomBundle>
      <!-- Required unless specified inline under <RoomData> -->
      <RoomID>room_ID</RoomID>
      <!-- Required  <PackageData> -->
      <PackageID>package_ID</PackageID>

      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>
      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>
      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- Required -->
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>

      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

      <Custom1>custom_value_1</Custom1>
      <Custom2>custom_value_2</Custom2>
      <Custom3>custom_value_3</Custom3>
      <Custom4>custom_value_4</Custom4>
      <Custom5>custom_value_5</Custom5>
    </RoomBundle>
    ...
  </Result>
</Transaction>

ویژگی های

عنصر <RoomBundle> هیچ ویژگی ندارد.

عناصر کودک

عنصر <RoomBundle> عناصر کودک زیر را دارد:

عنصر کودک ضروری؟ تایپ کنید شرح
<Baserate> Required float قیمت بسته اتاق را برای اقامت تعریف می کند. این عنصر از همان نحو به عنوان <Baserate> در <Result> استفاده می کند ، با استثناء زیر:
  • هنگامی که اتاق برای برنامه سفر در دسترس نیست ، عنصر <RoomBundle> را حذف کنید تا نشان دهد که یک اتاق دیگر موجودی نیست. برای اطلاعات بیشتر ، به حذف بسته نرم افزاری اتاق مراجعه کنید.
<BreakfastIncluded> Optional boolean مشخص می کند که آیا این بسته نرم افزاری اتاق شامل صبحانه با نرخ است.
<ChargeCurrency> Optional enum چه زمانی و کجا کاربر برای رزرو پرداخت می کند. این عنصر از همان نحو به عنوان <ChargeCurrency> در <Result> استفاده می کند.

مقدار پیش فرض web است.

<Custom[1‑5]> Optional string زمینه های سفارشی برای انتقال داده های اضافی به صفحات فرود برای بسته نرم افزاری اتاق. این عناصر از همان نحو به عنوان <Custom[1-5]> در <Result> استفاده می کنند. در هر قسمت سفارشی محدودیت 200 کاراکتر وجود دارد. برای اطلاعات بیشتر ، به پرونده های صفحه فرود مراجعه کنید.

اگر عناصر <upuare> در عنصر <Result> ارائه شده است ، در این صورت در عنصر <RoomBundle> به ارث نمی رسند و باید برای هر <RoomBundle> به طور جداگانه تعریف شوند یا در صورت لزوم در <CackagedAta> گنجانده شوند.

<InternetIncluded> Optional boolean اگر یک بسته نرم افزاری شامل دسترسی به اینترنت بدون هیچ گونه هزینه ای باشد ، در حالی که سایر بسته ها شامل این راحتی نمی شوند. این عنصر را برای بسته های اتاق در هتلی که اینترنت رایگان برای همه اتاق ها فراهم می کند ، تنظیم نکنید. این عنصر برای اینترنت سیمی در اتاق یا اینترنت بی سیم که در اتاق های مهمان موجود نیست ، صدق نمی کند.
<Occupancy> Required integer حداکثر تعداد مهمانانی که یک بسته نرم افزاری در آن در نظر گرفته شده است. به عنوان مثال ، یک مجموعه بزرگ ممکن است بتواند از نظر جسمی 6 مهمان را در خود جای دهد ، اما "بسته ماه عسل" فقط برای 2 مهمان در نظر گرفته شده است.

این مقدار باید کمتر یا مساوی با <Capacity> باشد ، که تعداد افرادی است که اتاق می تواند از نظر جسمی در آن قرار بگیرد.

هنگام تعریف اشغال در URL صفحه فرود خود ، از متغیرهای NUM-ADULTS و NUM-CHILDREN استفاده کنید ، همانطور که در استفاده از متغیرها و شرایط شرح داده شده است. مقدار پیش فرض 2 بزرگسال و 0 کودک است.

ارزش <Occupancy> باید یک عدد صحیح مثبت بین 1 تا 99 باشد ، فراگیر.

یادداشت :

  • <Occupancy> برای <RoomBundle> به شدت توصیه می شود تا در صورت لزوم پرچم گذاری شود و در صورت حذف خطای 1097 را به وجود می آورد.
  • <Occupancy> <PackageData> <RoomBundle> شیء به این ترتیب آمده <RoomData> : اگر در هیچ یک از این موارد ارزش وجود نداشته باشد ، مقدار پیش فرض به 2 است.
  • <Occupancy> ممکن است با <OccupancyDetails> همراه باشد ، که نوع میهمانان (بزرگسالان یا کودکان) را مشخص می کند. برای نحو و توضیحات عناصر کودک با <OccupancyDetails> مشورت کنید.
  • هنگامی که <Occupancy> در هر دو <RoomBundle> و <PackageData> تنظیم می کنید ، مقدار در <RoomBundle> تقدم می شود.
<OtherFees> Required float هزینه های غیر از نرخ پایه و مالیات هایی که بر قیمت نهایی یک اتاق تأثیر می گذارد. عنصر <OtherFees> یک ویژگی مورد نیاز ، currency می گیرد که کد ارز سه حرفی را برای هزینه ها تعریف می کند. به عنوان مثال ، از USD آمریکا استفاده کنید.
<PackageID> Optional (recommended) string شناسه منحصر به فرد برای داده های بسته. از این شناسه استفاده کنید تا داده های بسته نرم افزاری اتاق را با آنچه در <PackageData> ارسال شده است مطابقت دهید. برای اطلاعات بیشتر ، به ابرداده بسته نرم افزاری مراجعه کنید. (همچنین می توانید از این شناسه برای اشاره به تعریف بسته نرم افزاری اتاق مشترک که در یک پیام معامله واحد استفاده می شود هنگام تعریف داده های بسته بندی اتاق به صورت درون خطی استفاده کنید.)
<ParkingIncluded> Optional boolean این که آیا یک بسته نرم افزاری شامل پارکینگ بدون هزینه است ، جایی که پارکینگ در این هتل خدمات پرداخت شده در این هتل خواهد بود. برای هتلی که پارکینگ رایگان ارائه می دهد ، ارزش این عنصر را مشخص نکنید.

مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند. مقدار پیش فرض false است .

<RatePlanID> Optional string شناسه برنامه نرخ شناسه منحصر به فرد برای یک اتاق و ترکیب بسته را نشان می دهد. به عنوان مثال ، با توجه به مقدار <RoomID> از 5 و مقدار <PackageID> ABC ، ​​می توانید از مقدار 5-ABC برای <RatePlanID> استفاده کنید. ما اکیداً توصیه می کنیم URL از SpeadPlanid به عنوان یک متغیر برای ساختن صفحه فرود پویا (که قبلاً نقطه فروش) است.

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

<Rates> Optional <Rates> نرخ هایی که پیش فرض برای این بسته نرم افزاری اتاق را نادیده می گیرند. این عنصر از همان نحو به عنوان <Rates> در <Result> استفاده می کند.
<Refundable> Optional Object لیست کردن نرخ را به عنوان کاملاً قابل استرداد یا ارائه لغو رایگان امکان پذیر می کند. در صورت عدم ارائه ، هیچ اطلاعاتی در مورد بازپرداخت نمایش داده نمی شود. خط مشی بازپرداخت در سطح <PackageData> سیاست بازپرداخت را در سطح <Result> غلبه می کند. خط مشی بازپرداخت در سطح <Rates> ، سیاست بازپرداخت را در سطح <PackageData> غلبه می کند. قیمت گذاری قابل استرداد همچنین می تواند از طریق گزینه های جایگزین بدون تغییر مستقیم طرح پیام معاملات شما ، از طریق گزینه های جایگزین برای کاربران برجسته شود. در مورد این گزینه ها در اینجا بیشتر بدانید.

مثال زیر عنصر <Refundable> را با تمام ویژگی های آن نشان می دهد:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

توجه: توصیه می کنیم تمام ویژگی ها را تنظیم کنید. هنگامی که یک یا چند ویژگی تنظیم نشده است ، یک پیام هشدار دهنده وضعیت خوراک ایجاد می شود.

اگر هیچ ویژگی را تنظیم نکنید ، نرخ به صورت قابل استرداد نمایش داده نمی شود. ویژگی ها عبارتند از:

  • available : (مورد نیاز) روی 1 (یا true ) تنظیم کنید تا نشان دهد آیا نرخ بازپرداخت کامل را مجاز می کند. در غیر این صورت روی 0 (یا false ) تنظیم کنید.
  • refundable_until_days : (لازم است در صورت available true باشد) تعداد روزهای قبل از ورود به سیستم را مشخص می کند که می توان بازپرداخت کامل را درخواست کرد. مقدار refundable_until_days باید یک عدد صحیح بین 0 تا 330 باشد ، فراگیر.
  • refundable_until_time : (بسیار توصیه می شود در صورت available true است) آخرین زمان روز را در زمان محلی هتل مشخص می کند که از درخواست بازپرداخت کامل تجلیل می شود. این می تواند با refundable_until_days ترکیب شود تا به عنوان مثال ، "بازپرداخت تا ساعت 4 بعد از ظهر دو روز قبل از ورود به سیستم" در دسترس باشد. اگر refundable_until_time تنظیم نشده باشد ، مقدار پیش فرض تا نیمه شب است.

    مقدار این ویژگی از قالب زمان استفاده می کند.

هنگام تنظیم ویژگی ها ، موارد زیر را یادداشت کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد ، نرخ به صورت قابل استرداد نمایش داده نمی شود.
  • در صورت available 0 (یا false ) ، سایر ویژگی ها نادیده گرفته می شوند. این نرخ حتی اگر یک یا هر دو ویژگی دیگر تنظیم شود ، قابل استرداد نیست.
<RoomID> Required string شناسه منحصر به فرد برای داده های اتاق. از این شناسه برای مطابقت با داده های بسته اتاق با آنچه در <RoomData> ارسال کرده اید استفاده کنید. برای اطلاعات بیشتر ، به ابرداده بسته نرم افزاری مراجعه کنید. (همچنین می توانید هنگام تعریف داده های اتاق در یک پیام مشترک ، از این شناسه استفاده کنید.
<Tax> Required float مالیات هایی که برای قیمت نهایی یک اتاق محاسبه می شوند. عنصر <Tax> یک ویژگی مورد نیاز واحد ، currency می گیرد که کد ارز سه نامه را برای مالیات ها تعریف می کند. به عنوان مثال ، از USD آمریکا استفاده کنید.

مثال ها

بسته نرم افزاری اشغال

مثال زیر پاسخی را با یک بسته نرم افزاری اشغال می کند. هنگامی که یک کاربر 1 در انتخاب کننده اشغال انتخاب می کند ، Google بدون در نظر گرفتن اشغال ، کمترین قیمت واجد شرایط را نشان می دهد.

اگر یک قیمت اشغال واحد در دسترس نباشد ، Google کمترین قیمت دو برابر را نشان می دهد. توجه داشته باشید که در صورتی که دو برابر یا قیمت های بیشتری برای برنامه سفر ذخیره شود ، قیمت های مجرد واحد به صورت زنده پرس و جو نمی شوند.

این مثال به اتاق و بسته بندی از پیش تعریف شده با عناصر <RoomID> و <PackageID> اشاره می کند. برای تعریف این اطلاعات از عناصر <RoomData> و <PackageData> استفاده کنید.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note:  Once defined it does not have to be repeated for future
              Transaction Messages.
              PropertyDataSets can also be defined and sent in their own
              Transaction Message separately from pricing. Google can be
              configured to pull just PropertyDataSets once per day
              (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P11111</PackageID>
      <Occupancy>1</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


دو یا چند شغل

مثال زیر پاسخی را شامل می شود که شامل دو یا چند شغل است.

این مثال به اتاق و بسته بندی از پیش تعریف شده با عناصر <RoomID> و <PackageID> اشاره می کند. برای تعریف این اطلاعات از عناصر <RoomData> و <PackageData> استفاده کنید.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Efficient method of defining Room Bundles-->
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P33333</PackageID>
      <Occupancy>3</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
    <!-- Base Room Bundle -->
    <RoomBundle>
      <!-- Baserate above and attributes must match atleast one room bundle
           below -->
      <RoomID>060773</RoomID>
      <PackageID>P33333</PackageID>
      <Baserate currency="USD">499.99</Baserate>
      <Tax currency="USD">55.12</Tax>
      <OtherFees currency="USD">22.00</OtherFees>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
      <Baserate currency="USD">598.88</Baserate>
      <Tax currency="USD">62.12</Tax>
      <OtherFees currency="USD">30.00</OtherFees>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 2 or more occupancies..-->
  </Result>
</Transaction>


بسته های چند اتاق

مثال زیر اشغال را در بسته های مختلف اتاق برای نشان دادن قیمت ممکن اتاق خوابگاه تنظیم می کند.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <!-- Suite Room Bundle -->
    <RoomBundle>
      <RoomID>suite1</RoomID>
      <PackageID>standard</PackageID>
      <Occupancy>2</Occupancy>
      <!-- Price for room -->
      <Baserate currency="USD">80.00</Baserate>
      <Tax currency="USD">5.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="Suite for 2" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Small Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>small_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">35.00</Baserate>
      <Tax currency="USD">3.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in small dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Large Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>large_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">20.00</Baserate>
      <Tax currency="USD">2.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in large dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>
    ...
  </Result>
</Transaction>

چند نرخ مشروط

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

<OccupancyDetails>

<Occupancy> در یک پیام معامله حداکثر تعداد مهمان برای یک اتاق یا بسته را مشخص می کند. <OccupancyDetails> می تواند حاوی اطلاعات اضافی مانند تعداد و نوع میهمانان (بزرگسالان یا کودکان) باشد.

هنگامی که <Occupancy> و <OccupancyDetails> در عنصر <Rates> <Result> یا <RoomBundle> ظاهر می شود ، این بدان معنی است که نرخ با جزئیات اشغال محدود می شود.

نحو

هنگامی که <OccupancyDetails> ظاهر می شود ، همیشه قبل از آن توسط <Occupancy> انجام می شود. به نحو زیر توجه داشته باشید:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
  ...
    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <OccupancyDetails>
      <NumAdults>number_of_adults</NumAdults>
      <Children>
        <Child age=age_of_one_child_guest/>
        <Child age=age_of_one_child_guest/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

عناصر کودک

عنصر <OccupancyDetails> عناصر کودک زیر را دارد:

عنصر کودک ضروری؟ تایپ کنید شرح
<NumAdults> Required integer تعداد مهمانان بزرگسال. حداقل: 1 ، حداکثر: 20.
<Children> Optional Object یک ظرف برای یک یا چند عنصر <Child> .
<Child age> Optional integer حداکثر سن برای این کودک - به عنوان مثال ، <Child age="17"> .

مثال ها

مثالهای زیر نشان می دهد که چگونه ممکن است <OccupancyDetails> در <Results> ، <RoomBundle> یا عنصر <Rates> کودک ظاهر شود.

پاسخ نتیجه

مثال زیر یک برنامه سفر و قیمت گذاری آن برای یک ملک را در پاسخ به پرس و جو قیمت گذاری زنده که در آن کاربر تعداد و انواع مهمانان را مشخص کرده است ، تعریف می کند. در اینجا ، <OccupancyDetails> - 2 بزرگسال و یک فرزند - در <Result> بازگردانده می شوند.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="17"/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

پاسخ نرخ

مثال زیر یک برنامه سفر و قیمت گذاری آن را برای 1 بزرگسال و 1 کودک تعریف می کند. در اینجا ، <OccupancyDetails> در عنصر <Rates> <Result> بازگردانده می شود.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
  <Result>
    <Property>8251</Property>
    <Checkin>2018-06-20</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">62.18</Baserate>
    <Tax currency="USD">2.45</Tax>
    <OtherFees currency="USD">0.00</OtherFees>
    <Rates>
      <Rate rate_rule_id="rule-951">
        <Occupancy>2</Occupancy>
        <OccupancyDetails>
          <NumAdults>1</NumAdults>
          <Children>
            <Child age="17"/>
          </Children>
        </OccupancyDetails>
        <Baserate currency="USD">42.61</Baserate>
        <Tax currency="USD">5.70</Tax>
        <OtherFees currency="USD">0.00</OtherFees>
        <Custom1>abc4</Custom1>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

دسته اتاق

مثال زیر شغل 2 بزرگسال و 1 کودک را به مدت دو شب با نرخ قابل استرداد تعریف می کند. در اینجا ، <OccupancyDetails> در داخل <RoomBundle> ظاهر می شود

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>6781291</Property>
    <Checkin>2017-08-05</Checkin>
    <Nights>2</Nights>
    ...
    <RoomBundle>
      <RoomID>10291</RoomID>
      <RatePlanID>564739</RatePlanID>
      <PackageID>564739</PackageID>
      <Occupancy>3</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
      <Baserate currency="USD">185.34</Baserate>
      <Tax currency="USD">37.06</Tax>
      <OtherFees currency="USD">2.22</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

بسته های چند اتاق

مثال زیر چند نرخ <RoomBundle> را تعریف می کند که محدود به اشغال 2 بزرگسال و 2 کودک است. در اینجا ، <OccupancyDetails> در عنصر <Rates> <RoomBundle> ظاهر می شود.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">275.00</Baserate>
    <Tax currency="USD">27.50</Tax>
    <OtherFees currency="USD">0</OtherFees>
    <RoomBundle>
      <RoomID>5</RoomID>
      <PackageID>STD</PackageID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">0</OtherFees>
      <InternetIncluded>1</InternetIncluded>
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <Custom2>ratebasic</Custom2>
      <Occupancy>4</Occupancy>
      <OccupancyDetails>
          <NumAdults>2</NumAdults>
          <Children>
              <Child age="17"/>
              <Child age="17"/>
          </Children>
      </OccupancyDetails>
      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <ChargeCurrency>hotel</ChargeCurrency>
          <Custom1>ratecode321</Custom1>
        </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>
          <Custom1>ratecode432</Custom1>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>