مرجع XML للأسعار ومستودع الغرف (المعاملات)

تقدّم هذه الصفحة مرجعًا لرسائل المعاملات المستندة إلى XML.

<Transaction>

العنصر الجذر لـ رسالة المعاملة هو <Transaction>. إنه عبارة عن حاوية للمعلومات الوصفية حول الغرف والعروض والأسعار والتوافر للغرف والعروض.

يظهر عنصر <Transaction> في المكان التالي في التسلسل الهرمي لـ XML لرسالة المعاملة:

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

تتطلّب الرسائل التي تستخدم <Transaction> كعنصر جذر عنصرًا فرعيًا واحدًا على الأقل. يمكن أن تحتوي رسائل المعاملات على أي عدد من العناصر الفرعية، طالما أن الحجم الإجمالي للرسالة لا يتجاوز 100 ميجا بايت.

البنية

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

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

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

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

</Transaction>

السمات

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

السمة مطلوب؟ النوع الوصف
id Required سلسلة معرف فريد لكل رسالة معاملة.
partner Optional string حساب الشريك الذي تخصه رسالة المعاملة. عادةً ما تستخدم هذا إذا كان برنامجك الخلفي يوفر موجزات الأسعار لحسابات الشركاء المتعددة. قيمة السلسلة هذه هي قيمة "مفتاح الشريك" المدرَجة في صفحة إعدادات الحساب في Hotel Center.
timestamp Required DateTime

تمثّل هذه السمة الوقت الذي تم فيه إرسال رسالة المعاملة.

ستتم معالجة أي رسالة تم إرسالها بطابع زمني خلال الـ 24 ساعة السابقة، وسيتم تجاهل الرسائل التي لم يتم إرسالها خلال هذه الفترة.

تتم معالجة الرسائل حسب ترتيب timestamp وليس حسب ترتيب استلامها. على سبيل المثال، سيتمّ ترتيب تعديل السعر الذي يحمل الطابع الزمني 2019-05-03 14:09:00 والذي تمّ تلقّيه بعد رسالة تحمل الطابع الزمني 2019-05-03 14:10:00، وسيتمّ استخدام السعر الوارد في الرسالة التي تحمل الطابع الزمني 2019-05-03 14:10:00.

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

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

العنصر الفرعي مطلوب؟ النوع الوصف
<PropertyDataSet> Optional* <PropertyDataSet>

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

<Result> Optional* <Result>

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

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

أمثلة

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

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

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

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

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

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

أسعار الليلة

يوضح المثال التالي بيانات التسعير لفترة تتراوح من ليلة واحدة إلى سبع ليالٍ بدءًا من 7 يونيو 2023:

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


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

يعرض المثال التالي رسالة معاملة تتضمّن سعرًا أساسيًا وسعرًا مشروطًا:

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

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

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
      </Rate>
    </Rates>

  </Result>
</Transaction>

إزالة المخزون

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

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

<PropertyDataSet>

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

يظهر عنصر <PropertyDataSet> في المكان التالي في التسلسل الهرمي لـ XML لرسالة المعاملة:

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

لمزيد من المعلومات، راجع بيانات تعريف حزمة الغرفة.

البنية

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

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

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

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

السمات

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

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

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

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

يمكنك الرجوع إلى معرف الحزمة في تحديثات التسعير الخاصة بك.

لمزيد من المعلومات، راجع بيانات تعريف حزمة الغرفة.

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

يمكنك الرجوع إلى معرف الغرفة في تحديثات الأسعار الخاصة بك.

* مطلوب على الأقل واحد من <PackageData> أو <RoomData>.

أمثلة

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

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

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

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

<RoomData>

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

يظهر عنصر <RoomData> في المكان التالي في التسلسل الهرمي لـ XML لرسالة المعاملة:

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

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

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

يمكنك تعريف كل من عنصري <RoomData> و<PackageData> لنفس الغرفة أو مجموعة الغرف. عندما يعرض 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>

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

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

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

<RoomFeatures>

