مرجع 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>

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

<Result> Optional* <Result>

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

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

أمثلة

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

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

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

بيانات الأسعار

يحدِّد المثال التالي بيانات الأسعار في رسالة "معاملة":

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

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

يحدِّد المثال التالي بيانات الأسعار لعدد ليالٍ من ليلة واحدة إلى 7 ليالٍ بدءًا من 7 حزيران (يونيو) 2023:

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


الأسعار الأساسية والمشروطة

يعرض المثال التالي رسالة معاملة تحتوي على قاعدة سعر وسعر شَرطي:

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

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

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

  </Result>
</Transaction>

إزالة المستودع

يزيل المثال التالي عدة مستودعات (إقامة لمدة ليلة واحدة في تواريخ مختلفة) لفندق من المستودع:

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

<PropertyDataSet>

حاوية لمعلومات الغرفة والحزمة (أو حزمة الغرفة) في رسالة <Transaction> تلغي القيم المحدّدة للفندق القيم المحدّدة للشريك. تخزّن Google هذه المعلومات كي لا تحتاج إلى تحديدها في كل مرة تتم فيها إرسال تعديلات الأسعار.

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

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

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

البنية

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

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

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

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

السمات

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

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

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

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

يمكنك الإشارة إلى رقم تعريف الحزمة في تعديلات الأسعار.

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

<Property> Required string رقم تعريف الفندق الذي تنطبق عليه البيانات المرتبطة. يجب أن تكون قيمة هذا العنصر سلسلة تتطابق مع القيمة <id> للبيانات في خلاصة بيانات الفنادق.
<RoomData> Optional* <RoomData> يصف غرفة. تكون هذه البيانات مرتبطة بشريك وفندق، ولكنّها لا تكون مرتبطة ببرنامج رحلات.

يمكنك الإشارة إلى رقم تعريف الغرفة في تعديلات الأسعار.

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

أمثلة

بيانات الغرف والحِزم

يوضّح المثال التالي بيانات الغرفة والحزمة في <PropertyDataSet>:

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

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

<RoomData>

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

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

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

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

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

يمكنك تحديد كل من العنصرَين <RoomData> و<PackageData> لغرفة أو حزمة غرف مماثلة. عندما تعرض Google هذه الغرفة أو الحزمة في نتائج البحث، ستتضمّن الأوصاف من كليهما، مفصولة بعلامة واصلة.

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

البنية

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

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

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

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

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

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

السمات

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

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

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

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

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

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

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

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

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

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

يعرض المثال التالي نسختَين باللغة الفرنسية والإنجليزية من وصف الغرفة:

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

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

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

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

