مرجع 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 حساب الشريك المعنيّ برسالة "المعاملة" إِنْتَ هذا الخيار عادةً إذا كانت الخلفية توفّر خلاصات أسعار لعدة مواقع إلكترونية حسابات الشركاء. قيمة السلسلة هذه هي "مفتاح الشريك" القيمة مدرجة في صفحة "إعدادات الحساب" في Hotel Center.
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>

تصف هذه السمة غرفة محدّدة ومجموعات غرف محدّدة. تستخدم عادةً هذه في رسالة معاملة منفصلة لتحديد القيم المشتركة حِزم الغرف وتقليل حجم رسائل "المعاملات"

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

أسعار الإقامة في الليلة

يوضّح المثال التالي بيانات الأسعار لمدة من يوم إلى 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>

حاوية معلومات الغرفة والحزمة (أو حزمة الغرفة) في <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>

عند إرسال أسعار هذه الغرفة وحزمة الغرف ومدى توفّرها، عليك الإشارة إلى معرّفات الغرف والحزمة في رسائل الأسعار والنتيجة هي بحيث تقلل حجم رسائلك بشكل كبير، وكذلك تقلل من مقدار الأخطاء التي قد تواجهها بسبب البيانات المكررة. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

<RoomData>

تحدِّد هذه السياسة بيانات وصفية مستقلة عن برنامج الرحلة، بالإضافة إلى معلومات عن الغرف. حِزم (لأنّ حزم الغرف هي غرف بالإضافة إلى وسائل راحة إضافية) استخدام <RoomData> لتقليل تكرار البيانات الوصفية في السعر الخلاصة.

يظهر العنصر <RoomData> في المكان التالي في تدرّج XML الخاص برسائل المعاملات:

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

تحتوي عناصر <RoomData> على معلومات مرتبطة بـ الشريك والفندق، ولكن ليس مع برنامج رحلة. إن الغرض المقصود هو لجميع البيانات غير المتعلقة بمسار الرحلة.

عنصر <RoomData> مشابه للعنصر <PackageData>، ولكنه يصف الغرفة الفعلية بدلاً من وسائل الراحة وبنود الحزمة. أنت تستخدم <RoomData> و<PackageData> معًا لتقديم تفاصيل عن حِزم الغرف. وبالنسبة إلى الغرف الفردية التي ليست جزءًا من حزمة، استخدِم <RoomData>

يمكنك تحديد كل من العنصرين <RoomData> و<PackageData> من أجل نفس الغرفة أو حزمة الغرف. وعندما تعرض 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 أشخاص إنّها تتّسع لما يصل إلى 4 نزلاء فقط (السعة = 6).

يجب أن تكون هذه القيمة أقل من أو مساوية العنصر <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://). استخدام مادة عرض واحدة فقط <URL> لكل <PhotoURL>.
  • <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 يمكنك تقديم هذا العنصر عندما تكون هذه الغرفة للإقامة في الهواء الطلق غير مسموح بها. ولها جدران ثابتة وسباكة وتحكم في المناخ. على سبيل المثال، تتضمن غرف الفنادق فهي ليست إقامة في الهواء الطلق في حين أن مواقع التخييم حيث يقيم الضيوف في الخيام وتتوفّر مواقف للمركبات الترفيهية حيث يجلب النزلاء مركبتهم الترفيهية.
<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>

تحدِّد هذه السياسة البيانات الوصفية المستقلة عن برنامج الرحلة حول حِزم الغرف الخاصة بأحد المواقع. يحتوي هذا العنصر على معلومات مرتبطة بشريك وفندق، ولكن ليس مع برنامج رحلة. والغرض المقصود هو تحديد جميع برامج الرحلات مرة واحدة والإشارة إليها من بيانات برنامج الرحلة.

يظهر العنصر <PackageData> في المكان التالي في تدرّج XML الخاص برسائل المعاملات:

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

