ExtraGuestCharges

نرخ‌های ارسالی از طریق <OTA_HotelRateAmountNotifRQ> را می‌توان تغییر داد تا علاوه بر تعداد اصلی مهمانان نرخ، بزرگسالان و کودکان را نیز در نظر بگیرد. پیام ExtraGuestCharges امکان تعیین نحوه محاسبه نرخ برای این مهمانان اضافی و اینکه برای کدام اتاق‌ها، طرح‌های نرخ و تاریخ‌های اقامت باید هزینه‌ها اعمال شوند را فراهم می‌کند.

الزامات ظرفیت

قیمت‌های محاسبه‌شده از طریق پیام ExtraGuestCharges تنها در صورتی معتبر هستند که تمام الزامات ظرفیت برآورده شده باشند. برای اطلاعات بیشتر به بخش تراکنش (اطلاعات ملک) مراجعه کنید.

درخواست‌ها

نحو

پیام ExtraGuestCharges از ساختار نحوی زیر استفاده می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges partner="partner_account_name"
                   id="message_ID"
                   timestamp="timestamp">
  <HotelExtraGuestCharges hotel_id="HotelID" action="[overlay]">
    <ExtraGuestCharge>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD"
                   days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="float"/>
        <ChildAgeBrackets>
        <!-- The following are different ways child charges can be specified.
        Use the option that matches your system. -->
          <ChildAgeBracket max_age="integer" amount="float"
                           exclude_from_capacity="[true|false]"/>
          <ChildAgeBracket max_age="integer" percentage="float"
                           exclude_from_capacity="[true|false]"
                           counts_as_base_occupant="[never|preferred|always]"/>
          <ChildAgeBracket max_age="integer" discount_amount="float"
                           exclude_from_capacity="[true|false]"
                           counts_as_base_occupant="[never|preferred|always]"/>
        </ChildAgeBrackets>
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

عناصر و ویژگی‌ها

پیام ExtraGuestCharges دارای عناصر و ویژگی‌های زیر است:

عنصر / @Attribute رخدادها نوع توضیحات
ExtraGuestCharges 1 Complex element عنصر ریشه‌ای این پیام.
ExtraGuestCharges / @partner 1 string حساب کاربری همکار برای این پیام. این مقدار رشته‌ای، مقدار Partner key است که در صفحه تنظیمات حساب کاربری در مرکز هتل فهرست شده است.

توجه: اگر یک backend دارید که برای چندین حساب کاربری فید ارائه می‌دهد، این مقدار باید با مقدار ویژگی ID مشخص شده در عنصر <RequestorID> پیام‌های <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> شما برای همان حساب کاربری مطابقت داشته باشد.

ExtraGuestCharges / @id 1 string یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می‌شود. کاراکترهای مجاز عبارتند از az ، AZ ، 0-9 ، _ (زیرخط) و - (خط تیره).
ExtraGuestCharges / @timestamp 1 DateTime تاریخ و زمان ایجاد این پیام.
ExtraGuestCharges / HotelExtraGuestCharges 0..n HotelExtraGuestCharges کانتینر برای پرداخت هزینه‌ها برای یک ملک واحد.
ExtraGuestCharges / HotelExtraGuestCharges / @hotel_id 1 string شناسه منحصر به فرد برای ملک. این مقدار باید با شناسه هتل مشخص شده با استفاده از <id> در عنصر <listing> در فید فهرست هتل مطابقت داشته باشد. شناسه هتل همچنین در مرکز هتل فهرست شده است.
ExtraGuestCharges / HotelExtraGuestCharges / @action 0..1 enum نحوه اعمال به‌روزرسانی را مشخص می‌کند. فقط overlay پشتیبانی می‌شود و مقدار پیش‌فرض overlay است. هرگونه هزینه قبلی برای این ویژگی قبل از اعمال به‌روزرسانی پاک می‌شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge 0..99 ExtraGuestCharge

مجموعه‌ای واحد از هزینه‌ها برای یک ملک. این ممکن است شامل محدودیت‌هایی در مورد نحوه اعمال هزینه و نحوه محاسبه هزینه‌ها بر اساس سن یا دسته مهمان باشد.