يقوم بتعريف الميزات الموجودة في الغرفة.

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

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

البنية

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

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

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

السمات

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

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

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

عنصر الطفل مطلوب؟ النوع الوصف
<JapaneseHotelRoomStyle> Optional enum

يشير إلى طراز غرفة الفندق اليابانية.

القيم الصالحة هي:

  • western: غرفة على الطراز الغربي مع أسرة.
  • japanese: غرفة على الطراز الياباني مع أسرّة فوتون.
  • japanese_western: غرفة على الطراز الغربي الياباني تحتوي على أسرّة على الطراز الغربي وأسرة فوتون على الطراز الياباني.
<Beds> Optional Object يحتوي على عدد <Bed> بقدر ما تحتويه الغرفة. لاحظ أن الفوتون الياباني لا ينبغي أن يُحسب هنا.

يحتوي كل <Bed> على السمات التالية:

  • size (اختياري): القيم الصالحة هي single، وsemi_double، وdouble، وqueen، وking.
يحتوي كل <Bed> على العناصر الفرعية التالية:
  • <Width> (اختياري): يحدد عرض السرير. يجب أن يكون لديك السمة unit مع القيمة cm والسمة number مع عرض السرير بالسنتيمتر الصحيح.
  • <Length> (اختياري): يحدد طول السرير. يجب أن يكون لديك السمة unit مع القيمة cm والسمة number مع طول السرير بالسنتيمتر الصحيح.
مثال:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty قم بتوفير هذا العنصر عندما تكون هذه الغرفة عبارة عن جناح.
<Capsule> Optional empty قم بتوفير هذا العنصر عندما تكون هذه الغرفة عبارة عن غرفة كبسولة.
<Roomsharing> Optional enum سواء كانت هذه الغرفة مشتركة مع شاغلين آخرين مثل المالكين أو الضيوف الآخرين. القيم الصالحة هي shared وprivate.
<Outdoor> Optional empty قم بتوفير هذا العنصر عندما تكون هذه الغرفة عبارة عن سكن خارجي ليس به جدران ثابتة أو سباكة أو نظام تحكم في المناخ. على سبيل المثال، غرف الفنادق ليست أماكن إقامة خارجية في حين أن المخيمات حيث يقيم الضيوف في خيام وحدائق المركبات الترفيهية حيث يحضر الضيوف مركباتهم الترفيهية الخاصة هي أماكن إقامة خارجية.
<MobilityAccessible> Optional empty قم بتوفير هذا العنصر عندما تكون هذه الغرفة قابلة للوصول للأشخاص ذوي الإعاقة.
<Smoking> Optional enum تُستخدَم لتحديد ما إذا كانت هذه الغرفة مخصّصة لغير المدخّنين أو للمدخّنين. القيم الصالحة هي non_smoking وsmoking.
<BathAndToilet> Optional Object يحتوي على معلومات حول الحمام والمرحاض الموجود في الغرفة.

السمة هي:

  • relation (اختيارية): تشير إلى كيفية ترتيب الحمام والمرحاض بالنسبة إلى بعضهما البعض. القيم الصالحة هي together (يقع كل من الحمام والمرحاض معًا في الغرفة نفسها (مثل الحمام) بجوار بعضهما البعض مباشرةً) وseparate (يحتوي كل من الحمام والمرحاض على مساحات مخصّصة). يجب عدم ضبط هذه السمة عندما لا تتضمّن الغرفة حمامًا ومرحاضًا.

يمكن أن يتضمّن العنصر اختياريًا العناصر الفرعية التالية:

  • <Bath> (اختياري): يشير توفّر هذا العنصر إلى أنّ الغرفة تتضمّن حوض استحمام.

    السمات هي:

    • bathtub (اختيارية): تشير إلى أنّ الحمّام يتضمّن حوض استحمام. القيم الصالحة هي 0 (أو false) و1 (أو true).
    • shower (اختيارية): تشير إلى أنّ الحمام مزوّد بدُش. القيم الصالحة هي 0 (أو false) و1 (أو true).
  • <Toilet> (اختياري): يشير توفّر هذا العنصر إلى أنّ هذه الغرفة تتضمّن مرحاضًا.

    السمات هي:

    • electronic_bidet (اختيارية): تشير إلى أنّ المرحاض مزوّد بيديه إلكتروني. القيم الصالحة هي 0 (أو false) و1 (أو true).
    • mobility_accessible (اختياري): يشير إلى أن المرحاض مناسب للأشخاص ذوي الإعاقة. القيم الصالحة هي 0 (أو false) و1 (أو true).

