مرجع 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 string معرّف فريد لكل رسالة معاملة.
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>

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

<Result> Optional* <Result>

بيانات الأسعار الخاصة ببرنامج رحلة في غرفة أو عنصر <RoomBundle> يحدّد حِزم الغرف وأنواع الغرف الإضافية في المكان المخصّص للاستئجار يمكن أيضًا استخدام العنصر <Result> لإزالة برامج الرحلات من المستودع.

* يجب توفير سمة واحدة على الأقل من <PropertyDataSet> أو <Result>.

أمثلة

بيانات الغرفة

يحدّد المثال التالي بيانات الغرفة في رسالة Transaction:

<?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>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </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>
      </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> للغرفة نفسها أو &quot;حزمة الغرف&quot;. عندما يعرض Google تلك الغرفة أو الحزمة في نتائج البحث، سيضمّن الوصفَين معًا، مع الفصل بينهما بشرطة.

لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

البنية

يستخدم العنصر <RoomData> البنية التالية:

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

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

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

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

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

السمات

لا يحتوي العنصر <RoomData> على أي سمات.

العناصر الفرعية

يحتوي العنصر <RoomData> على العناصر الفرعية التالية:

العنصر الفرعي مطلوب؟ النوع الوصف
<Capacity> Optional integer تمثّل هذه السمة الحدّ الأقصى لعدد الضيوف الذين يمكن أن تستوعبهم الغرفة. بالنسبة إلى غرفة، يجب أن تكون سعة الاستيعاب أكبر من أو تساوي عدد الأشخاص الذين يشغلونها.

عند تحديد هذه القيمة، يجب أن تكون مساوية لقيمة العنصر <Occupancy> أو أكبر منها، وهي عدد الضيوف المقصود في غرفة معيّنة. على سبيل المثال، قد يكون <Capacity> لجناح كبير 6، ولكن <Occupancy> هو 4.

يجب أن تكون قيمة <Capacity> عددًا صحيحًا موجبًا يتراوح بين 1 و20، ضِمنًا.

<Description> Optional Object تقدّم هذه السمة وصفًا تفصيليًا للغرفة. يجب أن يحتوي هذا العنصر على معلومات لا تصفها عناصر أخرى أو العنصر <Name>. يجب عدم استخدام أحرف كبيرة بالكامل عند تحديد وصف الغرفة.

يأخذ العنصر <Description> عنصرًا ثانويًا واحدًا، وهو <Text>، الذي يتضمّن السمتَين المطلوبتَين التاليتَين:

  • text: وصف تفصيلي للغرفة.
  • language: رمز لغة مكوّن من حرفَين، مثلاً، fr.

استخدِم عنصر <Text> منفصلاً لكل لغة قد يظهر بها إعلانك أو رابط الحجز المجاني (مع قيم مختلفة لسمات language).

يعرض المثال التالي نسختَين من وصف الغرفة، إحداهما بالفرنسية والأخرى بالإنجليزية:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string تمثّل هذه السمة اسم فئة الغرفة. يجب أن تتطابق هذه القيمة مع ما يظهر على الصفحة المقصودة الخاصة بالفندق (المعروفة سابقًا باسم نقطة البيع). لا تضبط قيمة هذا العنصر على أحرف كبيرة بالكامل.

يأخذ هذا العنصر عنصرًا ثانويًا واحدًا، <Text>، يحتوي على السمتَين المطلوبتَين التاليتَين:

  • text: اسم الغرفة
  • language: رمز لغة مكوّن من حرفَين، مثلاً، fr.

استخدِم عنصر <Text> منفصلاً لكل لغة قد يظهر بها إعلانك أو رابط الحجز المجاني (مع قيم مختلفة لسمات language).

يعرض المثال التالي نسختَين من اسم الغرفة، إحداهما بالفرنسية والأخرى بالإنجليزية:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer الحد الأقصى لعدد الضيوف المخصّص للغرفة على سبيل المثال، قد يتّسع جناح كبير لـ 6 ضيوف (السعة = 6)، ولكنّه مخصّص لما يصل إلى 4 ضيوف فقط.

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

يجب أن تكون قيمة <Occupancy> عددًا صحيحًا موجبًا بين 1 و99، بما في ذلك الرقمان.

يمكن أن يكون <Occupancy> مصحوبًا بـ <OccupancyDetails>، الذي يحدّد نوع الضيوف (بالغون أو أطفال). راجِع <OccupancyDetails> للاطّلاع على بنية العناصر الثانوية ووصفها.