هر ExtraGuestCharge در یک HotelExtraGuestCharges باید به مجموعه‌ای منحصر به فرد از تاریخ‌ها و محصولات اعمال شود. اگر دو عنصر ExtraGuestCharge به ترکیب تاریخ-محصول یکسانی اشاره کنند، کل پیام رد می‌شود.

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets 1 AgeBrackets ظرفی از رده‌های سنی که برای محاسبه هزینه‌ها بر اساس سن یا دسته مهمان استفاده می‌شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge 0..1 AdultCharge کانتینر با هزینه یک بزرگسال اضافی.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge / @amount 0..1 float یک مقدار اعشاری مثبت که مبلغ ثابتی را که برای یک بزرگسال اضافی باید دریافت شود، مشخص می‌کند. این هزینه از همان ارزی استفاده می‌کند که برای نرخ‌های شبانه تعیین شده است.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets 0..1 ChildAgeBrackets کانتینر برای هزینه‌های اضافی کودک. این محدوده سنی ممکن است فقط محدوده سنی ۰ تا ۱۷ سال را شامل شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket 1..99 ChildAgeBracket هزینه‌ای که برای کودکان در یک محدوده سنی خاص اعمال می‌شود. این هزینه‌ها باید از کمترین max_age تا بیشترین max_age مرتب شوند. مبلغ قابل پرداخت را می‌توان با استفاده از amount ، percentage یا discount_amount مشخص کرد. دقیقاً یکی از این ویژگی‌ها باید برای هر <ChildAgeBracket> مشخص شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age 1 integer حداکثر سنی که هزینه‌های مشخص‌شده در <ChildAgeBracket> ممکن است برای آن اعمال شود. حداقل سن صفر است اگر قبل از این <ChildAgeBracket> دیگری مشخص نشده باشد. در غیر این صورت، یکی بیشتر از حداکثر سن در براکت قبلی است.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @exclude_from_capacity 1 boolean یک مقدار بولی که نشان می‌دهد آیا یک کودک در این محدوده سنی باید جزو ظرفیت کل اتاق و ظرفیت کودک محسوب شود یا خیر. این ظرفیت‌ها را می‌توان با Transaction(Property Data) تنظیم کرد. برای مثال، نوزادان زیر یک سن خاص ممکن است نیازی به احتساب در ظرفیت کودک نداشته باشند.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount 0..1 float یک مقدار اعشاری غیرمنفی که مبلغ ثابتی را که باید برای یک فرزند اضافی در این گروه هزینه شود، مشخص می‌کند. این هزینه از همان ارزی استفاده می‌کند که برای نرخ‌های شبانه مشخص شده است.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @percentage 0..1 float

یک مقدار اعشاری از ۱ تا ۹۹ که درصد قیمت یک بزرگسال را که باید برای یک کودک اضافی در این محدوده هزینه شود، مشخص می‌کند. این هزینه از همان ارزی استفاده می‌کند که برای نرخ‌های شبانه مشخص شده است.

برای جزئیات بیشتر در مورد نحوه محاسبه قیمت بزرگسال، به بحث زیر بخش counts_as_base_occupant مراجعه کنید.

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @discount_amount 0..1 float

یک مقدار اعشاری مثبت که مبلغ تخفیف ثابتی را برای یک کودک اضافی در این محدوده از قیمت بزرگسال مشخص می‌کند. این هزینه از همان ارزی استفاده می‌کند که برای نرخ‌های شبانه مشخص شده است.

به طور کلی، هزینه یک کودک در این طبقه بندی با کسر مبلغ ثابت از "قیمت واحد" محاسبه می‌شود. قیمت واحد با جزئیات بیشتر در بخش ویژگی counts_as_base_occupant مورد بحث قرار گرفته است.

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @counts_as_base_occupant 0..1 string

اگر ویژگی percentage یا discount_amount مشخص شده باشد، باید counts_as_base_occupant نیز مشخص شود. این مقدار تعیین می‌کند که آیا هنگام انتخاب نرخ <BaseByGuestAmount> برای اعمال هزینه‌های درصدی و تخفیف‌ها، باید یک فرزند در NumberOfGuest لحاظ شود یا خیر.

هدف در اینجا به دست آوردن یک «قیمت واحد» است که بتوان هزینه واقعی را از آن محاسبه کرد.