يتشابه العنصر <PackageData> مع العنصر <RoomData>، ولكنه تصف ميزات الأسعار والمصطلحات التي لا تشكّل جزءًا من الغرفة الفعلية الوصف. يمكنك استخدام <RoomData> و<PackageData> معًا من أجل تقديم تفاصيل عن حزم الغرف وميزات الأسعار. بالنسبة إلى الغرف الفردية التي التي ليست جزءًا من حزمة، استخدم <RoomData> فقط.

يمكنك تحديد كل من العنصرَين <RoomData> و<PackageData> نفس الغرفة أو حزمة الغرفة. وعندما تعرض 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 إذا كانت الحزمة تتضمن الوصول إلى الإنترنت بدون أي رسوم، في حين أن الحزم الأخرى لن تتضمن تلك وسائل الراحة. عدم ضبط هذا بحزم الغرف في فندق يوفر خدمة إنترنت مجانية لجميع غرف. لا ينطبق هذا العنصر على الاتصال السلكي أو اللاسلكي داخل الغرفة الإنترنت غير المتاح في غرف النزلاء. القيم الصالحة هي 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 الحدّ الأقصى لعدد النزلاء المخصصة لحزمة الغرف. على سبيل المثال، قد يتسع جناح كبير لـ 6 أشخاص ويستوعب ما يصل إلى 4 نزلاء فقط.

يجب أن تكون هذه القيمة أقل من أو مساوية العنصر <Capacity>، وهو عدد الأشخاص التي يمكن للغرفة استيعابها فعليًا.

يجب أن تكون قيمة <Occupancy> موجبة. عدد صحيح بين 1 و99، ضمنهما.

إذا حددت هذا العنصر في كل من <RoomBundle> <PackageData>، يتم إعطاء الأولوية للقيمة في <RoomBundle>.

ملاحظة:

قد يكون <Occupancy> مصحوبًا <OccupancyDetails>، الذي يحدد نوع الضيوف (للبالغين أو الأطفال). يمكنك الرجوع إلى <OccupancyDetails> للاطّلاع على البنية ووصف العناصر الفرعية.
<PackageID> Required string

المعرّف الفريد للحزمة. استخدِم هذا المعرّف لمطابقة بيانات حِزمة الغرف التي تتضمّن <Result> عناصر في التعديلات على الأسعار: لمزيد من المعلومات، راجع الغرفة البيانات الوصفية للحِزمة

(يمكنك أيضًا استخدام رقم التعريف هذا للإشارة إلى تعريف حزمة غرف مشتركة. مستخدمة في رسالة معاملة واحدة عند تحديد بيانات حزمة الغرف inline.)

<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 تحديدًا، بالنسبة إلى على سبيل المثال، "تتوفر عمليات رد الأموال حتى الساعة 4:00 مساءً قبل يومين من موعد "تسجيل الوصول". إذا لم يتم ضبط refundable_until_time، يتم إدخال القيمة القيمة الافتراضية على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق الوقت.

عند ضبط السمات، يجب مراعاة ما يلي:

  • إذا لم يكن available أو refundable_until_days المحددة، لا يظهر السعر على أنه قابل للاسترداد.
  • إذا كانت قيمة available هي 0 أو false، ويتم تجاهل التصنيفات الأخرى. لا يظهر السعر على النحو التالي: حتى إذا تم تعيين إحدى السمتين الأخريين أو كلتيهما.
<MembershipBenefits Included> Optional boolean يشمل السعر مزايا حالة النخبة خلال مدة الإقامة. يتضمن المعلمات التالية:
  • ProgramName: اسم برنامج تصنيف النخبة
  • ProgramLevel: مستوى البرنامج. مثل: "الذهب".
  • NightlyValue (optional): قيمة الليلة والمزايا.
