این صفحه مرجعی برای پیامهای تراکنش مبتنی بر XML ارائه میدهد.
<Transaction>
عنصر ریشه پیام تراکنش
<Transaction> است. این ظرفی برای اطلاعات توصیفی درباره
اتاقها و بستهها و قیمتگذاری و دردسترس بودن اتاقها و بستهها است.
عنصر <Transaction> در مکان زیر در سلسلهمراتب XML پیام تراکنش نشان داده میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
پیامهایی که از <Transaction> بهعنوان عنصر ریشه استفاده میکنند، حداقل به یک عنصر فرزند نیاز دارند. پیامهای تراکنش میتوانند هر تعداد عنصر فرزند داشته باشند،
بهشرطی که اندازه کل پیام از ۱۰۰ مگابایت بیشتر نشود.
نحو
عنصر <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 | لحظهای که پیام تراکنش ارسال شد. هر پیامی که با مُهر زمان در ۲۴ ساعت گذشته ارسال شده باشد پردازش خواهد شد، و از پیامهایی که مُهر زمان نداشته باشند صرفنظر خواهد شد. پیامها براساس |
عناصر فرزند
عنصر <Transaction> دارای عناصر فرزند زیر است:
| عنصر فرعی | الزامی است؟ | نوع | شرح |
|---|---|---|---|
| <PropertyDataSet> | Optional* | <PropertyDataSet> |
اتاق خاص و «بستههای ترکیبی اتاق» را توصیف میکند. معمولاً از این عنصر در پیام تراکنش جداگانهای استفاده میکنید تا مقادیر مشترک را برای «بستههای ترکیبی اتاق» تعریف کنید و اندازه پیامهای تراکنش را کاهش دهید. |
| <Result> | Optional* | <Result> |
دادههای قیمتگذاری برای برنامه سفر اتاق یا عنصر
|
* حداقل یکی از <PropertyDataSet> یا <Result>
لازم است. |
|||
مثالها
دادههای اتاق
مثال زیر دادههای اتاق را در «پیام تراکنش» تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
دادههای قیمتگذاری
مثال زیر دادههای قیمتگذاری را در پیام «تراکنش» تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
<MilesIncluded>
<NumberOfMiles>1200</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
</Result>
</Transaction>
نرخهای یک شب
مثال زیر دادههای قیمتگذاری را برای ۱ تا ۷ شب از ۷ ژوئن ۲۰۲۳ تعریف میکند:
<?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 | حداکثر تعداد مهمانانی که یک اتاق میتواند بهطور فیزیکی
در خود جای دهد. برای اتاق، ظرفیت بیشتر یا مساوی با تعداد مهمان است.
وقتی مشخص شد، این مقدار باید برابر یا بیشتر از مقدار
عنصر مقدار |
| <Description> | Optional | Object | شرح مفصلی از اتاق. این عنصر باید حاوی اطلاعاتی باشد که توسط عناصر دیگر یا عنصر <Name> شرح داده نشده است. هنگام مشخص کردن شرح اتاق، نباید از همه حروف بزرگ استفاده کنید.
عنصر
برای هر زبانی که ممکن است آگهی یا پیوند رایگان رزرو شما در آن نمایش داده شود، از یک عنصر مثال زیر نسخههای فرانسوی و انگلیسی شرح اتاق را نشان میدهد: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
| <Name> | Required | string | نام دسته اتاق. این مقدار باید با آنچه در صفحه مقصد هتل (قبلاً نقطه فروش) نشان داده میشود مطابقت داشته باشد. مقدار این عنصر را با حروف بزرگ تنظیم نکنید.
این عنصر یک عنصر فرزند تکی،
برای هر زبانی که ممکن است آگهی یا پیوند رایگان رزرو شما در آن نمایش داده شود، از یک عنصر مثال زیر نسخههای فرانسوی و انگلیسی نام اتاق را نشان میدهد: <Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | حداکثر تعداد مهمانانی که اتاق برای آنها درنظر گرفته شده است.
برای مثال، یک سوئیت بزرگ ممکن است ازنظر فیزیکی بتواند ۶ مهمان را در خود جای دهد (ظرفیت = ۶)، اما فقط برای حداکثر ۴ مهمان درنظر گرفته شده است.
این مقدار باید کمتر یا مساوی با عنصر مقدار
|
| <OccupancySettings> | Optional | Object | تنظیماتی که میتواند الزامات اشغال اتاق را محدود یا اصلاح کند.
عنصر
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> لازم نیست همه عناصر فرزند گنجانده شوند. |
| <PhotoURL> | Optional | Object | نشانی وب و زیرنویس اختیاری برای عکس اتاق یا
«بسته ترکیبی اتاق» موردنظر. میتوانید بیشاز یک <PhotoURL>
برای اتاق یا «بسته ترکیبی اتاق» مشخص کنید. هر نشانی وب عکس باید در
<PhotoURL> خودش باشد.
این عنصر عناصر فرزند زیر را میگیرد:
مثال: <PhotoURL>
<URL>https://www.example.com/static/bar/image1234.jpg</URL>
<Caption>
<Text text="A bright and breezy way to enjoy your mornin'
cuppa tea." language="en"/>
<Text text="Une façon lumineuse et aérée pour profiter
de votre journée tasse de thé." language="fr"/>
</Caption>
</PhotoURL>
<PhotoURL>
<URL>https://www.foo.com/static/bar/image5678.jpg</URL>
<Caption>
<Text text="Or, perhaps you prefer coffee." language="en"/>
<Text text="Ou peut-être préférez-vous le café." language="fr"/>
</Caption>
</PhotoURL> |
| <RoomFeatures> | Optional | <RoomFeatures> |
حاوی اطلاعاتی درباره ویژگیهای اتاق است. |
| <RoomID> | Required | string | شناسه یکتای اتاق. از این شناسه برای مطابقت دادن دادههای اتاق
با بلوکهای <Result> در بهروزرسانیهای قیمتگذاریتان استفاده کنید. برای
اطلاعات بیشتر، به فراداده «بسته ترکیبی اتاق» مراجعه کنید. (همچنین میتوانید از این شناسه برای ارجاع به تعریف اتاق مشترک در یک پیام تراکنش هنگام تعریف دادههای اتاق بهصورت درونخطی استفاده کنید.) |
مثالها
دادههای اتاق
مثال زیر دادههای اتاق را تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
فراداده اتاق و بسته
مثال زیر فراداده اتاق و بسته را تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
چند بسته ترکیبی اتاق
مثال زیر فراداده اتاق و بسته را برای چند «بسته ترکیبی اتاق» تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
<RoomFeatures>
ویژگیهای موجود در اتاق را تعریف میکند.
عنصر <RoomFeatures> در مکان زیر در سلسلهمراتب XML پیام تراکنش نشان داده میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<RoomFeatures>
نحو
عنصر <RoomFeatures> از نحو زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet ... > ... <RoomData> <RoomFeatures> <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle> <Beds> <Bed size="[single|semi_double|double|queen|king]"> <Width unit="cm" number="width"/> <Length unit="cm" number="length"/> </Bed> <!-- Include with any additional beds. --> </Beds> <Suite/> <Capsule/> <Roomsharing>[shared|private]</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>[smoking|non_smoking]</Smoking> <BathAndToilet relation="[together|separate]"> <Bath bathtub="[false|true]" shower="[false|true]"/> <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <!-- (Optional) Defines the type of views from the room. --> <!-- Example: <OceanView/> --> </Views> </RoomFeatures> ... </RoomData> ... </PropertyDataSet> </Transactions>
مشخصهها
عنصر <RoomFeatures> هیچ مشخصهای ندارد.
عناصر فرزند
عنصر <RoomFeatures> دارای عناصر فرزند زیر است:
| عنصر فرعی | الزامی است؟ | نوع | شرح |
|---|---|---|---|
| <JapaneseHotelRoomStyle> | Optional | enum | نشاندهنده سبک اتاق هتل ژاپنی است. مقادیر معتبر عبارتاند از:
|
| <Beds> | Optional | Object | به تعداد <Bed> موجود در اتاق، دارد. توجه
داشته باشید که فوتونهای ژاپنی نباید در اینجا شمرده شوند.
هر
<Bed> دارای عناصر فرزند زیر است:
<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 | حاوی اطلاعاتی درباره حمام و توالت در اتاق است.
شاخصه:
این عنصر بهطور اختیاری عناصر فرزند زیر را میگیرد:
مثال: <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 | گزینههای معتبر عبارتاند از:
|
مثالها
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).
بهتر است بهجای
|
| <ChargeCurrency> | Optional | enum | زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر از همان نحو <ChargeCurrency> در <Result> استفاده میکند.
مقدار پیشفرض |
| <CheckinTime> | Optional | Time | زودترین زمان ممکن برای اعلام حضور. زمان باید کمتر از ۲۴:۰۰ به وقت محلی هتل باشد. |
| <CheckoutTime> | Optional | Time | آخرین زمان ممکن برای تخلیه اتاق براساس زمان محلی هتل. |
| <Description> | Optional | Object | شرح مفصلی از بسته. این عنصر باید حاوی اطلاعاتی باشد که توسط عناصر دیگر یا عنصر <Name> شرح داده نشده است. هنگام مشخص کردن شرح اتاق، نباید از همه حروف بزرگ استفاده کنید.
عنصر <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 | حاوی اطلاعاتی درباره وعدههای غذایی در این بسته است.
عنصر
مشخصههای اختیاری فقط زمانی استفاده میشوند که برای اینکه فیلترهای غذا ( |
| <Name> | Required | string | نام بسته. این مقدار باید با آنچه در صفحه مقصد هتل نشان داده میشود مطابقت داشته باشد. مقدار این عنصر را با حروف بزرگ ننویسید.
این عنصر یک عنصر فرزند تکی، <Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | حداکثر تعداد مهمانانی که «بسته ترکیبی اتاق» برای آنها درنظر گرفته شده است.
برای مثال، یک سوئیت بزرگ ممکن است ازنظر فیزیکی بتواند ۶ مهمان را در خود جای دهد، اما فقط برای حداکثر ۴ مهمان درنظر گرفته شده است.
این مقدار باید کمتر یا مساوی با عنصر مقدار اگر این عنصر را هم در توجه: <Occupancy> ممکن است با
<OccupancyDetails> همراه باشد که نوع مهمانان
(بزرگسال یا کودک) را مشخص میکند. برای نحو و شرح عناصر فرزند، به <OccupancyDetails> مراجعه کنید.
|
| <PackageID> | Required | string | شناسه یکتای بسته. از این شناسه برای مطابقت دادن
دادههای «بسته ترکیبی اتاق» با بلوکهای (همچنین میتوانید از این شناسه برای ارجاع به تعریف «بسته ترکیبی اتاق» مشترک استفادهشده در یک پیام «تراکنش» هنگام تعریف دادههای «بسته ترکیبی اتاق» درونخطی استفاده کنید.) |
| <ParkingIncluded> | Optional | boolean | اینکه آیا «بسته ترکیبی اتاق» شامل پارکینگ رایگان میشود، درحالیکه
پارکینگ در این هتل سرویس پولی است. برای هتلی که پارکینگ رایگان ارائه میدهد، مقداری برای این عنصر مشخص نکنید.
مقادیر معتبر |
| <PhotoURL> | Optional | Object | (همانند <PhotoURL> در <RoomData>،
اما برای بسته (مثلاً عکسهای غذا).)
|
| <Refundable> | Optional | Object | امکان فهرست کردن نرخ بهعنوان کاملاً قابلاسترداد یا ارائه لغو رایگان را فراهم میکند. اگر ارائه نشود، هیچ اطلاعاتی درباره بازپرداخت نمایش داده نمیشود.
خطمشی استرداد مبلغ در سطح <PackageData> بر خطمشی استرداد مبلغ در سطح <Result> اولویت دارد. خطمشی استرداد مبلغ در سطح <Rates> بر خطمشی استرداد مبلغ در سطح <PackageData> اولویت دارد. قیمتگذاری قابلاسترداد را میتوان ازطریق گزینههای جایگزین بدون تغییر مستقیم طرحواره پیام تراکنش برای کاربران برجسته کرد. درباره این گزینهها بیشتر بدانید
خطمشی نرخهای قابلاسترداد.
مثال زیر عنصر <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> توجه: توصیه میکنیم همه مشخصهها را تنظیم کنید. وقتی یک یا چند مشخصه تنظیم نشده باشد، پیام هشدار وضعیت فید تولید میشود. اگر هیچ مشخصهای تنظیم نکنید، نرخ بهعنوان قابلاسترداد نمایش داده نمیشود. این مشخصهها عبارتاند از:
هنگام تنظیم مشخصهها، به موارد زیر توجه کنید:
|
| <MembershipBenefits |
Optional | boolean | نرخ شامل مزایای وضعیت ممتاز برای مدت اقامت است. شامل
پارامترهای زیر است:
|
| <CarRentalIncluded> | Optional | boolean | ردهبندی شامل کرایه خودرو رایگان برای مدت اقامت است. |
| <MilesIncluded> | Optional | boolean | نرخ شامل مایلهای مسافر همیشگی است. پارامترها عبارتاند از:
توجه: |
| <OnPropertyCredit> | Optional | boolean | نرخ شامل اعتبار درونملکی (غذا و نوشیدنی، استراحتگاه، اسپا، و غیره) میشود. پارامتر:
|
| <AirportTransportationIncluded> | Optional | Object | نرخ شامل حملونقل رایگان به/از فرودگاه اطراف است. مشخصه اختیاری
direction جهت حملونقل را
مشخص میکند. مقادیر معتبر عبارتند از:
from: حملونقل از فرودگاه به ملک ارائه میشود. اگر جهتی مشخص نشده باشد، این مقدار پیشفرض است.
to: حملونقل از ملک به فرودگاه ارائه میشود.
round_trip: حملونقل هم به فرودگاه و هم از فرودگاه ارائه میشود.
|
مثالها
بسته ترکیبی اتاق یکنفره
مثال زیر یک «بسته ترکیبی اتاق» را با ظرفیت ۲ نفر (یک بزرگسال و یک کودک) تعریف میکند و شامل صبحانه است:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Two certificates for continental
breakfast will be provided." language="en"/>
<Text text="Deux certificats pour le petit déjeuner
continental seront fournis." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
فرادادههای اتاق و بسته
مثال زیر فراداده اتاق و بسته را تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
چند بسته ترکیبی اتاق
مثال زیر فراداده اتاق و بسته را برای چند «بسته ترکیبی اتاق» تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
بسته ترکیبی اتاق با نرخها
مثال زیر فراداده اتاق و بسته را برای بسته ترکیبی اتاق با ویژگیهای نرخ تعریف میکند:
<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
...
</RoomData>
<!-- definitions of PackageData types including rate features -->
<PackageData>
<PackageID>room_with_addl_benefits</PackageID>
<Name>
<Text text="Acme Hotels 2017 Promotion Package" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<BreakfastIncluded>1</BreakfastIncluded>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Marriott Rewards"/>
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum"/>
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>1000</NumberOfMiles>
<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> باشد، بهشرطی که اندازه پیام از ۱۰۰ مگابایت بیشتر نشود.
نحو
عنصر <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 خواهد شد. ویژگی
ادغامپذیر به شما امکان میدهد قیمتهای اضافی را بدون حذف اطلاعات قیمتگذاری قبلی
در حافظه نهان Google ذخیره کنید. «پرسوجوی قیمتگذاری زنده» با
پاسخهای «بافت» همیشه این مشخصه را روی true تنظیم میکند
(صرفنظر از پاسخ پیام تراکنش شما). |
عناصر فرزند
عنصر <Result> دارای عناصر فرزند زیر است:
| عنصر فرعی | الزامی است؟ | نوع | شرح |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | یک یا چند صفحه مقصد که برای هتل واجدشرایط است. صفحه مقصد وبسایتی است که میتواند فرایند رزرو را برای کاربر نهایی انجام دهد. برای گنجاندن صریح صفحه مقصد خاصی (و مستثنی کردن
دیگران)، یک یا چند عنصر <AllowablePointsOfSale>
اضافه کنید که با مشخصه id
عنصر <PointOfSale> در فایل صفحههای مقصد
مطابقت داشته باشد.
اگر این عنصر را اضافه نکنید، همه صفحههای مقصد تعریفشده در فایل صفحههای مقصد برای استفاده در رزرو اتاق واجدشرایط درنظر گرفته میشوند. برای اطلاعات بیشتر، به نحو فایل صفحههای مقصد مراجعه کنید. |
| <Baserate> | Optional | float | قیمت اتاق برای اقامت. مقدار این عنصر باید نشاندهنده موارد زیر باشد:
وقتی اتاق برای برنامه سفر دردسترس نباشد،
برای برداشتن «بسته ترکیبی اتاق»، از دستورالعملهای برداشتن بسته ترکیبی اتاق استفاده کنید.
<Baserate currency="USD">1200.40</Baserate> عنصر
|
| <ChargeCurrency> | Optional | enum | زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر میتواند
در پیام تراکنش در عنصر <Result>
برای قیمت هتل یا بلوک <PackageData>
برای بسته ترکیبی اتاق استفاده شود.
مقادیر معتبر عبارتاند از:
مقدار پیشفرض |
| <Checkin> | Required | Date | تاریخ ورود برای برنامه سفر بااستفاده از قالب تاریخ. ترکیب عنصر <Nights> و عنصر <Checkin> یک برنامه سفر را تشکیل میدهد. |
| Optional | string | منسوخشده: فیلد سفارشیای را تعریف میکند که میتوانید از آن برای
ارسال دادههای اضافی مرتبط با هتل استفاده کنید. میتوانید حداکثر پنج مقدار سفارشی را با نامهای عنصر زیر ارسال کنید:
عناصر |
|
| <ExpirationTime> | Optional | DateTime | تاریخ و ساعتی که قیمت منقضیشده درنظر گرفته میشود (حداقل ۳ ساعت).
توصیه میکنیم اگر مُهر زمان انقضا برای ساختار قیمتگذاریتان حیاتی نیست، آن را ارائه نکنید. Google هیچ قیمتی را که منقضی شده باشد ارائه نمیدهد و هر برنامه سفری که قیمت منقضیشده داشته باشد واجدشرایط پرسوجوی قیمتگذاری زنده خواهد شد. |
| <MilesIncluded> | Optional | boolean | نرخ شامل مایلهای مسافر همیشگی است. پارامترها عبارتاند از:
توجه: |
| <Nights> | Required | integer | تعداد شبهای برنامه سفر. مقدار عنصر
<Nights> باید عدد صحیح مثبت باشد.
ترکیب <Nights> و
<Checkin> برنامه سفر را تشکیل میدهد. |
| <OtherFees> | Optional | float | کارمزدهایی غیراز نرخ پایه و مالیات که بر قیمت نهایی اتاق تأثیر میگذارد. عنصر <OtherFees>
یک مشخصه الزامی تکی، currency، را میگیرد که
کد ارز سهحرفی را برای کارمزدها تعریف میکند. بهعنوان مثال، USD.
اگر |
| <Occupancy> | Optional | integer | حداکثر تعداد مجاز ساکنان را برای این نرخ مشخص میکند.
وقتی <Occupancy> مستقیماً زیر <Result> ظاهر میشود،
باید 2 یا بیشتر را مشخص کند. <Occupancy> ممکن است
با <OccupancyDetails> همراه باشد که نوع مهمانان (بزرگسالان یا کودکان) را مشخص میکند. اگر نوع مهمان مشخص نشده باشد،
فرض میشود که بزرگسال است. برای نحو و شرح عناصر فرزند، به <OccupancyDetails> مراجعه کنید. اگر عنصر
<Occupancy> ارائه نشده باشد، ظرفیت بهطور پیشفرض
2 درنظر گرفته میشود.
نکته کلیدی: نرخهای اشغال کودک فقط باید ازطریق قیمتگذاری زنده با بافت ارسال شود و نه ازطریق قیمتگذاری کششی یا تغییریافته. توجه: برای فعال کردن ویژگی ارسال قیمتهای غیردونفره، با تیم پشتیبانی تماس بگیرید. |
| <PackageID> | Optional | string | شناسه یکتای بسته برای نگاشت آن به دادههای بسته ازپیش تعریفشده.
همچنین برای پر کردن متغیر صفحه مقصد PACKAGE-ID استفاده میشود.
برای اطلاعات بیشتر، به
فراداده
بسته ترکیبی اتاق مراجعه کنید.
گنجاندن |
| <Property> | Required | string | شناسه هتلی که تحتتأثیر دادههای مرتبط (قیمت،
برنامه سفر، «بسته ترکیبی اتاق»، یا فراداده) قرار گرفته است. مقدار این عنصر باید
رشته باشد. مقدار این عنصر باید با فهرستگان
<id> که در «فید فهرست هتل» تعریف کردهاید مطابقت داشته باشد.
|
| <Rates> | Optional | <Rates> |
ظرفی برای یک یا چند بلوک <Rate>. هر <Rate> در
<Rates> قیمت متفاوتی را برای ترکیب اتاق/برنامه سفر
تعریف میکند.
وقتی چند نرخ برای ترکیب اتاق/برنامه سفر یکسان وجود دارد یا وقتی نرخ مجاز نیست در سطح توجه: در |
| <Refundable> | Optional | Object | امکان فهرست کردن نرخ بهعنوان کاملاً قابلاسترداد یا ارائه لغو رایگان را فراهم میکند. اگر ارائه نشود، هیچ اطلاعاتی درباره بازپرداخت نمایش داده نمیشود.
خطمشی استرداد مبلغ در سطح <PackageData> بر خطمشی استرداد مبلغ در سطح <Result> اولویت دارد. خطمشی استرداد مبلغ در سطح <Rates> بر خطمشی استرداد مبلغ در سطح <PackageData> اولویت دارد. قیمتگذاری قابلاسترداد را میتوان ازطریق گزینههای جایگزین بدون تغییر مستقیم طرحواره پیام تراکنش برای کاربران برجسته کرد. درباره
خطمشی نرخهای قابلاسترداد بیشتر بدانید.
مثال زیر عنصر <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> توجه: توصیه میکنیم همه مشخصهها را تنظیم کنید. وقتی یک یا چند مشخصه تنظیم نشده باشد، پیام هشدار وضعیت فید تولید میشود. اگر هیچ مشخصهای تنظیم نکنید، نرخ بهعنوان قابلاسترداد نمایش داده نمیشود. این مشخصهها عبارتاند از:
هنگام تنظیم مشخصهها، به موارد زیر توجه کنید:
|
| <RoomBundle> | Optional | <RoomBundle> |
محفظهای برای اطلاعات مربوط به شرح فیزیکی قیمتگذاریشده اتاق،
هرگونه بستهبندی امکانات رفاهی، و برخی جزئیات خطمشی خرید برای
هتل و برنامه سفر ارائهشده.
بهطور کلی، از این عنصر برای تعریف قیمتگذاری اتاق پایه و انواع مختلف اتاقها در همان ملک استفاده کنید. اگرچه امکان تعریف شرح «بسته ترکیبی اتاق» بهصورت درونخطی وجود دارد، باید از «پیام تراکنش» جداگانهای برای تعریف آن اطلاعات استفاده کنید. Google فراداده را ذخیره میکند تا بتوانید در همه بهروزرسانیهای قیمتگذاری آینده بهجای تکرار کردن آن، به آن ارجاع دهید. |
| <RoomID> | Optional | string | شناسه یکتای اتاق برای تخصیص آن به دادههای اتاق ازپیش تعریفشده. همچنین
برای پر کردن متغیر صفحه مقصد PARTNER-ROOM-ID استفاده میشود.
برای اطلاعات بیشتر، به
فراداده
بسته ترکیبی اتاق مراجعه کنید.
گنجاندن |
| <Tax> | Optional | float | مالیاتهایی که برای قیمت نهایی اتاق محاسبه میشود.
عنصر <Tax> یک مشخصه الزامی تکی،
currency، میگیرد که کد ارز سهحرفی
را برای مالیاتها تعریف میکند. بهعنوان مثال، USD. اگر <Baserate> بزرگتر از صفر باشد، عنصر <Tax> الزامی است.
اگر مشخصه «all_inclusive» عنصر |
| <Unavailable> | Optional | Object | نشان میدهد که برنامه سفر برای رزرو کردن دردسترس نیست. بهعنوان
محفظهای برای دلایل دقیقتر دردسترس نبودن برنامه سفر عمل میکند. یک
یا چند مورد از دلایل عدم دسترسی زیر ممکن است در زیر برچسب
<Unavailable> قرار گرفته باشد:
|
مثالها
مثال چنددارایی
مثال زیر یک برنامه سفر و قیمتگذاری آن را برای دو ملک تعریف میکند:
<?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 | برای نرخهای شرطی، این شناسه با نرخی در تعریفی در فایل «تعریف قانون نرخ» شما مطابقت دارد. حد نویسه برای این فیلد ۴۰ نویسه است. این شناسه نمیتواند رشته خالی باشد. |
عناصر فرزند
عنصر <Rates> دارای عناصر فرزند زیر است:
| عنصر فرعی | الزامی است؟ | نوع | شرح |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | یک یا چند صفحه مقصد که برای هتل واجدشرایط است. این عنصر از همان نحوی استفاده میکند که
<AllowablePointsOfSale> در <Result> استفاده میکند. |
| <Baserate> | Required | float | قیمت اتاق برای اقامت. این عنصر از همان نحوی استفاده میکند که
<Baserate> در <Result> استفاده میکند.
توجه: عنصر فرزند |
| <ChargeCurrency> | Optional | enum | زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر از همان نحوی استفاده میکند که
<ChargeCurrency> در
<Result> استفاده میکند. |
| Optional | string | منسوخشده: فیلدهای سفارشی که میتوانید برای ارسال
دادههای اضافی مرتبط با هتل به صفحه مقصد استفاده کنید. این عنصر
از همان نحوی استفاده میکند که <Custom[1‑5]> در
<Result> استفاده میکند. حد مجاز برای هر فیلد سفارشی ۲۰۰ نویسه است. برای
اطلاعات بیشتر، به
فایلهای صفحه مقصد مراجعه کنید. اگر عناصر <Custom> در عنصر <Result> ارائه شده باشند، در عنصر <RoomBundle> به ارث برده نمیشوند و باید بهطور جداگانه برای هر <RoomBundle> تعریف شوند یا درصورت نیاز میتوانند در <PackageData> گنجانده شوند.
|
|
| <ExpirationTime> | Optional | DateTime | تاریخ و زمانی که نرخ منقضیشده درنظر گرفته میشود. این
عنصر از همان نحوی استفاده میکند که
<ExpirationTime> در <Result> استفاده میکند. |
| <MilesIncluded> | Optional | boolean | نرخ شامل مایلهای مسافر همیشگی است. پارامترها عبارتاند از:
توجه: |
| <Occupancy> | Optional | integer | حداکثر تعداد مجاز ساکنان را برای این نرخ مشخص میکند. اگر مشخص نشده باشد، فرض میشود که همان نرخ اصلی است.
|
| <OtherFees> | Required | float | کارمزدهایی غیراز نرخ پایه و مالیات که بر قیمت نهایی اتاق تأثیر میگذارند. این عنصر از همان نحو
<OtherFees> در <Result> استفاده میکند.
اگر مشخصه «all_inclusive» عنصر |
| <Refundable> | Optional | Object | امکان فهرست کردن نرخ بهعنوان کاملاً قابلاسترداد یا ارائه لغو رایگان را فراهم میکند. اگر ارائه نشود، هیچ اطلاعاتی درباره بازپرداخت نمایش داده نمیشود.
خطمشی استرداد مبلغ در سطح <PackageData> بر خطمشی استرداد مبلغ در سطح <Result> اولویت دارد. خطمشی استرداد مبلغ در سطح <Rates> بر خطمشی استرداد مبلغ در سطح <PackageData> اولویت دارد. قیمتگذاری قابلاسترداد را میتوان ازطریق گزینههای جایگزین بدون تغییر مستقیم طرحواره پیام تراکنش برای کاربران برجسته کرد. درباره این گزینهها بیشتر بدانید
خطمشی نرخهای قابلاسترداد.
مثال زیر عنصر <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> توجه: توصیه میکنیم همه مشخصهها را تنظیم کنید. وقتی یک یا چند مشخصه تنظیم نشده باشد، پیام هشدار وضعیت فید تولید میشود. اگر هیچ مشخصهای تنظیم نکنید، نرخ بهعنوان قابلاسترداد نمایش داده نمیشود. این مشخصهها عبارتاند از:
هنگام تنظیم مشخصهها، به موارد زیر توجه کنید:
|
| <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> استفاده میکند، با این استثنا:
|
| <BreakfastIncluded> | Optional | boolean | مشخص میکند که آیا این «بسته ترکیبی اتاق» شامل صبحانه با نرخ است یا نه. |
| <ChargeCurrency> | Optional | enum | زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر از همان نحو <ChargeCurrency> در <Result> استفاده میکند.
مقدار پیشفرض |
| Optional | string | منسوخشده: فیلدهای سفارشی برای ارسال دادههای اضافی
به صفحههای مقصد برای «بسته ترکیبی اتاق». این عناصر از همان
نحو <Custom[1-5]> در <Result> استفاده میکنند. حد مجاز برای هر فیلد سفارشی ۲۰۰ نویسه است. برای اطلاعات بیشتر، به
فایلهای صفحه مقصد مراجعه کنید.
متغیرهای سفارشی فقط زمانی فهرست میشوند که قیمتها را در پیام تراکنش ارسال کنید. اگر عناصر <Custom> در عنصر <Result> ارائه شده باشند، در عنصر <RoomBundle> به ارث برده نمیشوند و باید بهطور جداگانه برای هر <RoomBundle> تعریف شوند یا درصورت نیاز میتوانند در <PackageData> گنجانده شوند.
|
|
| <InternetIncluded> | Optional | boolean | اگر «بسته ترکیبی اتاق» شامل دسترسی به اینترنت رایگان باشد، درحالیکه بستههای دیگر شامل این امکانات رفاهی نباشد. این عنصر را برای «بستههای ترکیبی اتاق» در هتلی که اینترنت رایگان برای همه اتاقها ارائه میدهد تنظیم نکنید. این عنصر برای اینترنت سیمی داخل اتاق یا اینترنت بیسیم که در اتاقهای مهمان دردسترس نیست اعمال نمیشود. |
| <MilesIncluded> | Optional | boolean | نرخ شامل مایلهای مسافر همیشگی است. پارامترها عبارتاند از:
توجه: |
| <Occupancy> | Required | integer | حداکثر تعداد مجاز ساکنان را برای این نرخ مشخص میکند. برای مثال، یک سوئیت بزرگ ممکن است ازنظر فیزیکی بتواند ۶ مهمان را در خود جای دهد، اما «بسته ماه عسل» فقط به ۲ مهمان اجازه میدهد.
این مقدار باید کمتر یا مساوی با
هنگام تعریف کردن ظرفیت در نشانی وب صفحه مقصد، از متغیرهای
مقدار نکتهها:
|
| <OtherFees> | Required | float | کارمزدهایی غیراز نرخ پایه و مالیات که بر قیمت نهایی اتاق تأثیر میگذارد. عنصر <OtherFees>
یک مشخصه الزامی تکی، currency، را میگیرد که
کد ارز سهحرفی را برای کارمزدها تعریف میکند. برای مثال، از
USD برای دلار امریکا استفاده کنید. |
| <PackageID> | Optional (recommended) | string | شناسه یکتای دادههای بسته. از این شناسه برای مطابقت دادن
دادههای «بسته ترکیبی اتاق» با آنچه در <PackageData> ارسال شده است استفاده کنید. برای
اطلاعات بیشتر، به
فراداده
«بسته ترکیبی اتاق» مراجعه کنید. (همچنین میتوانید از این شناسه برای ارجاع به تعریف «بسته ترکیبی اتاق» مشترک استفاده کنید که در یک پیام «تراکنش» هنگام تعریف دادههای «بسته ترکیبی اتاق» بهصورت درونخطی استفاده میشود.) |
| <ParkingIncluded> | Optional | boolean | اینکه آیا «بسته ترکیبی اتاق» شامل پارکینگ رایگان میشود یا نه، درحالیکه
پارکینگ در این هتل معمولاً سرویسی پولی است. برای هتلی که پارکینگ رایگان ارائه میدهد، مقداری برای این عنصر مشخص نکنید.
مقادیر معتبر |
| <RatePlanID> | Optional | string | «شناسه طرح نرخ» نشاندهنده شناسه یکتا برای ترکیب اتاق و بسته است. برای مثال، با داشتن مقدار
<RoomID> برابر با ۵ و مقدار
<PackageID> برابر با ABC، میتوانید از مقدار
5-ABC برای <RatePlanID> استفاده کنید. قویاً توصیه میکنیم از
RatePlanID بهعنوان متغیری برای ساختن نشانی وب صفحه مقصد پویای خود
(قبلاً «نقطه فروش») استفاده کنید.
توجه: برای عملکرد بهینه، RatePlanID باید حداکثر ۵۰ نویسه داشته باشد. برای اطلاعات بیشتر، به استفاده از متغیرها و شرایط مراجعه کنید. |
| <Rates> | Optional | <Rates> |
نرخهایی که پیشفرضهای این «بسته ترکیبی اتاق» را لغو میکنند. این
عنصر از همان نحو <Rates> در <Result> استفاده میکند. |
| <Refundable> | Optional | Object | امکان فهرست کردن نرخ بهعنوان کاملاً قابلاسترداد یا ارائه لغو رایگان را فراهم میکند. اگر ارائه نشود، هیچ اطلاعاتی درباره بازپرداخت نمایش داده نمیشود.
خطمشی استرداد مبلغ در سطح <PackageData> بر خطمشی استرداد مبلغ در سطح <Result> اولویت دارد. خطمشی استرداد مبلغ در سطح <Rates> بر خطمشی استرداد مبلغ در سطح <PackageData> اولویت دارد. قیمتگذاری قابلاسترداد را میتوان ازطریق گزینههای جایگزین بدون تغییر مستقیم طرحواره پیام تراکنش برای کاربران برجسته کرد. درباره این گزینهها بیشتر بدانید
خطمشی نرخهای قابلاسترداد.
مثال زیر عنصر <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> توجه: توصیه میکنیم همه مشخصهها را تنظیم کنید. وقتی یک یا چند مشخصه تنظیم نشده باشد، پیام هشدار وضعیت فید تولید میشود. اگر هیچ مشخصهای تنظیم نکنید، نرخ بهعنوان قابلاسترداد نمایش داده نمیشود. این مشخصهها عبارتاند از:
هنگام تنظیم مشخصهها، به موارد زیر توجه کنید:
|
| <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 | تعداد مهمانان بزرگسال. حداقل:۱، حداکثر:۲۰. |
| <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>