unit price = rate / occupancy

مقدار این ویژگی باید یکی از گزینه‌های never ، preferred یا always باشد.

  • اگر never مشخص نشده باشد، کودک هرگز نباید در نرخ اقامت لحاظ شود.

    اگر می‌خواهید نرخی برای ۲ بزرگسال و ۲ کودک (۲+۲) محاسبه کنید، باید از نرخ ۲ بزرگسال استفاده کنید زیرا کودکان نباید در نظر گرفته شوند.

  • اگر preferred داده شود، ترجیحاً کودک باید در نرخ گنجانده شود.

    اگر می‌خواهید نرخی برای ۲ بزرگسال و ۱ کودک (۲+۱) محاسبه کنید، ترجیحاً باید از نرخ ۳ بزرگسال استفاده کنید، اما اگر چنین نرخی پیدا نشد، باید از نرخ ۲ بزرگسال استفاده کنید.

  • اگر always مشخص شده باشد، کودک باید همیشه در نرخ اقامت لحاظ شود.

    اگر می‌خواهید نرخی برای ۲ بزرگسال و ۲ کودک (۲+۲) محاسبه کنید، باید از نرخ ۴ بزرگسال استفاده کنید زیرا کودکان نیز باید در نظر گرفته شوند.

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes 0..1 RoomTypes محفظه‌ای برای فهرستی از انواع اتاق‌هایی که هزینه‌ها به آنها اعمال می‌شود. هزینه‌ها برای هر <RoomType> مشخص شده اعمال می‌شود. اگر <RoomTypes> مشخص نشده باشد، هزینه‌ها برای همه اتاق‌های داخل ملک مشخص شده اعمال می‌شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType 1..n RoomType نوع اتاق را مشخص می‌کند. نوع اتاق در عنصر <RoomData> در یک پیام تراکنش (داده‌های ویژگی) تعریف می‌شود و با استفاده از مقدار <RoomID> آن ارجاع داده می‌شود. (مقدار <RoomID> آن همچنین توسط ویژگی InvTypeCode در پیام‌های OTA_HotelRateAmountNotifRQ ارجاع داده می‌شود.)
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType / @id 1 string شناسه منحصر به فرد برای موجودی (نوع اتاق). این مقدار به <RoomID> در یک پیام تراکنش (داده‌های ویژگی) نگاشت می‌شود. حداکثر تعداد کاراکترهای مجاز ۵۰ است.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans 0..1 RatePlans محفظه‌ای برای فهرستی از طرح‌های نرخ که هزینه‌ها برای آنها اعمال می‌شود. اگر <RatePlans> مشخص نشده باشد، هزینه‌ها برای همه طرح‌های نرخ اعمال می‌شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan 1..n RatePlan یک طرح نرخ را مشخص می‌کند. یک طرح نرخ با ترکیبی از بسته، نرخ‌ها و در دسترس بودن، همانطور که در پیام‌های Transaction (Property Data)، OTA_HotelRateAmountNotifRQ و OTA_HotelAvailNotifRQ تعریف شده و توسط PackageID شناسایی می‌شود، تعریف می‌شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan / @id 1 string شناسه منحصر به فرد برای طرح نرخ. این مقدار به مقدار PackageID در <PackageData> در یک پیام Transaction (Property Data) و در ویژگی RatePlanCode در <StatusApplicationControl> در هر دو پیام <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> نگاشت می‌شود. حداکثر تعداد کاراکتر مجاز ۵۰ است.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates 0..1 StayDates ظرفی برای یک یا چند محدوده تاریخ که نحوه اعمال هزینه‌ها را تعیین می‌کند.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange 1..99 DateRange یک محدوده تاریخی که تاریخ‌های اعمال تخفیف را مشخص می‌کند.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @start 0..1 Date تاریخ شروع (بر اساس منطقه زمانی ملک)، شامل محدوده تاریخ. این تاریخ باید قبل یا همزمان با تاریخ end باشد. اگر start مشخص نشده باشد، محدوده تاریخ عملاً از نظر تاریخ شروع نامحدود است.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @end 0..1 Date تاریخ پایان (بر اساس منطقه زمانی ملک)، شامل محدوده تاریخ. این تاریخ باید برابر یا بعد از تاریخ start باشد. اگر end مشخص نشده باشد، محدوده تاریخ عملاً از نظر تاریخ پایان نامحدود است.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @days_of_week 0..1 string