مثال:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty قدِّم هذا العنصر عندما تحتوي الغرفة على حمّام خاص في الهواء الطلق.
<AirConditioning> Optional empty قم بتوفير هذا العنصر عندما تحتوي هذه الغرفة على تكييف.
<Balcony> Optional empty قدِّم هذا العنصر عندما تحتوي الغرفة على شرفة أو شرفة مسقوفة.
<Views> Optional Object تشمل الخيارات الصالحة ما يلي:

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

أمثلة

لا تتضمّن السمة JapaneseHotelRoomStyle قيمة تلقائية. لا يؤدي حذف قيمة إلى حدوث خطأ XML، ولكن القائمة الخاصة بك لن تظهر في نتائج البحث، عندما يقوم المستخدم بالتصفية حسب نمط الغرفة أو الأسرة.

سريران مفردان

يوضّح المثال التالي كيفية استخدام <RoomFeatures>:

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

سريران مزدوجان

في ما يلي مثال على غرفة يابانية مصمّمة على طراز western مع سريرَين من طراز double.

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


على الطريقة اليابانية بدون سرير

فيما يلي مثال لغرفة على الطراز الياباني بدون سرير. لا يلزم تقديم معلومات عن السرير في الغرفة ذات الطراز japanese.

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

غرفة على الطراز الياباني الغربي مع سرير

في ما يلي مثال على غرفة بأسلوب japanese_western مع سرير بحجم king.

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

إذا لم يكن لدى الشريك معلومات حول عدد الأسرة في japanese_western غرفة، فاتبع المثال التالي:

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

<PackageData>

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

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

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

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

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

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

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

البنية

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

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

السمات

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ملاحظة:

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

معرف فريد للحزمة. استخدم هذا المعرف لمطابقة بيانات حزمة الغرفة مع الكتل <Result> في تحديثات التسعير الخاصة بك. لمزيد من المعلومات، راجع بيانات تعريف حزمة الغرفة.

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

<ParkingIncluded> Optional boolean سواء كانت باقة الغرفة تتضمن موقف سيارات بدون رسوم، حيث أن موقف السيارات عادة ما يكون خدمة مدفوعة في هذا الفندق. لا تحدد قيمة لهذا العنصر لفندق يوفر مواقف مجانية للسيارات.

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

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

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

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

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

إذا لم تقم بتعيين أي سمات، فلن يتم عرض السعر على أنه قابل للاسترداد. السمات هي:

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

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

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

  • إذا لم يتم ضبط available أو refundable_until_days، لن يظهر السعر على أنّه قابل للاسترداد.
  • إذا كان available يساوي 0 أو false، فسيتم تجاهل السمات الأخرى. لا يتم عرض السعر على أنه قابل للاسترداد حتى إذا تم تعيين أحد السمتين أو كليهما.
<MembershipBenefits Included> Optional boolean يتضمن السعر مزايا الحالة المميزة طوال مدة الإقامة. يتضمن المعلمات التالية:
  • ProgramName: اسم برنامج الحالة النخبوية
  • ProgramLevel: مستوى البرنامج. على سبيل المثال: "الذهب".
  • NightlyValue (optional): القيمة الليلية للمزايا.