<CarRentalIncluded> Optional boolean يشمل السعر خدمة تأجير السيارات مجانًا خلال مدة الإقامة.
<MilesIncluded>&gt; Optional boolean يشمل السعر أميال برنامج المسافر الدائم. وتشمل المَعلمات ما يلي:
  • NumberofMiles: عدد الأميال لكل برنامج رحلة
  • Provider: توفّر بيانات الأميال لبرنامج المسافر الدائم.
<OnPropertyCredit> Optional boolean يشمل السعر الرصيد المتوفر في الفندق (المأكولات و/أو المشروبات غير الكحولية، والمنتجع، والمنتجع الصحي، وغير ذلك). المَعلمة:
  • 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>.

عادةً ما ترسل رسائل "المعاملات" مع تعديلات الأسعار بشكل متكرر. يعتمد مقدار هذا الإجراء وعدد المرات بالضبط على وضع التسليم.

يمكنك استخدام <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> واحدة أو أكثر العناصر التي تطابق عناصر العنصر <PointOfSale> id في ملف الصفحات المقصودة.

إذا لم تقم بتضمين هذا العنصر، فستحصل كل الصفحات المقصودة المحددة في يُعتبر ملف الصفحات المقصودة مؤهلاً لاستخدامه في حجز غُرفة. لمزيد من المعلومات، راجع بنية ملف الصفحات المقصودة.

<Baserate> Optional float

تمثّل هذه السمة سعر الغرفة. قيمة هذا العنصر ما يلي:

  • ضبط سعر الإقامة المزدوجة الأقل تكلفة في الغرف الخاصة التي تقدمها. يُسمح بإشغال أعلى هنا إذا لم يكن لديك بمعدل إشغال المزدوج، وكان حسابك غير مزدوج. الأسعار مفعَّلة. يُرجى التواصل معنا لتفعيل أسعار الإقامة غير المزدوجة. لا يُسمح هنا بأسعار الإقامة الفردية يجب ضبطها ضمن <Rates>.
  • ترك الحقل فارغًا واستخدامه في غرفة مشتركة <RoomBundle>
  • يجب أن تكون هذه القيمة هي إجمالي السعر الأساسي لكل الليالي، وليس متوسط سعر الليلة.

في حال عدم توفّر الغرفة لبرنامج الرحلة، يجب إما حذف <Baserate> أو ضبطه على -1 و<Unavailable> يجب أن يكونا محددة، إلى جانب أي أسباب معروفة لعدم توفرها.

لإزالة حزمة غرفة، يمكنك اتّباع التعليمات الواردة في مقالة إزالة حزمة غرفة.

يجب ألا يحتوي <Baserate> على أي تجميع أرقام. مثل الفاصلة (,) أو النقطة (.). الفصل دائمًا الكسور باستخدام نقطة (.) كعلامة عشرية. على سبيل المثال: يمثل 1,200.40 دولارًا على النحو التالي:

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

يحصل العنصر <Baserate> على ما يلي: السمات الاختيارية:

  • all_inclusive: قيمة منطقية تشير إلى ما إذا كان هذا السعر ويشمل الضرائب والرسوم. بشكل عام، اضبط هذه القيمة على 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 حرف لكل حقل مخصص. بالنسبة مزيد من المعلومات، راجع ملفات الصفحات المقصودة .

<مخصَّص> العناصر المقدّمة في <Rate> لم يتم اكتساب العنصر إلى العنصر <RoomBundle>. عليك تحديد <مخصَّص> بشكل منفصل في كل <RoomBundle>.

<ExpirationTime> Optional DateTime التاريخ والوقت اللذَين يُعتبر فيهما تاريخ انتهاء صلاحية السعر (3 ساعات الحد الأدنى).

ننصحك بعدم تقديم طوابع زمنية لانتهاء الصلاحية إذا ليس بالغ الأهمية في هيكل التسعير

لا تعرض Google أي أسعار انتهت صلاحيتها وأي برنامج رحلة ذات السعر المنتهية الصلاحية ستصبح مؤهّلة للاستفادة منها الاستعلام عن الأسعار المباشرة