روزهای هفته که در محدوده تاریخ مجاز هستند. اگر مشخص نشده باشند، همه روزها در محدوده تاریخ مجاز هستند. هر کاراکتر در رشته یک روز را مشخص می‌کند. به عنوان مثال، "MTWHF" مشخص می‌کند که روزهای هفته در محدوده تاریخ مجاز هستند.

کاراکترهای معتبر عبارتند از:

  • M برای دوشنبه
  • T برای سه‌شنبه
  • W برای چهارشنبه
  • H برای پنجشنبه
  • F برای جمعه
  • S برای شنبه
  • برای U

هر ترکیب کاراکتری معتبر است.

مثال‌ها

هزینه‌های بزرگسالان

هزینه‌ها برای بزرگسالان اضافی فقط می‌توانند به صورت مبالغ ثابت بیان شوند. مثال زیر یک پیام ExtraGuestCharges را نشان می‌دهد که هزینه‌های بزرگسالان را مشخص می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <StayDates />
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

در اینجا نرخ‌های مربوطه آمده است:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="ABC">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
            <BaseByGuestAmt AmountAfterTax="120.00"
                            CurrencyCode="USD"
                            NumberOfGuests="3"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

وقتی کاربری در گوگل نام چهار بزرگسال را جستجو می‌کند، نرخ کل ۱۷۰ = ۱۲۰ + ۵۰ خواهد بود.

عدد ۱۲۰ از نرخ <BaseByGuestAmt> با NumberOfGuests="3" و عدد ۵۰ از AdultCharge amount="50" می‌آید.

هزینه‌های فرزند

هزینه‌های کودکان تا ۱۷ سال در بازه‌های سنی مختلف بیان شده و می‌تواند به صورت مبلغ ثابت، درصد یا تخفیف ارائه شود.

مثال زیر یک پیام ExtraGuestCharges را نشان می‌دهد که هزینه‌های فرزند را مشخص می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <AgeBrackets>
        <ChildAgeBrackets>
          <ChildAgeBracket max_age="3" percentage="10"
                           counts_as_base_occupant="never" />
          <ChildAgeBracket max_age="10" percentage="30"
                           counts_as_base_occupant="preferred"/>
          <ChildAgeBracket max_age="17" discount_amount="10"
                           counts_as_base_occupant="always" />
        </ChildAgeBrackets>
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