<CarRentalIncluded> Optional boolean يتضمن السعر تأجير سيارة مجانًا طوال مدة الإقامة.
<MilesIncluded> Optional boolean يتضمن السعر أميال المسافر الدائم. تتضمن المعلمات:
  • NumberOfMiles: عدد الأميال لكل خط سير رحلة
  • Provider: مقدّم أميال برنامج المسافر الدائم
  • LoyaltyCampaignID: معرّف فريد يحدّد &quot;حملة الولاء&quot; المحدّدة التي تم إعدادها وتعديلها باستخدام Google. تضيف هذه الميزة نقاط الولاء إلى سعر الفندق.

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

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

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

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

أمثلة

باقة غرفة فردية

يحدّد المثال التالي حزمة غرفة واحدة، مع إشغال بمقدار 2 (شخص بالغ وطفل واحد) وتشمل وجبة الفطور:

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

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

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

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

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

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

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


حزمة غرف مع أسعار

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

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

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

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

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

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

فطور

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

<Result>

حاوية لتحديثات الأسعار والتوافر في رسالة <Transaction>.

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

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

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

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

يمكنك استخدام <Result> في رسالة المعاملة لإزالة مسارات الرحلة، كما هو موضح في إزالة المخزون. لمزيد من المعلومات حول استخدام رسائل المعاملات لتعديل الأسعار ومدى التوفّر، يُرجى الاطّلاع على إضافة مستودع وتعديله.

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

البنية

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

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

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

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

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <!-- Child occupancy rates should only be sent through Live pricing
         with context and not through Pull or Changed pricing -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

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

السمات

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

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

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

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

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

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

<Baserate> Optional float

سعر الغرفة للإقامة. ينبغي أن تعكس قيمة هذا العنصر ما يلي:

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

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

لإزالة مجموعة غرف، استخدم الإرشادات الواردة في إزالة مجموعة غرف.

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

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

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

  • all_inclusive: قيمة منطقية تشير إلى ما إذا كان هذا المعدل يشمل الضرائب والرسوم. بشكل عام، قم بتعيين هذه القيمة إلى false للمستخدمين النهائيين في الولايات المتحدة وكندا وقم بتوفير القيم لعناصر <Tax> و<OtherFees>. إذا كنت تستخدم أسعارًا شاملة، فقد لا تكون مؤهلاً للظهور في القوائم إذا كانت أسعارك لا تفصل الضرائب والرسوم للمستخدمين الكنديين.

    الأسعار الشاملة تظهر الآن للمستخدمين في الولايات المتحدة.

    بالنسبة إلى جميع المستخدمين النهائيين الآخرين، عليك عادةً تضمين الضرائب والرسوم في السعر الأساسي وتحديد قيمة السمة all_inclusive على أنّها true. لمزيد من المعلومات، يُرجى الرجوع إلى سياسة الضرائب والرسوم.

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

  • currency: رمز العملة المكوّن من ثلاثة أحرف. على سبيل المثال، USD للدولار الأمريكي.
<ChargeCurrency> Optional enum متى وأين يقوم المستخدم بدفع ثمن الحجز. يمكن استخدام هذا العنصر في رسالة المعاملة في عنصر <Result> لسعر الفندق أو كتلة <PackageData> لحزمة الغرف.

القيم الصالحة هي:

  • web: يتم فرض الرسوم على المستخدم عبر الإنترنت في وقت الحجز. هذه هي القيمة الافتراضية. يتم تحديد صفحة الوصول الفعلية بواسطة ملف صفحة الوصول، ويمكن أن تتأثر بعملة المستخدم أو موقعه أو لغته أو عوامل أخرى.
  • hotel: يتم تحصيل الرسوم من المستخدم عند تسجيل الوصول إلى الفندق. إذا كان يجب أن يتم الدفع دائمًا بعملة الفندق، فقم بتعيين قيمة <ChargeCurrency> إلى hotel. صفحة الوصول الفعلية لا تتأثر بعملة المستخدم.
  • deposit: يتم تحصيل جزء من المبلغ من المستخدم على الفور، ويتم تحصيل المبلغ المتبقي في وقت لاحق، عادةً عندما يغادر المستخدم الفندق.
  • installments: يتم تحصيل جزء أولي من المبلغ الإجمالي المستحق من المستخدم، ويُتوقّع منه أن يدفع بانتظام رصيدًا محدّدًا خلال فترة زمنية ثابتة.

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