يعرض المثال التالي نسختَي اسم الغرفة باللغة الفرنسية والإنجليزية:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer الحد الأقصى لعدد النزلاء الذين يمكن استضافتهم في الغرفة على سبيل المثال، قد يكون بإمكان جناح كبير استيعاب 6 نزلاء (السعة = 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>

حزم الغرف المتعددة

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

<?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 rooms، اتّبِع المثال التالي:

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

<PackageData>

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

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

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

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

يمكنك تحديد كل من عنصرَي <RoomData> و<PackageData> للغرفة أو حزمة الغرف نفسها. عندما تعرض Google هذه الغرفة أو الحزمة في نتائج البحث، ستتضمّن الأوصاف من كليهما، مفصولة بعلامة واصلة.

إذا عدّلت عنصرًا واحدًا من <PackageData> لموقع، يجب تعديل جميع عناصر <PackageData> و<RoomData> للموقع. يُعدّ كلّ <PropertyDataSet> كلّ البيانات عن الموقع، ويؤدي إلى استبدال أيّ بيانات حالية.

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

البنية

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

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

السمات

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

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

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

العنصر الفرعي مطلوب؟ النوع الوصف
<BreakfastIncluded> Optional boolean لتحديد ما إذا كانت هذه الحزمة تشمل وجبة الفطور مع السعر القيم الصالحة هي 0 (أو false) و1 (أو true).

يُفضَّل استخدام <Meals> بدلاً من <BreakfastIncluded>.

<ChargeCurrency> Optional enum وقت ومكان دفع المستخدم مقابل الحجز يستخدم هذا العنصر البنية نفسها المستخدَمة في <ChargeCurrency> في <Result>.

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

<CheckinTime> Optional Time أقرب وقت ممكن لتسجيل الوصول يجب أن يكون الوقت أقل من 24:00 بالتوقيت المحلي للفندق.
<CheckoutTime> Optional Time آخر وقت ممكن للمغادرة بالتوقيت المحلي للفندق
<Description> Optional Object وصف تفصيلي للحزمة يجب أن يحتوي هذا العنصر على معلومات لا تصفها عناصر أخرى أو العنصر <Name>. يجب عدم استخدام الأحرف الكبيرة بالكامل عند تحديد وصف الغرفة.

يقبل عنصر <Description> عنصرًا واحدًا ثانويًا، وهو <Text>، الذي يحتوي على سمتَين مطلوبتَين، text وlanguage. سمة text هي الوصف، وسمة language تحدّد رمز لغة مكوّنًا من حرفَين، كما يوضّح المثال التالي:

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean إذا كانت إحدى الحزم تتضمّن إمكانية الوصول إلى الإنترنت بدون أي رسوم، في حين أنّ الحزم الأخرى لن تتضمّن هذه الميزة. لا تضبط هذا العنصر لحِزم الغرف في فندق يقدّم خدمة إنترنت مجانية في كل الغرف. لا ينطبق هذا العنصر على الإنترنت السلكي في الغرف أو الإنترنت اللاسلكي الذي لا يتوفّر في غرف النزلاء. القيم الصالحة هي 0 (أو false) و1 (أو true).
<Meals> Optional Object يحتوي على معلومات عن الوجبات في هذه الحزمة.

يقبل العنصر <Meals> عنصرَين ثانويَين اختياريَين ، وهما <Breakfast> و<Dinner>، اللذان تتضمّنان السمتَين التاليتَين:

  • included (مطلوبة): اضبطها على 1 (أو true) إذا كان السعر يشمل وجبة الفطور أو العشاء، وإلا اضبطها على 0 أو false.
  • in_room (اختياري): اضبط القيمة على 1 (أو true) إذا كان بإمكان النزلاء تناول وجبة الإفطار أو العشاء في الغرفة التي يقيمونها فيها، وإلا اضبط القيمة على 0 (أو false).
  • in_private_space (اختياري): اضبط القيمة على 1 (أو true) إذا كان بإمكان النزلاء تناول وجبة الإفطار أو العشاء في مساحة (باستثناء الغرفة التي يقيمون فيها) يمكنهم فيها تجنُّب مخالطة النزلاء الآخرين، وإلا اضبط القيمة على 0 (أو false).
  • buffet (اختياري): اضبط القيمة على 1 (أو true) إذا كان يتم تقديم وجبة الفطور أو العشاء في بوفيه، وإلا اضبط القيمة على 0 (أو false).

لا يتم استخدام السمات الاختيارية إلا عندما تكون قيمةincluded صحيحة.

لكي تعمل فلاتر الوجبات (no meals وbreakfast only dinner only وbreakfast and dinner)، يجب أن يتم تزويد كل من <Breakfast> و<Dinner> بسمة included.

<Name> Required string اسم الحزمة يجب أن تتطابق هذه القيمة مع القيمة الظاهرة في الصفحة المقصودة للفندق. لا تضبط قيمة هذا العنصر على أبجدية بأحرف كبيرة.

يقبل هذا العنصر عنصرًا ثانويًا واحدًا، وهو <Text>، الذي يحتوي على سمتَين، وهما text وlanguage. سمة text هي الوصف، وسمة language تحدّد رمز لغة مكوّنًا من حرفَين، كما يوضّح المثال التالي:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer الحد الأقصى لعدد النزلاء الذين تستهدفهم حزمة الغرف على سبيل المثال، قد يكون بإمكان جناح كبير استيعاب 6 نزلاء، ولكنّه مخصّص لما يصل إلى 4 نزلاء فقط.

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

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

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

ملاحظة:

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

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

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

<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 للإشارة إلى ما إذا كان السعر يسمح بحصول العميل على refund (استرداد) كامل، وإلا اضبطها على 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: الميزات التي يوفّرها برنامج المسافر الدائم
<OnPropertyCredit> Optional boolean يشمل السعر رصيدًا داخل الفندق (للطعام والشراب والمنتجع الصحي وما إلى ذلك). المَعلمة:
  • Amount: قيمة الرصيد لكل مسار، بالعملة المحلية
<AirportTransportationIncluded> Optional Object يشمل السعر خدمة نقل مجانية من/إلى مطار قريب. وتحدّد السمة الاختيارية direction اتجاه النقل. تشمل القيم الصالحة ما يلي:
    from: تتوفر خدمة نقل من المطار إلى الفندق. هذه هي القيمة التلقائية في حال عدم تحديد أي اتجاه. ‫to: تتوفر خدمة نقل من الفندق إلى المطار. round_trip: تتوفّر خدمة نقل من وإلى المطار.

أمثلة

حزمة غرفة واحدة

يحدِّد المثال التالي حزمة غرفة واحدة، بسعة سكن شخصَين (شخص بالغ وطفل واحد)، وتشمل وجبة الفطور:

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

البيانات الوصفية للغرف والحزم

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

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

حزم الغرف المتعددة

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

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


حزمة غرف تتضمّن الأسعار

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

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

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

الوجبات والصور

يحدِّد المثال التالي البيانات الوصفية للغرفة والحزمة الخاصة بالوجبات والصور وأوقات تسجيل الوصول والمغادرة:

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

فطور

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

<Result>

حاوية لتعديلات الأسعار ومدى التوفّر في رسالة <Transaction>

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

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

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

تُرسِل عادةً رسائل المعاملات التي تتضمّن تعديلات على الأسعار بشكل متكرّر جدًا. تعتمد الطريقة التي تُجري بها ذلك وعدد المرات التي تُجري فيها ذلك على وضع التسليم.

يمكنك استخدام <Result> في رسالة "المعاملة" لإزالة برامج الرحلات، كما هو описан في إزالة المستودع. لمزيد من المعلومات عن استخدام رسائل المعاملات لتعديل الأسعار و مدى التوفّر، اطّلِع على مقالة إضافة المستودع وتعديله.

يمكن أن تتضمّن رسالة معاملة واحدة أي عدد من عناصر<Result> ، ما دام حجم الرسالة لا يتجاوز 100 ميغابايت.

البنية

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

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

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

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

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

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

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

السمات

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

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

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

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

العنصر الفرعي مطلوب؟ النوع الوصف
<AllowablePointsOfSale> Optional Object صفحة مقصودة واحدة أو أكثر مؤهَّلة للفندق الصفحة المقصودة هي موقع إلكتروني يمكنه معالجة عملية الحجز العميل النهائي. لتضمين صفحة مقصودة معيّنة صراحةً (واستبعاد الصفحات الأخرى)، أضِف عنصرًا واحدًا أو أكثر من عناصر <AllowablePointsOfSale> التي تتطابق مع سمة 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> معًا مسار رحلة.
<Custom[1‑5]> Optional string يحدِّد حقلًا مخصّصًا يمكنك استخدامه لتمرير بيانات إضافية مرتبطة بفندق. يمكنك ضبط ما يصل إلى خمس قيم مخصّصة باستخدام أسماء العناصر التالية:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

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

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

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

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

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

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

يجب استخدام العنصر <OtherFees> إذا كانت قيمة <Baserate> أكبر من صفر.

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

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

<PackageID> Optional string المعرّف الفريد للحزمة لربطها ببيانات الحزمة المحدّدة مسبقًا يُستخدَم أيضًا لتعبئة متغيّر الصفحة المقصودة PACKAGE-ID. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة المجموعة.
<Property> Required string رقم تعريف الفندق المتأثّر بالبيانات المرتبطة (السعر أو برنامج الرحلة أو حزمة الغرف أو البيانات الوصفية). يجب أن تكون قيمة هذا العنصر سلسلة. يجب أن تتطابق قيمة هذا العنصر مع بيانات الفندق <id> التي حدّدتها في خلاصة بيانات الفنادق.
<Rates> Optional <Rates> حاوية لوحدة <Rate> واحدة أو أكثر يحدّد كل <Rate> في <Rates> سعرًا مختلفًا لمجموعة الغرفة/برنامج الرحلة.

استخدِم العنصر <Rates> عندما تكون هناك أسعار متعدّدة لمزيج الغرفة/البرنامج نفسه أو عندما لا يُسمح تحديد سعر على مستوى <Result>. على سبيل المثال، يمكنك تحديد عدة أسعار للأسعار المشروطة، الأسعار الخاصة، الأسعار المشروطة في حِزم الغرف، أو حالات الإشغال المختلفة.

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

<Refundable> Optional Object يتيح هذا الخيار عرض سعر على أنّه قابل للاسترداد بالكامل أو يتيح الإلغاء مجانًا. وفي حال عدم تقديمها، لن يتم عرض أي معلومات عن ردّ الأموال. تلغي سياسة ردّ الأموال على مستوى <PackageData> سياسة ردّ الأموال على مستوى <Result>. تلغي سياسة ردّ الأموال على مستوى <Rates> سياسة ردّ الأموال على مستوى <PackageData>. يمكن أيضًا تمييز الأسعار القابلة للاسترداد للمستخدمين من خلال خيارات بديلة بدون تعديل مخطّط رسالة المعاملة مباشرةً. مزيد من المعلومات حول سياسة الأسعار القابلة للاسترداد

يعرض المثال التالي العنصر <Refundable> مع ضبط جميع سماته:

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

ملاحظة: ننصحك بضبط جميع السمات. يتم إنشاء رسالة تحذير بشأن حالة الخلاصة عند عدم ضبط سمة واحدة أو أكثر.

في حال عدم ضبط أيّ سمات، لن يظهر السعر على أنّه قابل للاسترداد. السمات هي:

  • available: (سمة مطلوبة) اضبطها على 1 (أو true) للإشارة إلى ما إذا كان السعر يسمح بتقديم طلب لاسترداد المبلغ المدفوع بالكامل، وإلا اضبطها على 0 (أو false).
  • refundable_until_days: (سمة مطلوبة إذا كان available يساوي true) لتحديد عدد الأيام قبل تسجيل الوصول التي يمكن فيها طلب استرداد المبلغ المدفوع بالكامل يجب أن تكون قيمة refundable_until_days عددًا صحيحًا يتراوح بين 0 و330، بما في ذلك هذين الرقمَين.
  • refundable_until_time: (ننصح بشدة باستخدام هذا الحقل إذا كان available يساوي true) لتحديد آخر وقت بالتوقيت المحلي للفندق يمكن فيه قبول طلب ردّ المبالغ المدفوعة بالكامل. يمكن دمج ذلك مع refundable_until_days لتحديد، مثلاً، "تتوفّر إمكانية ردّ الأموال حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول". إذا لم يتم ضبط refundable_until_time، تكون القيمة التلقائية هي منتصف الليل.

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

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

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

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

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

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

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

أمثلة

مثال على موقع إلكتروني يضمّ عدة مواقع

يحدِّد المثال التالي برنامج رحلة واحدًا وأسعاره لمواقع تعذُّر.

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

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

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

مثال على الأسعار المتعدّدة

يحدِّد المثال التالي برنامجًا وفندقًا واحدَين برسوم إقامة متعددة لمختلف فئات الإشغال. يمكن استخدام العنصر <Rates> لتحديد أسعار متعددة لفندق معيّن. يمكن استخدام المثال التالي أيضًا في ما يتعلّق بالأماكن المخصّصة للاستئجار:

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

مثال على عدم التوفّر

يحدِّد المثال التالي برنامج رحلة يتعذّر retrieving الحصول على معلومات حول مدى توفّره من القنوات في مرحلة ما بعد المعالجة، وبرنامج رحلة آخر يقلّ عن الحد الأدنى للإقامة لمدة ليلة واحدة وسبق أن تم حجزه في التواريخ المحدّدة، وبرنامج رحلة ثالث يكون فيه الفندق مغلقًا في تاريخ الوصول، ولكنّه يفتح خلال فترة الإقامة:

<?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>
          ...
        <Custom[1-5]>custom_value</Custom[1-5]>
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

السمات

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

السمة مطلوب؟ الوصف
rate_rule_id Optional بالنسبة إلى الأسعار المشروطة، يطابق هذا المعرّف سعرًا مع تعريف فيملف تعريف قاعدة السعر. عدد الأحرف المسموح به في هذا الحقل هو 40 حرفًا.

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

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

العنصر الفرعي مطلوب؟ النوع الوصف
<AllowablePointsOfSale> Optional Object صفحة مقصودة واحدة أو أكثر مؤهّلة للفندق يستخدم هذا العنصر بنية الجملة نفسها المستخدَمة في <AllowablePointsOfSale> في <Result>.
<Baserate> Required float سعر الغرفة خلال فترة الإقامة يستخدم هذا العنصر البنية نفسها المستخدَمة في <Baserate> في <Result>.

ملاحظة: لا يمكن تحديد العنصر الفرعي <Baserate> ضمن <Rate> على أنّه غير متاح.

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

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

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

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

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

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

<Refundable> Optional Object يتيح هذا الخيار عرض سعر على أنّه قابل للاسترداد بالكامل أو يتيح الإلغاء مجانًا. وفي حال عدم تقديمها، لن يتم عرض أي معلومات عن ردّ الأموال. تلغي سياسة ردّ الأموال على مستوى <PackageData> سياسة ردّ الأموال على مستوى <Result>. تلغي سياسة ردّ الأموال على مستوى <Rates> سياسة ردّ الأموال على مستوى <PackageData>. يمكن أيضًا تمييز الأسعار القابلة للاسترداد للمستخدمين من خلال خيارات بديلة بدون تعديل مخطّط رسالة المعاملة مباشرةً. مزيد من المعلومات حول هذه الخيارات سياسة الأسعار القابلة للاسترداد

يعرض المثال التالي العنصر <Refundable> مع ضبط جميع سماته:

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

ملاحظة: ننصحك بضبط جميع السمات. يتم إنشاء رسالة تحذير بشأن حالة الخلاصة عند عدم ضبط سمة واحدة أو أكثر.

في حال عدم ضبط أيّ سمات، لن يظهر السعر على أنّه قابل للاسترداد. السمات هي:

  • available: (سمة مطلوبة) اضبطها على 1 (أو true) للإشارة إلى ما إذا كان السعر يسمح بتقديم طلب لاسترداد المبلغ المدفوع بالكامل، وإلا اضبطها على 0 (أو false).
  • refundable_until_days: (سمة مطلوبة إذا كان available يساوي true) لتحديد عدد الأيام قبل تسجيل الوصول التي يمكن فيها طلب استرداد المبلغ المدفوع بالكامل يجب أن تكون قيمة refundable_until_days عددًا صحيحًا يتراوح بين 0 و330، بما في ذلك هذين الرقمَين.
  • refundable_until_time: (ننصح بشدة باستخدام هذا الحقل إذا كان available يساوي true) لتحديد آخر وقت بالتوقيت المحلي للفندق يمكن فيه قبول طلب ردّ المبالغ المدفوعة بالكامل. يمكن دمج ذلك مع refundable_until_days لتحديد، مثلاً، "تتوفّر إمكانية ردّ الأموال حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول". إذا لم يتم ضبط refundable_until_time، تكون القيمة التلقائية هي منتصف الليل.

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

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

  • إذا لم يتم تحديد available أو refundable_until_days ، لن يظهر السعر على أنّه قابل للاسترداد.
  • إذا كان available هو 0 (أو false)، يتم تجاهل السمات الأخرى. لا يتم عرض السعر على أنّه قابل للاسترداد حتى إذا تم ضبط سمة واحدة أو كلتا السمتَين الأخرىَين.
<Tax> Required float الضرائب التي يتم احتسابها للسعر النهائي للغرفة. يستخدم هذا العنصر البنية نفسها المستخدَمة في <Tax> في <Result>.

أمثلة

السعر الأساسي والسعر المشروط

يعرض المثال التالي رسالة معاملة تحتوي على سعر أساسي وسعر شَرطي:

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

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

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

  </Result>
</Transaction>

أسعار مشروطة متعددة

يحدِّد المثال التالي معدّلًا أساسيًا ومعدّلات مشروطة متعددة ضمن <RoomBundle>:

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

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

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


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

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

<RoomBundle>

لتحديد أسعار حِزم الغرف ومدى توفّرها كعنصر فرعي من <Result> في رسالة <Transaction>. حدِّد عنصرًا منفصلاً لكل مجموعة من الحزم أو برامج الرحلة. لتحديد الحزمة والأحكام الخاصة بموضوع حِزم الغرف، استخدِم <RoomData>.

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

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

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة استخدام حِزم الغرف.

البنية

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

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

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

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

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

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

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

السمات

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

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

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

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

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

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

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

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

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

عند تحديد عدد النزلاء في عنوان URL لصفحتك المقصودة، استخدِم المتغيّرين NUM-ADULTS وNUM-CHILDREN، كما هو описан في استخدام المتغيّرات والشروط. القيمة التلقائية هي 2 كبار و0 أطفال.

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

ملاحظات:

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

أمثلة

حزمة الإقامة الفردية

يحدِّد المثال التالي استجابة تتضمّن حزمة إقامة فردية. عندما يختار المستخدم 1 في أداة اختيار عدد النزلاء، تعرِض Google أدنى الأسعار المؤهَّلة بغض النظر عن عدد النزلاء.

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

يشير هذا المثال إلى البيانات الوصفية المحدّدة مسبقًا للغرفة والحزمة باستخدام العنصرين <RoomID> و<PackageID>. استخدِم عنصرَي <RoomData> و <PackageData> لتحديد هذه المعلومات.

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

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

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


فئة عمرية أو أكثر

يحدِّد المثال التالي استجابة تحتوي على عدد أماكن إقامة أو أكثر.

يشير هذا المثال إلى البيانات الوصفية المحدّدة مسبقًا للغرفة والحزمة باستخدام العنصرين <RoomID> و<PackageID>. استخدِم العنصرَين <RoomData> و <PackageData> لتحديد هذه المعلومات.

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

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

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


حزم الغرف المتعددة

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

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

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

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

أسعار مشروطة متعددة

يحدِّد المثال التالي معدّلًا أساسيًا ومعدّلات مشروطة متعددة داخل <RoomBundle>:

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

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

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


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

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

<OccupancyDetails>

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

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

البنية

عندما يظهر <OccupancyDetails>، يكون مسبوقًا دائمًا برمز <Occupancy>. يُرجى مراعاة الصيغة التالية:

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

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

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

العنصر الفرعي مطلوب؟ النوع الوصف
<NumAdults> Required integer عدد النزلاء البالغين الحد الأدنى:1، الحد الأقصى:20
<Children> Optional Object حاوية لعنصر <Child> واحد أو أكثر
<Child age> Optional integer الحد الأقصى لعمر هذا الطفل، على سبيل المثال <Child age="17">

أمثلة

توضّح الأمثلة التالية كيفية ظهور <OccupancyDetails> ضمن <Results> أو <RoomBundle> أو العنصر الفرعي <Rates>.

استجابة النتيجة

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

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

تقييمات الاستجابة

يحدِّد المثال التالي برنامج رحلة واحدًا وأسعاره لشخص بالغ وطفل واحد. في هذه الحالة، يتمّ عرض <OccupancyDetails> في عنصر <Rates> من <Result>.

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

حزمة الغرف

يحدِّد المثال التالي مساحة إقامة لفردَين بالغَين وطفل واحد مدّتها ليلتان، مع سعر قابل للاسترداد. في هذه الحالة، يظهر <OccupancyDetails> داخل <RoomBundle>.

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

حزم الغرف المتعددة

يحدِّد المثال التالي أسعارًا متعددة <RoomBundle> محدودة بإقامة شخصَين بالغَين وطفلَين. في ما يلي، يظهر <OccupancyDetails> في عنصر <Rates> من <RoomBundle>.

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