در اینجا نرخ‌های مربوطه آمده است:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="ABC">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
```

  1.  Suppose you want the total price for 2 adults and 1 child of 2 years
      of age.

      Children aged 0-3 are never included in the rate's occupancy,
      so here you should take the double occupancy rate and divide by 2 to
      get the unit price. Then, multiply by the percentage rate and sum
      with the rate to get the total price.

      `unit price ` = 110 / 2 = 55

      `total price` = 110 + 55 * 0.1 = 115.5

  1.  Suppose you want the total price for 1 adult and 2 children, both of 5
      years of age.

      Children aged 4-10 are preferably included in the rate's
      occupancy. you should start by looking for a 3 adult rate since both
      children are preferably included in the rate's occupancy. Since
      that doesn't exist you should fall back to the 2 adult rate and then,
      take this rate and divide by two to get the unit price. Finally,
      multiply by the percentage rate and sum with the scaled rate to
      get the total price.

      `unit price` = 110 / 2 = 55

      `total price` = 55 + 55 * 0.3 + 55 * 0.3 = 88

  1.  Suppose you want the total price for 1 adult and 1 child of 17
      years of age.

      Children aged 11-17 are always included in the rate's occupancy, so,
      in this case, take the double occupancy rate and divide by 2 to get
      the unit price. Then, deduct it by the discount amount and sum with
      the scaled rate to get the total price.

      `unit price` = 110 / 2 = 55

      `total price` = 55 + (55 - 10) = 100

محدودیت‌های شارژ

همه انواع محدودیت‌ها اختیاری هستند و می‌توان از هر ترکیبی از آنها استفاده کرد.

مثال زیر یک پیام ExtraGuestCharges را نشان می‌دهد که محدودیت‌هایی را مشخص می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
        <RoomType id="king" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
        <RatePlan id="hot-breakfast" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-14"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

پیام بالا مشخص می‌کند که برای تاریخ‌های ۱ سپتامبر ۲۰۲۰ تا ۱۴ سپتامبر ۲۰۲۰، هزینه هر اتاقی که نوع اتاق آن «کوئین» یا «کینگ» با طرح نرخ «وای‌فای رایگان» یا «صبحانه گرم» باشد، از بزرگسالان دریافت می‌شود.

هزینه‌های همپوشانی

این بخش نمونه‌ای از یک پیام نامعتبر را نشان می‌دهد که هزینه‌های متفاوتی را برای ترکیب‌های یکسانی از تاریخ‌ها و محصولات مشخص می‌کند.


<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-14"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
        <RoomType id="king" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
        <RatePlan id="hot-breakfast" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-05"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="20" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

پیام بالا نامعتبر است زیرا اولین <ExtraGuestCharge> مشخص می‌کند که "queen" و "free-wifi" برای ۱ تا ۱۴ سپتامبر باید ۵۰ دلار برای بزرگسالان اضافی هزینه داشته باشند. دومین <ExtraGuestCharge> مشخص می‌کند که هر یک از "queen" یا "king" با هر یک از "free-wifi" یا "hot-breakfast" برای ۱ تا ۵ سپتامبر باید ۲۰ دلار برای بزرگسالان اضافی هزینه داشته باشد. هزینه‌های "queen" و "free-wifi" برای ۱ تا ۵ سپتامبر همپوشانی دارد و بین اینکه آیا برای یک بزرگسال اضافی ۲۰ دلار هزینه شود یا ۵۰ دلار، اختلاف نظر وجود دارد.

پاسخ‌ها

نحو

پیام ExtraGuestChargesResponse از ساختار نحوی زیر استفاده می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type">issue_description</Issue>
  </Issues>
</ExtraGuestChargesResponse>

عناصر و ویژگی‌ها

پیام ExtraGuestChargesResponse دارای عناصر و ویژگی‌های زیر است:

عنصر / @Attribute رخدادها نوع توضیحات
ExtraGuestChargesResponse 1 Complex element عنصر ریشه‌ای که موفقیت یا مشکلات مربوط به پیام درخواست ExtraGuestCharges دریافتی را نشان می‌دهد.
ExtraGuestChargesResponse / @timestamp 1 DateTime تاریخ و زمان ایجاد این پیام.
ExtraGuestChargesResponse / @id 1 string شناسه منحصر به فرد از پیام ExtraGuestCharges مرتبط.
ExtraGuestChargesResponse / @partner 1 string حساب کاربری شریک برای این پیام.
ExtraGuestChargesResponse / Success 0..1 Success نشان می‌دهد که پیام ExtraGuestCharges با موفقیت و بدون هشدار، خطا یا خرابی پردازش شده است.

در هر پیام یا <Success> یا <Issues> وجود دارد.

ExtraGuestChargesResponse / Issues 0..1 Issues یک محفظه برای یک یا چند مشکل پیش آمده هنگام پردازش پیام ExtraGuestCharges .

در هر پیام یا <Success> یا <Issues> وجود دارد.

ExtraGuestChargesResponse / Issues / Issue 1..n Issue شرح هشدار، خطا یا خرابی که هنگام پردازش پیام ExtraGuestCharges رخ داده است. جزئیات مربوط به این مشکلات را می‌توانید در پیام‌های خطای وضعیت فید (Feed Status Error Messages) بیابید.
ExtraGuestChargesResponse / Issues / Issue / @code 1 integer شناسه‌ی مسئله.
ExtraGuestChargesResponse / Issues / Issue / @status 1 enum

نوع مشکلی که با آن مواجه شده‌اید.

مقادیر معتبر عبارتند از warning ، error و failure .

مثال‌ها

موفقیت

در ادامه، پاسخی به پیام پردازش‌شده‌ی موفقیت‌آمیز ExtraGuestCharges آمده است.

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</ExtraGuestChargesResponse>

مسائل

در ادامه پاسخی به پیام ExtraGuestCharges که به دلیل خطا پردازش نشده است، آمده است.

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</ExtraGuestChargesResponse>