<Nights> Required integer عدد الليالي لبرنامج الرحلة. تحدد قيمة يجب أن يكون العنصر <Nights> عددًا صحيحًا موجبًا. إنّ الجمع بين <Nights> و يشكّل <Checkin> برنامج رحلة.
<OtherFees> Optional float تختلف الرسوم الأخرى بخلاف السعر الأساسي والضرائب التي تؤثر في السعر النهائي للغرفة. يأخذ العنصر <OtherFees> هي سمة واحدة مطلوبة، وهي currency، التي تحدد رمز عملة مكوَّن من ثلاثة أحرف للرسوم. مثلاً: USD

يجب إدراج العنصر <OtherFees> في حال: <Baserate> أكبر من صفر.

<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> عند وجود عدة أسعار نفس مجموعة الغرف/برنامج الرحلة أو عندما لا يُسمح بالسعر أن يتم تحديدها على مستوى <Result>. على سبيل المثال، تقوم بتعريف متعددة أسعار الأسعار المشروطة، والأسعار الخاصة الأسعار المشروطة بحزم الغرف أو بإشغالات مختلفة.

ملاحظة: في غضون <Result>، يمكن بأسعار الإقامة الفردية. يمكن تحديدها فقط في <Rates>. يُرجى التواصل معنا للسماح أسعار الإقامة غير المزدوجة

<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:00 مساءً قبل يومين من موعد "تسجيل الوصول". إذا لم يتم ضبط refundable_until_time، يتم إدخال القيمة القيمة الافتراضية على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق الوقت.

عند ضبط السمات، يجب مراعاة ما يلي:

  • إذا لم يكن available أو refundable_until_days المحددة، لا يظهر السعر على أنه قابل للاسترداد.
  • إذا كانت قيمة available هي 0 (أو false)، ويتم تجاهل التصنيفات الأخرى. لا يظهر السعر على النحو التالي: حتى إذا تم تعيين إحدى السمتين الأخريين أو كلتيهما.
<RoomBundle> Optional <RoomBundle> تمثّل هذه السمة حاوية تعرض معلومات عن الأوصاف الفعلية للغرفة وأي حزمة تتضمّن وسائل راحة، وبعض تفاصيل سياسة الشراء الفندق وبرنامج الرحلة.

بشكل عام، يمكنك استخدام هذا العنصر لتحديد سعر الغرفة الأساسية أنواع مختلفة من الغرف داخل نفس الموقع. في حين أنه من الممكن لتحديد أوصاف حزمة الغرف بشكل مضمّن، عليك استخدام رابط رسالة معاملة لتحديد تلك المعلومات. ستخزّن Google بيانات التعريف بحيث يمكنك الرجوع إليها، بدلاً من تكرارها، وتحديثات الأسعار المستقبلية.

<RoomID> Optional string المعرّف الفريد للغرفة لربطها ببيانات الغرفة المحدّدة مسبقًا. كذلك المستخدَمة لتعبئة متغيّر الصفحة المقصودة لـ PARTNER-room-ID. لمزيد من المعلومات، راجع الغرفة البيانات الوصفية للحِزمة
<Tax> Optional float الضرائب التي يتم احتسابها للسعر النهائي للغرفة يأخذ العنصر <Tax> سمة واحدة مطلوبة، currency، الذي يحدّد رمز العملة المكوَّن من ثلاثة أحرف مقابل الضرائب. مثلاً: USD تشير رسالة الأشكال البيانية يجب إدخال عنصر <Tax> إذا <Baserate> أكبر من صفر.

إذا كانت قيمة العنصر <Baserate> "شاملة" صراحةً على "true"، فإن تعيين هذه تكون اختيارية.

<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>، فإنها ترث قيمتها من العنصر الأصلي. فقط &lt;AllowablePointsofSale&gt; مكتسب إلى العنصر <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 حرف لكل حقل مخصص لمزيد من المعلومات، راجع ملفات الصفحات المقصودة.