<OccupancySettings> Optional Object إعدادات يمكنها فرض قيود على متطلبات الإشغال في غرفة أو تعديلها.

يأخذ العنصر <OccupancySettings> العناصر الفرعية التالية:

  • <MinOccupancy>: تمثّل الحد الأدنى لعدد الضيوف الذين يمكنهم الإقامة في غرفة. على سبيل المثال، إذا تم ضبط هذا الخيار على 2، لا يمكن حجز هذه الغرفة لضيف واحد.

    يجب أن تكون قيمة <MinOccupancy> عددًا صحيحًا موجبًا بين 1 و99، بما في ذلك الرقمان.

  • <MinAge>: الحد الأدنى لسن جميع الضيوف المقيمين في غرفة على سبيل المثال، إذا تم ضبط هذا الخيار على 18، لا يمكن حجز هذه الغرفة إلا للمجموعات التي يكون فيها جميع الضيوف بعمر 18 عامًا أو أكثر.

    يجب أن تكون قيمة <MinAge> عددًا صحيحًا موجبًا بين 0 و99، بما في ذلك هذان الرقمَان.

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

ليس من الضروري تضمين جميع العناصر الثانوية.

<PhotoURL> Optional Object تمثّل هذه السمة عنوان URL وتتضمّن وصفًا اختياريًا لصورة الغرفة المحدّدة أو حزمة الغرف. يمكنك تحديد أكثر من <PhotoURL> لغرفة أو حزمة غرف. يجب أن يكون عنوان URL لكل صورة ضمن علامة <PhotoURL> خاصة بها.

يأخذ هذا العنصر العناصر الفرعية التالية:

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

حِزم غرف متعدّدة

يحدّد المثال التالي بيانات وصفية للغرف والحِزم لعدة حِزم RoomBundle:

<?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> للغرفة نفسها أو &quot;حزمة الغرف&quot;. عندما يعرض 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>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <!-- Add Loyalty point information -->
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
      </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 هي true.

