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 دارای عناصر و مشخصه‌های زیر است:

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

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

ExtraGuestCharges / @id 1 string شناسه یکتای این پیام درخواست. این مقدار در پیام پاسخ برگردانده می‌شود. نویسه‌های مجاز عبارتند از a-z، A-Z، 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 پشتیبانی می‌شود، و پیش‌فرض هم هم‌پوشانی است. هرگونه هزینه قبلی برای این دارایی قبل‌از اعمال به‌روزرسانی پاک می‌شود.
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 بولی که نشان می‌دهد آیا کودک در این گروه سنی باید در ظرفیت کل اتاق و ظرفیت کودک لحاظ شود یا نه. این ظرفیت‌ها را می‌توان با تراکنش(داده‌های دارایی) تنظیم کرد. برای مثال، نوزادان زیر سن خاصی ممکن است لازم نباشد در ظرفیت کودکان شمرده شوند.
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 طرح قیمت را مشخص می‌کند. طرح نرخ براساس ترکیبی از بسته، نرخ‌ها، و دردسترس بودن تعریف می‌شود، همان‌طور که در پیام‌های «تراکنش» (داده‌های ملک)، OTA_HotelRateAmountNotifRQ، و OTA_HotelAvailNotifRQ تعریف شده است و با PackageID شناسایی می‌شود.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan / @id 1 string شناسه یکتای طرح نرخ. این مقدار با مقدار PackageID در <PackageData> در پیام «تراکنش» (داده‌های ملک) و در مشخصه 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>

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

‫۱۲۰ از نرخ <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> مشخص می‌کند که «تخت دونفره» و «وای‌فای رایگان» برای ۱ تا ۱۴ سپتامبر باید ۵۰ واحد برای بزرگسالان اضافی دریافت کند. <ExtraGuestCharge> دوم مشخص می‌کند که هرکدام از «تخت دونفره بزرگ» یا «تخت دونفره خیلی بزرگ» با هرکدام از «وای‌فای رایگان» یا «صبحانه گرم» برای ۱ تا ۵ سپتامبر باید ۲۰ هزینه اضافی برای بزرگسالان دریافت کند. هزینه‌های هم‌پوشانی برای «تخت دونفره» و «وای‌فای رایگان» برای ۱ تا ۵ سپتامبر وجود دارد و تداخلی بین اینکه آیا باید ۲۰ یا ۵۰ برای یک بزرگسال اضافی دریافت شود وجود دارد.

پاسخ‌ها

نحو

پیام 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 دارای عناصر و مشخصه‌های زیر است:

عنصر / @مشخصه رویدادها نوع شرح
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 رخ داده است. جزئیات مربوط به این مشکلات را می‌توانید در پیام‌های خطای وضعیت فید پیدا کنید.
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>