בדף הזה מופיע מידע על הודעות עסקאות מבוססות XML.
<Transaction>
אלמנט השורש של הודעת עסקה
הוא <Transaction>. זהו קובץ שמכיל מידע תיאורי על חדרים וחבילות, ועל התמחור והזמינות שלהם.
הרכיב <Transaction> מופיע במקום הבא בהיררכיית ה-XML של הודעת העסקה:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
בהודעות שמשתמשות ב-<Transaction> כרכיב הבסיס, צריך להיות לפחות רכיב צאצא אחד. הודעות עסקיות יכולות להכיל כל מספר של רכיבי צאצא, כל עוד הגודל הכולל של ההודעה לא עולה על 100MB.
תחביר
רכיב <Transaction> משתמש בתחביר הבא:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">
<!-- Defines data about a room or package (Room Bundle) -->
<PropertyDataSet>
...
</PropertyDataSet>
<!-- Updates/sets prices and availability for rooms and Room Bundles -->
<!-- (Also removes itineraries from inventory) -->
<Result>
...
</Result>
</Transaction>
מאפיינים
לרכיב <Transaction> יש את המאפיינים הבאים:
| מאפיין | חובה? | סוג | תיאור |
|---|---|---|---|
| id | Required | מחרוזת | מזהה ייחודי לכל הודעת עסקה. |
| partner | Optional | string | חשבון השותף שאליו מתייחסת הודעת העסקה. בדרך כלל משתמשים באפשרות הזו אם הקצה העורפי מספק פידים של מחירים לכמה חשבונות שותפים. ערך המחרוזת הזה הוא הערך של 'מפתח השותף' שמופיע בדף הגדרות החשבון ב-Hotel Center. |
| timestamp | Required | DateTime | המועד שבו נשלחה הודעת העסקה. כל הודעה שנשלחה עם חותמת זמן ב-24 השעות האחרונות תעבור עיבוד, והודעות שלא עומדות בתנאי הזה יימחקו. ההודעות מעובדות לפי הסדר של |
רכיבי צאצא
הרכיב <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>
מחירים ללילה
בדוגמה הבאה מוגדרים נתוני תמחור לשהייה של לילה אחד עד 7 לילות החל מ-7 ביוני 2023:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">209.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">419.98</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>3</Nights>
<Baserate currency="USD">614.97</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>4</Nights>
<Baserate currency="USD">819.96</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>5</Nights>
<Baserate currency="USD">999.95</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>6</Nights>
<Baserate currency="USD">1193.94</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>7</Nights>
<Baserate currency="USD">1259.93</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
</Transaction>
תעריפי בסיס ותעריפים בלעדיים
בדוגמה הבאה מוצגת הודעת עסקה שמכילה מחיר בסיסי ומחיר מותנה:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</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 | מספר האורחים המקסימלי שהחדר מיועד להם.
לדוגמה, סוויטה גדולה יכולה להכיל פיזית 6 אורחים (הקיבולת היא 6), אבל היא מיועדת ל-4 אורחים בלבד.
הערך הזה צריך להיות קטן מהערך של רכיב הערך של |
| <OccupancySettings> | Optional | Object | הגדרות שיכולות להגביל או לשנות את דרישות התפוסה של חדר.
הרכיב
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> לא צריך לכלול את כל רכיבי הצאצא. |
| <PhotoURL> | Optional | Object | כתובת URL וכיתוב אופציונלי לתמונה של החדר או של חבילת החדר. אפשר לציין יותר מ-<PhotoURL>
לחדר או לחבילת חדר. כל כתובת URL של תמונה צריכה להיות בתג <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>
שתי מיטות זוגיות
הדוגמה הבאה היא של חדר בסגנון יפני עם שתי מיטות double.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>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 | השעה המוקדמת ביותר שאפשר לבצע בה צ'ק-אין. השעה חייבת להיות לפני 24:00 בשעון המקומי של המלון. |
| <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 | מספר האורחים המקסימלי שחבילת החדרים מיועדת להם.
לדוגמה, יכול להיות שסוויטה גדולה יכולה להכיל פיזית 6 אורחים, אבל היא מיועדת ל-4 אורחים בלבד.
הערך הזה צריך להיות קטן מהערך של רכיב הערך של אם מציינים את האלמנט הזה גם ב- הערה: <Occupancy> may be accompanied by
<OccupancyDetails>,which specifies the type of guests
(adults or children). מידע על התחביר ותיאור של רכיבי צאצא זמין במאמר <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: יש הסעות אל שדה התעופה וממנו.
|
דוגמאות
חבילה של חדר יחיד
בדוגמה הבאה מוגדר חבילת חדרים אחת, עם תפוסה של 2 (מבוגר אחד וילד אחד) שכוללת ארוחת בוקר:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Two certificates for continental
breakfast will be provided." language="en"/>
<Text text="Deux certificats pour le petit déjeuner
continental seront fournis." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
מטא-נתונים של חדרים וחבילות
בדוגמה הבאה מוגדרים מטא-נתונים של חדר ושל חבילה:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
חבילות לכמה חדרים
בדוגמה הבאה מוגדרים מטא-נתונים של חדרים וחבילות לכמה חבילות של חדרים:
<?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>, כל עוד גודל ההודעה לא עולה על 100MB.
תחביר
רכיב <Result> משתמש בתחביר הבא:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <!-- Required --> <Property>hotel_ID</Property> <!-- Required --> <Checkin>YYYY-MM-DD</Checkin> <!-- Required --> <Nights>number_of_nights</Nights> <Baserate currency="currency_code">price</Baserate> <!-- Only required when <Baserate> contains a real price --> <Tax currency="currency_code">tax_amount</Tax> <!-- Only required when <Baserate> contains a real price --> <OtherFees currency="currency_code">fee_amount</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <RoomID>room_ID</RoomID> <PackageID>package_ID</PackageID> <ExpirationTime>expiration_time</ExpirationTime> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <!-- For Baserate, occupancy value must be greater than or equal to 2. If a value is not provided for occupancy, it defaults to 2. --> <!-- Child occupancy rates should only be sent through Live pricing with context and not through Pull or Changed pricing --> <OccupancyDetails>occupancy_info</OccupancyDetails> <Rates>...</Rates> <RoomBundle>...</RoomBundle> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> ... </AllowablePointsOfSale> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <!-- Add Loyalty point information --> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> </Result> ... </Transaction>
מאפיינים
לרכיב <Result> יש את המאפיינים הבאים:
| מאפיין | חובה? | סוג | תיאור |
|---|---|---|---|
| mergeable | Optional | boolean | כברירת מחדל, מחירים חדשים של מלון ספציפי ומועד שהייה ספציפי יחליפו את כל המחירים הקודמים (שלא פג תוקפם) שקיימים במטמון של Google. המאפיין
mergeable מאפשר לכם לשמור במטמון של Google מחירים נוספים
בלי למחוק את פרטי התמחור הקודמים. המאפיין הזה תמיד יוגדר לערך true בתשובות של שאילתות מחירים בזמן אמת עם הקשר (ללא קשר לתשובה של הודעת העסקה). |
רכיבי צאצא
הרכיב <Result> כולל את רכיבי הבן הבאים:
| רכיב צאצא | חובה? | סוג | תיאור |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | דף נחיתה אחד או יותר שעומדים בדרישות של המלון. דף נחיתה הוא אתר שיכול לטפל בתהליך ההזמנה עבור משתמש הקצה. כדי לכלול באופן מפורש דף נחיתה מסוים (ולהחריג אחרים), מוסיפים קובץ של דפי נחיתה עם רכיב <AllowablePointsOfSale>
אחד או יותר שתואמים למאפיין id של רכיב <PointOfSale>.
אם לא כוללים את הרכיב הזה, כל דפי הנחיתה שמוגדרים בקובץ דפי הנחיתה נחשבים ככשירים לשימוש בהזמנת החדר. מידע נוסף מופיע במאמר בנושא תחביר של קובצי דפי נחיתה. |
| <Baserate> | Optional | float | המחיר של החדר לשהייה. הערך של הרכיב הזה צריך לשקף את הפרטים הבאים:
אם החדר לא זמין בתאריכי השהייה,
צריך להשמיט את כדי להסיר חבילת חדרים, פועלים לפי ההוראות במאמר הסרת חבילת חדרים. במאפיין <Baserate currency="USD">1200.40</Baserate> רכיב
|
| <ChargeCurrency> | Optional | enum | מתי ואיפה המשתמש משלם על הזמנה. אפשר להשתמש ברכיב הזה בהודעה על עסקה ברכיב <Result>
בבלוק Hotel Price או <PackageData> בבלוק Room Bundle.
הערכים החוקיים כוללים:
ערך ברירת המחדל הוא |
| <Checkin> | Required | Date | תאריך הצ'ק-אין לתוכנית הנסיעה בפורמט Date. השילוב של רכיב <Nights> ורכיב <Checkin> יוצר מסלול טיול. |
| Optional | string | Deprecated: הגדרה של שדה מותאם אישית שאפשר להשתמש בו כדי להעביר נתונים נוספים שמשויכים למלון. אפשר להעביר עד חמישה ערכים מותאמים אישית עם שמות הרכיבים הבאים:
רכיבי חשוב: אם אתם רוצים להשתמש במשתני |
|
| <ExpirationTime> | Optional | DateTime | התאריך והשעה שבהם המחיר נחשב כמחיר שתוקפו פג (מינימום 3 שעות).
מומלץ לא לספק חותמות זמן של תפוגה אם הן לא קריטיות למבנה התמחור שלכם. Google לא מציגה מחירים שתוקפם פג, וכל מסלול נסיעה שיש לו מחיר שתוקפו פג יהיה כשיר ל שאילתות מחירים בזמן אמת. |
| <MilesIncluded> | Optional | boolean | המחיר כולל מיילים של נוסע מתמיד. הפרמטרים כוללים:
הערה: |
| <Nights> | Required | integer | מספר הלילות במסלול הנסיעה. הערך של רכיב <Nights> חייב להיות מספר שלם חיובי.
השילוב של <Nights> ושל <Checkin> יוצר מסלול טיול. |
| <OtherFees> | Optional | float | עמלות שאינן המחיר הבסיסי ומיסים שמשפיעים על המחיר הסופי של חדר. רכיב <OtherFees> מקבל מאפיין חובה יחיד, currency, שמגדיר את קוד המטבע בן שלוש האותיות של העמלות. לדוגמה, USD.
רכיב |
| <Occupancy> | Optional | integer | מציין את מספר האורחים המקסימלי שמותר לכלול במחיר הזה.
אם <Occupancy> מופיע ישירות מתחת ל-<Result>,
צריך לציין 2 או יותר. <Occupancy> may
be accompanied by <OccupancyDetails>, which specifies
the type of guests (adults or children). אם לא מציינים סוגי אורחים,
ברירת המחדל היא מבוגרים. אפשר לעיין ב-<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. האלמנט
<Tax> הוא חובה אם הערך של
<Baserate> גדול מאפס.
אם המאפיין 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> כדי לספק תמחור בכמה תעריפים לנכס ספציפי. הדוגמה הבאה שימושית גם לנכסים להשכרה לטווח קצר:
<?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 | במקרה של מחירים מותנים, המזהה הזה תואם להגדרה בקובץ Rate Rule Definition. מגבלת התווים בשדה הזה היא 40. המזהה הזה לא יכול להיות מחרוזת ריקה. |
רכיבי צאצא
הרכיב <Rates> כולל את רכיבי הבן הבאים:
| רכיב צאצא | חובה? | סוג | תיאור |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | דף נחיתה אחד או יותר שעומדים בדרישות של המלון. הרכיב הזה משתמש באותו תחביר כמו <AllowablePointsOfSale> ב-<Result>. |
| <Baserate> | Required | float | המחיר של החדר לשהייה. הרכיב הזה משתמש באותו תחביר כמו <Baserate> ב-<Result>.
הערה: אי אפשר להגדיר את רכיב הצאצא |
| <ChargeCurrency> | Optional | enum | מתי ואיפה המשתמש משלם על הזמנה. הרכיב הזה משתמש באותו תחביר כמו <ChargeCurrency> ב-<Result>. |
| Optional | string | הוצא משימוש: שדות בהתאמה אישית שבהם אפשר להעביר נתונים נוספים שקשורים למלון לדף נחיתה. הרכיב הזה משתמש באותו תחביר כמו <Custom[1‑5]> ב-<Result>. כל שדה מותאם אישית יכול להכיל עד 200 תווים. מידע נוסף זמין במאמר בנושא
קבצים של דפי נחיתה. אם רכיבי <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>. יש מגבלה של 200 תווים לכל שדה מותאם אישית. מידע נוסף זמין במאמר בנושא קבצים של דפי נחיתה.
משתנים מותאמים אישית מופיעים רק כששולחים את המחירים בהודעת העסקה. אם רכיבי <Custom> מסופקים ברכיב <Result>, הם לא עוברים בירושה לרכיב <RoomBundle> וצריך להגדיר אותם בנפרד לכל רכיב <RoomBundle>, או שאפשר לכלול אותם ברכיב <PackageData> אם יש צורך בכך.
חשוב: אם אתם רוצים להשתמש במשתני |
|
| <InternetIncluded> | Optional | boolean | אם חבילת חדרים כוללת גישה לאינטרנט ללא תשלום, בעוד שחבילות אחרות לא כוללות את השירות הזה. אל תגדירו את הרכיב הזה לחבילות חדרים במלון שמספק אינטרנט בחינם בכל החדרים. האלמנט הזה לא רלוונטי לאינטרנט קווי בחדר או לאינטרנט אלחוטי שלא זמין בחדרי האורחים. |
| <MilesIncluded> | Optional | boolean | המחיר כולל מיילים של נוסע מתמיד. הפרמטרים כוללים:
הערה: |
| <Occupancy> | Required | integer | מציין את מספר האורחים המקסימלי שמותר לכלול במחיר הזה. לדוגמה, יכול להיות שסוויטה גדולה תתאים ל-6 אורחים, אבל חבילת ירח הדבש מאפשרת רק ל-2 אורחים.
הערך הזה צריך להיות קטן מהערך של כשמגדירים את מספר האורחים בכתובת דף הנחיתה, צריך להשתמש במשתנים הערך של הערות:
|
| <OtherFees> | Required | float | עמלות שאינן המחיר הבסיסי ומיסים שמשפיעים על המחיר הסופי של חדר. רכיב <OtherFees> מקבל מאפיין חובה יחיד, currency, שמגדיר את קוד המטבע בן שלוש האותיות של העמלות. לדוגמה, משתמשים ב-USD לדולר ארה"ב. |
| <PackageID> | Optional (recommended) | string | המזהה הייחודי של נתוני החבילה. אפשר להשתמש במזהה הזה כדי להשוות את הנתונים של חבילת הציוד לחדר עם הנתונים שנשלחו ב-<PackageData>. מידע נוסף זמין במאמר מטא-נתונים של חבילות חדרים. (אפשר גם להשתמש במזהה הזה כדי להפנות להגדרה נפוצה של חבילת חדרים שמשמשת בהודעת עסקה יחידה כשמגדירים נתונים של חבילת חדרים בשורה.) |
| <ParkingIncluded> | Optional | boolean | אם חבילת החדרים כוללת חניה ללא תשלום, במקרים שבהם החניה היא שירות בתשלום במלון. אל תציינו ערך לרכיב הזה במלון שמציע חניה בחינם.
הערכים האפשריים הם |
| <RatePlanID> | Optional | string | מזהה תוכנית המחירים מייצג את המזהה הייחודי של שילוב של חדר וחבילה. לדוגמה, אם הערך של <RoomID> הוא 5 והערך של <PackageID> הוא ABC, אפשר להשתמש בערך 5-ABC בשביל <RatePlanID>. מומלץ מאוד להשתמש ב-RatePlanID כמשתנה כדי ליצור את כתובת דף הנחיתה הדינמי (לשעבר נקודת המכירה).
הערה: כדי להשיג ביצועים אופטימליים, האורך של RatePlanID צריך להיות עד 50 תווים. מידע נוסף זמין במאמר שימוש במשתנים ובתנאים. |
| <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 | מספר האורחים המבוגרים. מינימום:1, מקסימום:20. |
| <Children> | Optional | Object | קונטיינר של רכיב <Child> אחד או יותר. |
| <Child age> | Optional | integer | הגיל המקסימלי של הילד או הילדה – לדוגמה, <Child age="17">. |
דוגמאות
בדוגמאות הבאות אפשר לראות איך התג <OccupancyDetails> יכול להופיע בתוך התג <Results>, התג <RoomBundle> או רכיב הבן <Rates>.
תשובה לתוצאה
בדוגמה הבאה מוגדר מסלול נסיעה אחד והתמחור שלו עבור נכס אחד בתגובה לשאילתת מחירים בזמן אמת, שבה המשתמש ציין את מספר האורחים ואת סוגי האורחים. בדוגמה הזו, <OccupancyDetails> – 2 מבוגרים וילד אחד – מוחזרים ב-<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>
חבילת חדר
בדוגמה הבאה מוגדרת תפוסה של 2 מבוגרים וילד אחד ללילה אחד, עם תעריף שניתן להחזר. בדוגמה הזו, התווים <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> שמוגבלים לתפוסה של 2 מבוגרים ו-2 ילדים. כאן, הערכים של <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>