لكي تعمل فلاتر الوجبات (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> في تعديلات الأسعار. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحِزم الغرف.

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

<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> Optional boolean يشمل السعر أميالاً في برنامج المسافر الدائم. تشمل المَعلمات ما يلي:
  • NumberOfMiles: عدد الأميال لكل خط سير رحلة
  • Provider: مقدّم أميال برنامج المسافر الدائم
  • LoyaltyCampaignID: معرّف فريد يحدّد "حملة الولاء" المحدّدة التي تم إعدادها وتعديلها باستخدام Google. تضيف هذه الميزة نقاط الولاء إلى سعر الفندق.

    لتضمين العنصر <MilesIncluded>، يجب ضبط رقم تعريف الحملة في إعدادات "حملة برنامج الولاء". يتم تحديد التفاصيل المحدّدة حول كيفية استخدام Google لنقاط الولاء في النتائج من خلال إعدادات "حملة الولاء".

    يحتوي العنصر <MilesIncluded> على عنصر ثانوي <NumberOfMiles> يحسب عدد النقاط المكتسبة. في حال عدم ضبط <NumberOfMiles>، يتم تحديد النقاط المكتسبة من خلال إعدادات &quot;حملة الولاء&quot;.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • ملاحظة: <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>

حِزم غرف متعدّدة

يحدّد المثال التالي بيانات وصفية للغرف والحِزم لعدة حِزم RoomBundle:

<?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>
        <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      </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. -->
    <!-- Child occupancy rates should only be sent through Live pricing
         with context and not through Pull or Changed pricing -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

    <MilesIncluded>
      <NumberOfMiles>integer</NumberOfMiles>
      <Provider>
        <Text language="en" text="provider-name">
      </Provider>
      <!-- Add Loyalty point information -->
      <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
  ...
  </Transaction>

السمات

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

السمة مطلوب؟ النوع الوصف
mergeable Optional boolean تلقائيًا، ستؤدي الأسعار الجديدة لفندق وبرنامج رحلة محدّدين إلى استبدال أي أسعار سابقة (غير منتهية الصلاحية) مخزّنة في ذاكرة التخزين المؤقت من Google. تتيح لك السمة mergeable تخزين أسعار إضافية في ذاكرة التخزين المؤقت من Google بدون حذف معلومات الأسعار السابقة. ستتضمّن الردود على طلبات البحث المباشر عن الأسعار مع السياق دائمًا هذه السمة بقيمة true (بغض النظر عن الرد على رسالة المعاملة).

العناصر الفرعية

يحتوي العنصر <Result> على العناصر الفرعية التالية:

العنصر الفرعي مطلوب؟ النوع الوصف
<AllowablePointsOfSale> Optional Object صفحة مقصودة واحدة أو أكثر مؤهَّلة للفندق الصفحة المقصودة هي موقع إلكتروني يمكنه التعامل مع عملية الحجز للمستخدم النهائي. لتضمين صفحات مقصودة معيّنة بشكل صريح (واستبعاد غيرها)، أضِف عنصرًا واحدًا أو أكثر من عناصر <AllowablePointsOfSale> التي تتطابق مع سمة id الخاصة بعنصر <PointOfSale> في ملف الصفحات المقصودة.

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

<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> مسار رحلة.
Optional string مهملة: تحدّد هذه السمة حقلاً مخصّصًا يمكنك استخدامه لتمرير بيانات إضافية مرتبطة بفندق. يمكنك إدخال ما يصل إلى خمس قيم مخصّصة باستخدام أسماء العناصر التالية:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

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

ملاحظة مهمة: يُرجى التواصل مع مدير الحساب الفني (TAM) إذا كنت تريد استخدام متغيرات CUSTOM.

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

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

لا تعرض Google أي أسعار منتهية الصلاحية، وسيصبح أي برنامج رحلة يتضمّن سعرًا منتهي الصلاحية مؤهلاً للاستفادة من ميزة الاستعلام عن السعر في الوقت الفعلي.

<MilesIncluded> Optional boolean يشمل السعر أميالاً في برنامج المسافر الدائم. تشمل المَعلمات ما يلي:
  • NumberOfMiles: عدد الأميال لكل خط سير رحلة
  • Provider: مقدّم أميال برنامج المسافر الدائم
  • LoyaltyCampaignID: معرّف فريد يحدّد "حملة الولاء" المحدّدة التي تم إعدادها وتعديلها باستخدام Google. تضيف هذه الميزة نقاط الولاء إلى سعر الفندق.

    لتضمين العنصر <MilesIncluded>، يجب ضبط رقم تعريف الحملة في إعدادات &quot;حملة برنامج الولاء&quot;. يتم تحديد التفاصيل المحدّدة حول كيفية استخدام Google لنقاط الولاء في النتائج من خلال إعدادات &quot;حملة الولاء&quot;.

    يحتوي العنصر <MilesIncluded> على عنصر ثانوي <NumberOfMiles> يحسب عدد النقاط المكتسبة. في حال عدم ضبط <NumberOfMiles>، يتم تحديد النقاط المكتسبة من خلال إعدادات &quot;حملة الولاء&quot;.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • ملاحظة: <NumberOfMiles> و<Provider> اختياريان.

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

نقطة أساسية: يجب إرسال أسعار الإقامة للأطفال من خلال ميزة &quot;الأسعار المباشرة مع السياق&quot; فقط، وليس من خلال ميزة &quot;طلب البيانات&quot; أو &quot;تغيير في السعر&quot;.

ملاحظة: تواصَل مع فريق الدعم لتفعيل ميزة إرسال أسعار غير مزدوجة الإشغال.

<PackageID> Optional string المعرّف الفريد للحزمة لربطها ببيانات الحزمة المحدّدة مسبقًا يُستخدَم أيضًا لتعبئة متغيّر الصفحة المقصودة الخاص بمعرّف الحزمة PACKAGE-ID. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحِزم الغرف.

يجب تضمين <RoomBundle> لتحديد <PackageID> و<RoomID> في العنصر <Result>. ومع ذلك، يُفضّل تحديد أرقام تعريف الحِزم والغرف ضمن العنصر <RoomBundle> فقط بدلاً من العنصر <Result>.

<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> حاوية تتضمّن معلومات عن الأوصاف المادية للغرفة، وأي حزم من وسائل الراحة، وبعض تفاصيل سياسة الشراء للفندق وبرنامج الرحلة المحدّدَين.

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

<RoomID> Optional string المعرّف الفريد للغرفة لربطها ببيانات الغرفة المحدّدة مسبقًا. تُستخدَم أيضًا لتعبئة متغيّر الصفحة المقصودة PARTNER-ROOM-ID. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحِزم الغرف.

يجب تضمين <RoomBundle> لتحديد <PackageID> و<RoomID> في العنصر <Result>. ومع ذلك، يُفضّل تحديد أرقام تعريف الحِزم والغرف ضمن العنصر <RoomBundle> فقط بدلاً من العنصر <Result>.

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

إذا تم ضبط السمة "all_inclusive" في العنصر <Baserate> بشكل صريح على "صحيح"، يصبح ضبط هذه القيمة اختياريًا.

<Unavailable> Optional Object تشير هذه السمة إلى أنّ برنامج الرحلة غير متاح للحجز. تعمل هذه السمة كحاوية تتضمّن أسبابًا أكثر تفصيلاً لعدم توفّر خطة الرحلة. قد يتم تضمين سبب واحد أو أكثر من أسباب عدم التوفّر التالية ضمن العلامة <Unavailable>:
  • <NoVacancy/>: لا تتوفّر غرف أخرى للبيع لمدة ليلة واحدة أو أكثر من مدة الإقامة.
  • <MinNightStay value=N/>: كان برنامج الرحلة أقل من الحد الأدنى لعدد ليالي الإقامة البالغ N لتاريخَي الإقامة.
  • <MaxNightStay value=N/>: كان برنامج الرحلة يتجاوز الحدّ الأقصى لعدد ليالي الإقامة البالغ N لتاريخَي الإقامة.
  • <MinAdvancePurchase value=N/>: كان برنامج الرحلة أقل من الحد الأدنى لفترة الحجز المُسبَق البالغ N يومًا لتواريخ الإقامة.
  • <MaxAdvancePurchase value=N/>: كان برنامج الرحلة خارج نطاق الحد الأقصى لفترة الحجز المُسبَق البالغ N يومًا لتاريخَي الإقامة.
  • <ClosedToArrival/>: لا يسمح المكان المخصّص للاستئجار بتسجيل الوصول في تاريخ الوصول المحدّد في برنامج الرحلة.
  • <ClosedToDeparture/>: لا يسمح المكان المخصّص للاستئجار بتسجيل المغادرة في تاريخ المغادرة المحدّد في برنامج الرحلة.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: المكان المخصّص للاستئجار مغلق خلال جزء من فترة الإقامة أو كلها. تحدّد السمتان المقترَحتان first_open وfirst_closed أول تواريخ أكبر من أو تساوي تاريخ الوصول، ويكون المكان المخصّص للاستئجار مفتوحًا أو مغلقًا في هذه التواريخ، على التوالي. بالنسبة إلى مكان الإقامة الذي يتم إغلاقه بعد تاريخ الوصول، يجب أن تكون قيمة first_open مساوية لتاريخ الوصول، وأن تكون قيمة first_closed هي تاريخ إغلاق مكان الإقامة. بالنسبة إلى مكان إقامة مغلق في تاريخ الوصول، يجب أن تكون قيمة first_closed مساوية لتاريخ الوصول، وأن تكون قيمة first_opened هي التاريخ التالي الذي يكون فيه مكان الإقامة مفتوحًا.
  • <NotFetched/>: لم يتم تقديم سعر لبرنامج الرحلة من خلال مصادر البيانات النهائية.
  • <InvalidProperty/>: لم يتم التعرّف على معرّف الموقع المطلوب.
  • <InvalidOccupancy/>: لا يتيح المكان المخصّص للاستئجار عدد الأشخاص المطلوب.
  • <PriceIssue/>: حدثت مشكلة في السعر أدّت إلى عدم إرساله.
  • <InternalError reason=""/>: حدث خطأ غير مصنّف. يمكن لسمة السبب الاختيارية أن تعرض الخطأ كنص.
  • <OtherRestriction restriction=""/>: لم يكن برنامج الرحلة متاحًا بسبب بعض القيود غير المحدّدة على الحجز. تتيح سمة الحظر الاختيارية إمكانية تسجيل الحظر كنص.

أمثلة

مثال على مواقع متعدّدة

يحدّد المثال التالي برنامج رحلة واحدًا وسعره لمكانَين مخصّصَين للاستئجار:

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

لا يعرض هذا المثال تفاصيل حول الغرفة، مثل الوصف والصورة والتعليق التوضيحي واسم الغرفة وسعتها.

يمكنك تحديد هذه المعلومات مرة واحدة في رسالة 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>، سيتم اكتساب قيمتها من العنصر الرئيسي. يتم توريث العنصر <AllowablePointsofSale> فقط إلى العنصر <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>
          ...
        <MilesIncluded>
          <NumberOfMiles>integer</NumberOfMiles>
          <Provider>
            <Text language="en" text="provider-name">
          </Provider>
          <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
        </MilesIncluded>
          ...
      </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>.
Optional string تم إيقافها نهائيًا: حقول مخصّصة يمكنك استخدامها لتمرير بيانات إضافية مرتبطة بفندق إلى صفحة مقصودة. يستخدم هذا العنصر بنية الجملة نفسها المستخدَمة في <Custom[1‑5]> ضمن <Result>. يبلغ الحدّ الأقصى لعدد الأحرف المسموح به لكلّ حقل مخصّص 200 حرف. لمزيد من المعلومات، يُرجى الاطّلاع على ملفات الصفحات المقصودة. في حال توفير عناصر <Custom> في العنصر <Result>، لن يتم تضمينها في العنصر <RoomBundle>، ويجب تحديدها بشكل منفصل لكل <RoomBundle>، أو يمكن تضمينها في <PackageData> إذا لزم الأمر.

ملاحظة مهمة: يُرجى التواصل مع مدير الحساب الفني (TAM) إذا كنت تريد استخدام متغيرات CUSTOM.

<ExpirationTime> Optional DateTime التاريخ والوقت اللذان يُعتبر فيهما السعر منتهي الصلاحية يستخدم هذا العنصر البنية نفسها المستخدَمة في <ExpirationTime> ضمن <Result>.
<MilesIncluded> Optional boolean يشمل السعر أميالاً في برنامج المسافر الدائم. تشمل المَعلمات ما يلي:
  • NumberOfMiles: عدد الأميال لكل خط سير رحلة
  • Provider: مقدّم أميال برنامج المسافر الدائم
  • LoyaltyCampaignID: معرّف فريد يحدّد "حملة الولاء" المحدّدة التي تم إعدادها وتعديلها باستخدام Google. تضيف هذه الميزة نقاط الولاء إلى سعر الفندق.

    لتضمين العنصر <MilesIncluded>، يجب ضبط رقم تعريف الحملة في إعدادات &quot;حملة برنامج الولاء&quot;. يتم تحديد التفاصيل المحدّدة حول كيفية استخدام Google لنقاط الولاء في النتائج من خلال إعدادات &quot;حملة الولاء&quot;.

    يحتوي العنصر <MilesIncluded> على عنصر ثانوي <NumberOfMiles> يحسب عدد النقاط المكتسبة. في حال عدم ضبط <NumberOfMiles>، يتم تحديد النقاط المكتسبة من خلال إعدادات &quot;حملة الولاء&quot;.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • ملاحظة: <NumberOfMiles> و<Provider> اختياريان.

<Occupancy> Optional integer

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

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

إذا تم ضبط السمة "all_inclusive" في العنصر <Baserate> بشكل صريح على "صحيح"، يصبح ضبط هذه القيمة اختياريًا.

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

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

      <!-- Add Loyalty point information -->
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>>
      </MilesIncluded>

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

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

السمات

لا يحتوي العنصر <RoomBundle> على أي سمات.

العناصر الفرعية

يحتوي العنصر <RoomBundle> على العناصر الفرعية التالية:

العنصر الفرعي مطلوب؟ النوع الوصف
<Baserate> Required float تحدّد هذه السمة سعر حزمة الغرف للإقامة. يستخدم هذا العنصر البنية نفسها التي تستخدمها <Baserate> في <Result>، مع الاستثناء التالي:
  • عندما تكون الغرفة غير متاحة في خطة الرحلة، أزِل العنصر <RoomBundle> للإشارة إلى أنّ الغرفة لم تعُد متوفّرة. لمزيد من المعلومات، يُرجى الاطّلاع على إزالة حزمة غرف.
<BreakfastIncluded> Optional boolean تحدّد هذه السمة ما إذا كانت حزمة الغرف هذه تشمل وجبة الفطور مع السعر.
<ChargeCurrency> Optional enum وقت ومكان دفع المستخدم مقابل الحجز يستخدم هذا العنصر بنية مماثلة لبنية <ChargeCurrency> في <Result>.

تكون القيمة التلقائية web.

Optional string تم إيقافها نهائيًا: الحقول المخصّصة لتمرير بيانات إضافية إلى الصفحات المقصودة الخاصة بحزمة الغرف تستخدِم هذه العناصر بنية الجملة نفسها المستخدَمة في <Custom[1-5]> ضمن <Result>. يبلغ الحد الأقصى لعدد الأحرف المسموح به لكل حقل مخصّص 200 حرف. لمزيد من المعلومات، يُرجى الاطّلاع على ملفات الصفحات المقصودة. لا يتم إدراج المتغيّرات المخصّصة إلا عند إرسال الأسعار في رسالة المعاملة. في حال توفير عناصر <Custom> في العنصر <Result>، لن يتم تضمينها في العنصر <RoomBundle>، ويجب تحديدها بشكل منفصل لكل <RoomBundle>، أو يمكن تضمينها في <PackageData> إذا لزم الأمر.

ملاحظة مهمة: يُرجى التواصل مع مدير الحساب الفني (TAM) إذا كنت تريد استخدام متغيرات CUSTOM.

<InternetIncluded> Optional boolean إذا كانت "حزمة الغرفة" تتضمّن خدمة الوصول إلى الإنترنت بدون رسوم، بينما لا تتضمّن الحِزم الأخرى هذه الميزة. لا تضبط هذا العنصر لحِزم الغرف في فندق يوفّر خدمة إنترنت مجانية في جميع الغرف. لا ينطبق هذا العنصر على خدمة الإنترنت السلكية أو اللاسلكية المتوفّرة في الغرف فقط.
<MilesIncluded> Optional boolean يشمل السعر أميالاً في برنامج المسافر الدائم. تشمل المَعلمات ما يلي:
  • NumberOfMiles: عدد الأميال لكل خط سير رحلة
  • Provider: مقدّم أميال برنامج المسافر الدائم
  • LoyaltyCampaignID: معرّف فريد يحدّد "حملة الولاء" المحدّدة التي تم إعدادها وتعديلها باستخدام Google. تضيف هذه الميزة نقاط الولاء إلى سعر الفندق.

    لتضمين رقم تعريف <MilesIncluded> حملة، يجب ضبطه في إعدادات "حملة برنامج الولاء". يتم تحديد التفاصيل المحدّدة حول كيفية استخدام Google لنقاط الولاء في النتائج من خلال إعدادات "حملة الولاء".

    يحتوي العنصر <MilesIncluded> على عنصر ثانوي <NumberOfMiles> يحسب عدد النقاط المكتسبة. في حال عدم ضبط <NumberOfMiles>، يتم تحديد النقاط المكتسبة من خلال إعدادات &quot;حملة الولاء&quot;.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • ملاحظة: <NumberOfMiles> و<Provider> اختياريان.

<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>. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف. (يمكنك أيضًا استخدام هذا المعرّف للإشارة إلى تعريف حزمة غرفة شائع مستخدَم في رسالة معاملة واحدة عند تحديد بيانات حزمة الغرفة بشكل مضمّن).
<ParkingIncluded> Optional boolean تُستخدَم لتحديد ما إذا كانت حزمة الغرفة تشمل موقفًا للسيارات بدون رسوم، في حين أنّ موقف السيارات يكون عادةً خدمة مدفوعة في هذا الفندق. لا تحدّد قيمة لهذا العنصر إذا كان الفندق يوفّر مواقف مجانية للسيارات.

القيم الصالحة هي 0 (أو false) و1 (أو true)، والقيمة التلقائية هي false.

<RatePlanID> Optional string يمثّل معرّف خطة الأسعار المعرّف الفريد لمجموعة من الغرف والحزم. على سبيل المثال، إذا كانت قيمة <RoomID> هي 5 وقيمة <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>. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف. (يمكنك أيضًا استخدام هذا المعرّف للإشارة إلى تعريف غرفة مشتركة في رسالة Transaction واحدة عند تحديد بيانات الغرفة بشكل مضمّن).
<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>


حِزم غرف متعدّدة

يضبط المثال التالي قيمة Occupancy في حِزم غرف متعددة لتوضيح الأسعار المحتملة لغرف النزل.

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

      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

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

عندما يظهر العنصران <Occupancy> و<OccupancyDetails> ضمن العنصر <Rates> الخاص بالعنصرين <Result> أو <RoomBundle>، يعني ذلك أنّ السعر مقيّد بتفاصيل الإشغال.

إذا أدرجت <OccupancyDetails> في <RoomBundle>، بالإضافة إلى عنصر <Rate> متداخل، لن تتمكّن من إرسال <Occupancy> أساسي ضمن <Rate>، بل يُنصح باستخدام أحد الخيارات التالية:

  • إغفال معلومات الإشغال من <Rate>: في هذه الحالة، يكتسب <Rate> <OccupancyDetails> مباشرةً من <RoomBundle>

أو،

  • مكرّر <OccupancyDetails>: في هذه الحالة، أرسِل <OccupancyDetails> إضافيًا مطابقًا في كل من العنصر <RoomBundle> والعنصر <Rate> المتداخل.

البنية

عند ظهور <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>
        <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>
      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>