في حال اختيار <مخصّص> تتوفر في العنصر <Result>، فلن يتم اكتسابها في العنصر <RoomBundle> ويجب تحديده بشكل منفصل لكل عنصر <RoomBundle> أو يمكن تضمينه في <PackageData> إذا احتاجت.

<ExpirationTime> Optional DateTime التاريخ والوقت اللذين يُعتبر فيهما السعر منتهية الصلاحية. هذا النمط العنصر نفس بناء الجملة مثل <ExpirationTime> في <Result>.
<Occupancy> Optional integer

تحدّد هذه السمة الحد الأقصى لعدد النزلاء المسموح بهم في هذا السعر. إذا لم يكن كذلك المحدد، يُفترض أن يكون مطابقًا للسعر الأصلي. قد يكون <Occupancy> مصحوبًا <OccupancyDetails>، والذي يحدد نوع النزلاء (الأشخاص البالغون أو الأطفال). يمكنك الرجوع إلى <OccupancyDetails> للاطّلاع على بنية ووصف التابعة.

<OtherFees> Required float رسوم أخرى غير السعر الأساسي والضرائب التي تؤثّر في السعر النهائي للغرفة. يستخدم هذا العنصر نفس بناء الجملة مثل <OtherFees> في <Result>.

إذا كانت قيمة العنصر <Baserate> "شاملة" صراحةً على "true"، فإن تعيين هذه تكون اختيارية.

<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:00 مساءً قبل يومين من موعد "تسجيل الوصول". إذا لم يتم ضبط refundable_until_time، يتم إدخال القيمة القيمة الافتراضية على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق الوقت.

عند ضبط السمات، يجب مراعاة ما يلي:

  • إذا لم يكن available أو refundable_until_days المحددة، لا يظهر السعر على أنه قابل للاسترداد.
  • إذا كانت قيمة available هي 0 (أو false)، ويتم تجاهل التصنيفات الأخرى. لا يظهر السعر على النحو التالي: حتى إذا تم تعيين إحدى السمتين الأخريين أو كلتيهما.
<Tax> Required float الضرائب التي يتم احتسابها للسعر النهائي للغرفة هذا النمط العنصر الذي يستخدم الصيغة نفسها المستخدمة في <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 حرفًا لكل حقل مخصص. لمزيد من المعلومات، راجع ملفات الصفحة المقصودة.

في حال اختيار <مخصّص> تتوفر في العنصر <Result>، فلن يتم اكتسابها في العنصر <RoomBundle> ويجب تحديده بشكل منفصل لكل عنصر <RoomBundle> أو يمكن تضمينه في <PackageData> إذا احتاجت.

<InternetIncluded> Optional boolean في حال كانت حزمة الغرف تتضمن اتصالاً بالإنترنت بدون أي رسوم، في حين أنّ الحزم الأخرى لن تشمل تلك وسائل الراحة. عدم ضبط هذا بحزم الغرف في فندق يوفر خدمة إنترنت مجانية لجميع غرف. لا ينطبق هذا العنصر على الاتصال السلكي أو اللاسلكي داخل الغرفة الإنترنت غير المتاح في غرف النزلاء.
<Occupancy> Required integer تحدّد هذه السمة الحد الأقصى لعدد النزلاء المسموح بهم في هذا السعر. على سبيل المثال، جناح كبير قد يستوعب 6 نزلاء فعليًا، ولكن "حزمة شهر العسل" ويسمح باستضافة نزيلَين فقط.

يجب أن تكون هذه القيمة أقل من أو مساوية <Capacity>، وهو عدد الأشخاص التي يمكن للغرفة استيعابها فعليًا.

عند تحديد إشغال الصفحة في عنوان URL للصفحة المقصودة، استخدم متغير NUM-ADULTS وNUM-CHILDREN، مثل الموضحة في استخدام "المتغيّرات والشروط". القيمة التلقائية هي 2. البالغين و0 من الأطفال.