<Checkin> Required Date تمثّل هذه السمة تاريخ تسجيل الوصول في خطة السفر باستخدام تنسيق التاريخ. يشكّل العنصر <Nights> مع العنصر <Checkin> مسار رحلة.
Optional string تم إيقاف استخدامه: يحدد حقلًا مخصصًا يمكنك استخدامه لتمرير بيانات إضافية مرتبطة بفندق. يمكنك تمرير ما يصل إلى خمس قيم مخصصة باستخدام أسماء العناصر التالية:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

يُظهر المثال التالي عنصر <Refundable> مع تعيين جميع سماته:

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

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

إذا لم تقم بتعيين أي سمات، فلن يتم عرض السعر على أنه قابل للاسترداد. السمات هي:

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

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

عند تعيين السمات، لاحظ ما يلي:

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

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

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

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

<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=""/>: لم يكن مسار الرحلة متاحًا بسبب بعض قيود الحجز غير المذكورة. تسمح سمة التقييد الاختيارية بالإبلاغ عن التقييد على هيئة نص.

أمثلة

مثال متعدد الخصائص

يوضح المثال التالي مسارًا واحدًا وتسعيره لعقارين:

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

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

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

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

يحدّد المثال التالي خطة رحلة واحدة ومكان إقامة واحدًا مع أسعار متعددة لمختلف مستويات الإشغال. يمكن استخدام العنصر <Rates> لتقديم أسعار متعددة لسمة معيّنة. المثال التالي مفيد أيضًا لعقارات الإيجار لقضاء العطلات (VR):

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

مثال غير متوفّر

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

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

<Rates>

حاوية لكتلة واحدة أو أكثر من <Rate>. يمثّل كل <Rate> في <Rates> سعرًا مختلفًا لمجموعة الغرف أو برامج الرحلات.

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

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

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

القيم المحددة في <Rate> تتجاوز القيم المرتبطة بالتسعير في العنصر الرئيسي <Result> أو <RoomBundle>. إذا لم يتم تعيينها في <Rate>، فإنها ترث قيمتها من العنصر الرئيسي. يتم توريث <AllowablePointsofSale> فقط إلى عنصر <RoomBundle>.

البنية

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

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

السمات

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

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

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

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

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

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

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

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

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

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

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

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

<Occupancy> Optional integer

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

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

إذا تم تعيين سمة "all_inclusive" الخاصة بعنصر <Baserate> صراحةً على 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>
      </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 and it should be within 50 characters in length for optimal
      performance. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

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

      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>

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

<RoomBundle>

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

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

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

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

البنية

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

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

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

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

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

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

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

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

السمات

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

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

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

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

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

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

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

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

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

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

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

<Occupancy> Required integer يحدد الحد الأقصى لعدد الأشخاص المسموح لهم بهذا السعر. على سبيل المثال، قد يكون الجناح الكبير قادرًا على استيعاب 6 ضيوف فعليًا، ولكن "باقة شهر العسل" تسمح باستيعاب ضيفين فقط.

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

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

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

ملاحظات:

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

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

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

ملاحظة: يجب أن يتضمّن RatePlanID أقل من 50 حرفًا لتحقيق الأداء الأمثل.

لمزيد من المعلومات، راجِع مقالة استخدام المتغيرات والشروط.

<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 and it should be within 50 characters in length for optimal
      performance. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

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

      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>

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

<OccupancyDetails>

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

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

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

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

أو،

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

البنية

عندما يظهر <OccupancyDetails>، فإنه يسبقه دائمًا <Occupancy>. لاحظ بناء الجملة التالي:

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

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

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

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

أمثلة

تُظهر الأمثلة التالية كيفية ظهور <OccupancyDetails> داخل <Results>، أو <RoomBundle>، أو عنصر الطفل <Rates>.

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

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

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

الردّ على الأسعار

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

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

حزمة الغرفة

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

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

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

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

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