يجب أن تكون قيمة <Occupancy> موجبة. عدد صحيح بين 1 و99، ضمنهما.

ملاحظات:

  • <Occupancy> لمدة <RoomBundle> ننصح بشدة بوضع علامة عليه بأنّه مطلوب، وفي حال حذفه وطرح خطأ 1097.
  • تأتي <Occupancy> من كائن البيانات في هذه الترتيب: <RoomBundle>، <PackageData>، ثم = <RoomData> وفي حال عدم وجود قيمة في أي من هذه القيم، تكون القيمة التلقائية هي 2.
  • قد يكون <Occupancy> مصحوبًا <OccupancyDetails>, الذي يحدد نوع الضيوف (أشخاص بالغين أو أطفال). في حال أنواع المدعوّين لم يتم تحديدها، حيث يُفترض أن يكونوا بالغين. استشارة <OccupancyDetails> لبنية العناصر الفرعية ووصفها.
  • عند ضبط <Occupancy> في كليهما <RoomBundle> و<PackageData>، القيمة في <RoomBundle> لها الأسبقية.
<OtherFees> Required float تختلف الرسوم الأخرى بخلاف السعر الأساسي والضرائب التي تؤثر في السعر النهائي للغرفة. يأخذ العنصر <OtherFees> هي سمة واحدة مطلوبة، وهي currency، التي تحدد رمز عملة مكوَّن من ثلاثة أحرف للرسوم. على سبيل المثال، استخدم USD للدولار الأمريكي.
<PackageID> Optional (recommended) string المعرّف الفريد لبيانات الحزمة. استخدِم هذا المعرّف لمطابقة بيانات حِزمة الغرف مع ما تم إرساله في <PackageData> بالنسبة مزيد من المعلومات، راجع الغرفة البيانات الوصفية للحِزمة (أنت يمكن أيضًا استخدام رقم التعريف هذا للإشارة إلى تعريف حِزمة الغرف المشتركة المستخدَم. في رسالة معاملة واحدة عند تحديد بيانات حزمة الغرف inline.)
<ParkingIncluded> Optional boolean سواء كانت حزمة الغرفة تشتمل على موقف سيارات مجانًا، ومكان موقف سيارات سيكون خدمة مدفوعة في هذا الفندق. عدم التحديد قيمة لهذا العنصر في فندق يوفر موقف سيارات مجانيًا.

القيمتان الصالحتان هما 0 (أو false) و 1 (أو true). القيمة الافتراضية هي false

<RatePlanID> Optional string يمثِّل رقم تعريف خطة الأسعار المعرّف الفريد الغرفة والحزمة. على سبيل المثال، إذا كانت قيمة <RoomID> بقيمة 5 وa <PackageID> لـ ABC، يمكنك استخدام قيمة 5-ABC لـ <RatePlanID>. نوصي بشدة باستخدام RatePlanID كمتغير لإنشاء صفحتك المقصودة الديناميكية (المعروف سابقًا باسم نقطة البيع) URL.

لمزيد من المعلومات، راجع يمكن أن يؤدي استخدام المتغيرات الشروط:

<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:00 مساءً قبل يومين من موعد "تسجيل الوصول". إذا لم يتم ضبط 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> -- شخصان بالغان عنصر فرعي واحد -- يتم إرجاعه في <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>

الرد على تقييم الأسعار

يحدّد المثال التالي برنامج رحلة واحد وسعره لشخص بالغ واحد. وطفل واحد. في هذه الحالة، يتم إرجاع <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>

حزمة الغرف

يحدد المثال التالي سعر الإقامة لشخصين بالغين وطفل واحد في ليلتين، مع سعر قابل للاسترداد. هنا، تظهر <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> والتي تكون أن تقتصر على شخصَين بالغَين وطفلَين. هنا، تظهر <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>