ภาพรวม
API นี้ช่วยให้คุณระบุส่วนลดที่เป็นไปได้ ในบรรดาโปรโมชันที่ระบุ Google จะใช้โปรโมชันที่มีสิทธิ์หรือชุดโปรโมชันที่ทำให้ได้ราคาต่ำที่สุด หากคุณกำลังมองหา API ที่รองรับการปรับอัตราที่กำหนดเองซึ่งสามารถเพิ่มหรือลดราคาเมื่อตรงตามเงื่อนไข ให้ลองใช้ Rate Modifications API โปรดทราบว่าหากมีทั้ง 2 API ระบบจะใช้การแก้ไขราคา ก่อนโปรโมชัน
คำขอ
ไวยากรณ์
ข้อความ Promotions ใช้ไวยากรณ์ต่อไปนี้
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<CheckinDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckoutDates>
<!-- Specify only one of percentage, percentage_of_base, fixed_amount,
fixed_amount_per_night, fixed_price, or fixed_price_per_night;
applied_nights is only used with percentage, fixed_amount_per_night,
and fixed_price_per_night. -->
<Discount percentage="float" percentage_of_base="float"
fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<Stacking type="[any|base|none|second]"/>
<StayDates application="[all|any|overlap]">
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<UserCountries type="[include|exclude]">
<Country code="country_code"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
องค์ประกอบและแอตทริบิวต์
ข้อความโปรโมชันมีองค์ประกอบและแอตทริบิวต์ต่อไปนี้
| องค์ประกอบ / @แอตทริบิวต์ | จำนวนข้อผิดพลาด | ประเภท | คำอธิบาย |
|---|---|---|---|
| Promotions | 1 | Complex element | องค์ประกอบรูทของข้อความโปรโมชัน |
| Promotions / @partner | 1 | string | บัญชีพาร์ทเนอร์สำหรับข้อความนี้ ค่าของสตริงนี้คือค่า "Partner key" ซึ่งแสดงอยู่ที่
หน้าการตั้งค่าบัญชีใน Hotel Center
หากมีแบ็กเอนด์ที่มีฟีดสำหรับหลายบัญชี ค่านี้จะต้องตรงกับค่าแอตทริบิวต์ |
| Promotions / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับข้อความคำขอนี้ ค่านี้จะแสดงในข้อความตอบกลับ อักขระที่อนุญาตคือ a-z, A-Z, 0-9, _ (ขีดล่าง) และ - (ขีดกลาง) |
| Promotions / @timestamp | 1 | DateTime | วันที่และเวลาที่สร้างข้อความนี้ |
| Promotions / HotelPromotions | 0..n | HotelPromotions | โปรโมชันสำหรับที่พัก โปรโมชันแต่ละรายการใช้ได้กับที่พักเดียว เท่านั้น หากไม่ได้ใช้ |
| Promotions / HotelPromotions / @hotel_id | 1 | string | ตัวระบุที่ไม่ซ้ำกันของที่พัก ค่านี้ต้องตรงกับรหัสโรงแรมที่ระบุโดยใช้
<id> ในองค์ประกอบ <listing> ในฟีดข้อมูลโรงแรม นอกจากนี้ รหัสโรงแรมยังแสดงอยู่ใน Hotel Center ด้วย |
| Promotions / HotelPromotions / @action | 0..1 | enum | หากระบุ ค่าต้องเป็น
หากไม่ได้ระบุไว้ โปรโมชันแต่ละรายการที่ระบุในข้อความปัจจุบัน จะเป็นอย่างใดอย่างหนึ่งต่อไปนี้
|
| Promotions / HotelPromotions / Promotion | 0..99 | Promotion | โปรโมชันเดียวสำหรับที่พัก โปรดทราบว่าหากไม่ได้ระบุ
หากต้องการใช้โปรโมชันมากกว่า 99 รายการ โปรดติดต่อ ผู้จัดการลูกค้าด้านเทคนิค (TAM) |
| Promotions / HotelPromotions / Promotion / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับโปรโมชัน จำนวนอักขระสูงสุดที่อนุญาตคือ 40 ตัว อักขระที่อนุญาตคือ a-z, A-Z, 0-9, _ (ขีดล่าง), - (ขีดกลาง) และ . (เครื่องหมายมหัพภาค) |
| Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | หากระบุ ค่าต้องเป็น หากระบุ |
| Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | คอนเทนเนอร์สำหรับช่วงอย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องทำการจองเพื่อให้ใช้โปรโมชันได้ |
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | ช่วงที่ระบุเมื่อต้องทำการจองเพื่อให้ใช้โปรโมชันได้ |
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date หรือ DateTime | วันที่หรือวันที่และเวลาเริ่มต้น (ตามเขตเวลาของที่พัก) ของช่วง โดยนับรวมวันที่ดังกล่าวด้วย
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date หรือ DateTime | วันที่หรือวันที่และเวลาสิ้นสุด (ตามเขตเวลาของที่พัก) ของช่วง โดยนับรวมวันที่ดังกล่าวด้วย
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | วันของสัปดาห์ที่อนุญาตให้ใช้ในช่วงวันที่ หากไม่มีการระบุ ระบบจะอนุญาตให้ใช้ทุกวันในช่วงวันที่ อักขระแต่ละตัวในสตริงจะระบุวัน เช่น "MTWHF" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้
คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ |
| Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | ระบุระยะเวลาที่ต้องทำการจองเมื่อเทียบกับวันที่เช็คอิน (ตามเขตเวลาของที่พัก) เช่น คุณตั้งค่า ช่วงเวลาการจองได้ไม่น้อยกว่า 7 วัน แต่ไม่เกิน 180 วัน ก่อนเช็คอิน |
| Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | ระยะเวลาขั้นต่ำก่อนเช็คอินที่ต้องจองเพื่อให้ระบบใช้โปรโมชัน
หากไม่ได้ระบุ หรือมีค่าเป็น 0 จะถือว่าไม่มีจำนวนขั้นต่ำ
ประเภทของค่าที่ใช้ได้มีดังนี้
|
| Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | จำนวนวันสูงสุดก่อนเช็คอินที่ต้องทำการจองเพื่อให้ใช้โปรโมชันได้ หากไม่ได้ระบุ หรือค่าเป็น 0 จะถือว่าไม่มีจำนวนสูงสุด
ประเภทของค่าที่ใช้ได้มีดังนี้
|
| Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
กำหนดข้อจำกัดเกี่ยวกับมูลค่าสูงสุดที่ตั้งค่าสำหรับราคาได้ หลังจากใช้โปรโมชันแล้ว โปรโมชันต้องระบุ หากกำหนดค่าการซ้อนแล้ว โปรโมชันหลายรายการที่มี
ตัวอย่าง การกำหนดราคาสำหรับการเข้าพัก 1 คืนที่
ลำดับการคำนวณมีดังนี้
การที่ 60 เป็นเพดานโดยรวมที่เข้มงวดกว่านั้นไม่เกี่ยวข้องเนื่องจาก ใช้ได้เฉพาะกับโปรโมชันของตัวเอง และไม่มีเพดานเดียว ที่ครอบคลุมสแต็กโปรโมชันทั้งหมด |
| Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
จำนวนเงินสูงสุดที่ตั้งค่าสำหรับราคาต่อคืนได้หลังจากใช้ส่วนลดแล้ว หากมีการระบุองค์ประกอบ
|
| Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
กำหนดข้อจำกัดเกี่ยวกับค่าต่ำสุดที่ตั้งค่าสำหรับราคาได้ หลังจากใช้โปรโมชันแล้ว โปรโมชันต้องระบุ ตรรกะของ หากกำหนดค่าการซ้อนแล้ว โปรโมชันหลายรายการที่มี
ตัวอย่าง การกำหนดราคาสำหรับการเข้าพัก 1 คืนที่
ลำดับการคำนวณมีดังนี้
การที่ 90 เป็นราคาพื้นโดยรวมที่เข้มงวดกว่านั้นไม่เกี่ยวข้องเนื่องจาก ใช้ได้เฉพาะกับโปรโมชันของตัวเอง และไม่มีราคาพื้นเดียว ที่ครอบคลุมทั้งสแต็กโปรโมชัน |
| Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
จำนวนเงินขั้นต่ำที่ตั้งค่าราคาต่อคืนได้หลังจากใช้ส่วนลดแล้ว หากมีการระบุองค์ประกอบ
|
| Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องเลือกวันเช็คอินเพื่อให้ใช้โปรโมชันได้ |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | ช่วงวันที่ที่ระบุเมื่อต้องเลือกวันเช็คอินเพื่อให้ใช้โปรโมชันได้ คุณไม่จำเป็นต้องระบุองค์ประกอบนี้หากลบโปรโมชันอย่างน้อย 1 รายการ นอกจากนี้ยังรองรับรูปแบบ YearlessDate ด้วย
|
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | วันที่เริ่มต้น (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่ก่อนหน้าหรือวันที่เดียวกับ end หากไม่มีการระบุ start ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่เริ่มต้น |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | วันที่สิ้นสุด (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่เดียวกันหรือหลังจาก start หากไม่มีการระบุ end ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่สิ้นสุด |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | วันของสัปดาห์ที่อนุญาตให้ใช้ในช่วงวันที่ หากไม่มีการระบุ ระบบจะอนุญาตให้ใช้ทุกวันในช่วงวันที่ อักขระแต่ละตัวในสตริงจะระบุวัน เช่น "MTWHF" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้
คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ |
| Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องเลือกวันเช็คเอาต์เพื่อให้ใช้โปรโมชันได้ |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | ช่วงวันที่ที่ระบุเมื่อต้องเลือกวันเช็คเอาต์เพื่อให้ใช้โปรโมชันได้ คุณไม่จำเป็นต้องระบุองค์ประกอบนี้หาก ลบโปรโมชันอย่างน้อย 1 รายการ นอกจากนี้ยังรองรับรูปแบบ YearlessDate ด้วย
|
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | วันที่เริ่มต้น (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่ก่อนหน้าหรือวันที่เดียวกับ end หากไม่มีการระบุ start ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่เริ่มต้น |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | วันที่สิ้นสุด (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่เดียวกันหรือหลังจาก start หากไม่มีการระบุ end ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่สิ้นสุด |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | วันของสัปดาห์ที่อนุญาตให้ใช้ในช่วงวันที่ หากไม่มีการระบุ ระบบจะอนุญาตให้ใช้ทุกวันในช่วงวันที่ อักขระแต่ละตัวในสตริงจะระบุวัน เช่น "MTWHF" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้
คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ |
| Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | คอนเทนเนอร์สำหรับแสดงรายการอุปกรณ์ของผู้ใช้ที่มีสิทธิ์รับโปรโมชัน หากระบุไว้ จะมีเพียงผู้ใช้ที่มีสิทธิ์ในอุปกรณ์ที่ระบุเท่านั้น ที่จะได้รับราคาที่ลดแล้ว หากไม่ได้ระบุไว้ ผู้ใช้ที่มีสิทธิ์ในอุปกรณ์ใดก็ตามจะได้รับราคาที่มีส่วนลด |
| Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | กำหนดอุปกรณ์ของผู้ใช้ประเภทหนึ่งที่มีสิทธิ์รับโปรโมชัน |
| Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | ประเภทอุปกรณ์ ค่าต้องเป็น desktop
tablet หรือ mobile |
| Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | ต้องระบุ ระบุส่วนลดที่จะใช้กับโปรโมชันนี้ |
| Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | ต้องระบุ ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุส่วนลดเป็นเปอร์เซ็นต์
โดยจะมีผลกับ ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | ต้องระบุ ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุเปอร์เซ็นต์ของส่วนลดฐาน
คล้ายกับ ส่วนลดนี้จะคำนวณเป็นเปอร์เซ็นต์ของราคาฐานเสมอ ไม่ว่าจะมีโปรโมชันก่อนหน้าใดก็ตามที่ใช้ตามลำดับ ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | ต้องระบุ จำนวนเงินคงที่ที่จะหักออกจากผลรวมของ
ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | ต้องระบุ ส่วนลดคงที่ที่ใช้กับ ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | ต้องระบุ หากระบุ หาก ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | ต้องระบุ หากระบุราคาต่อคืนของ หาก หากระบุ ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | ควรใช้กับ จำนวนคืนที่ใช้ส่วนลด โดยเริ่มจากคืนที่มีราคาถูกที่สุด ต้องเป็นจำนวนเต็มตั้งแต่ 1 ถึง 99 หากไม่ได้ระบุ ระบบจะใช้ส่วนลดกับทุกคืน |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | ระบุส่วนลดสำหรับบางคืนของการเข้าพักเมื่อมีระยะเวลาในการเข้าพักขั้นต่ำ
ตามที่กำหนด ไม่อนุญาตให้ใช้แอตทริบิวต์ในองค์ประกอบ Discount หลัก
หากใช้องค์ประกอบนี้ |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | จำนวนคืนที่ต้องเข้าพักเพื่อให้ใช้ส่วนลดได้ ส่วนลดแต่ละรายการจะใช้กับกลุ่มคืนที่เข้าพักที่แยกต่างหาก เช่น สำหรับการเข้าพัก 10 คืนที่ |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | จำนวนคืนที่ได้รับส่วนลดภายในแต่ละกลุ่มของคืนที่เข้าพัก |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | ส่วนลดที่ใช้กับคืนที่ได้รับส่วนลด หากค่านี้เป็น 50 ระบบจะลดราคา 50% สำหรับแต่ละคืนที่เลือก |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | ต้องเป็น cheapest หรือ last หาก
last ระบบจะให้ส่วนลดสำหรับคืนที่เข้าพักในช่วงท้ายของ
คืนที่เข้าพัก หาก cheapest ระบบจะให้ส่วนลดสำหรับคืนที่ถูกที่สุด
ภายในกลุ่มคืนที่เข้าพัก |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | ส่วนลดใช้กับกลุ่มการเข้าพักหลายคืนได้หรือไม่
หากเป็น เช่น หาก |
| Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | กำหนดอันดับให้กับโปรโมชันนี้และเลือกใช้การเลือกที่จัดอันดับ ซึ่งจะเลือกใช้เฉพาะโปรโมชันที่มีอันดับต่ำสุด ค่า ต้องอยู่ระหว่าง 1 ถึง 99 หากโปรโมชันหลายรายการมีลำดับเดียวกัน ระบบจะเลือกและใช้โปรโมชันใดโปรโมชันหนึ่งโดยพลการ |
| Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | ต้องระบุ ระบุ
ส่วนลดรายวันที่อาจใช้กับการเข้าพัก 1 คืน ซึ่งแตกต่างจาก แต่ละพร็อพเพอร์ตี้อาจมีกลุ่มโปรโมชันเดียวที่ ถือว่าเป็น "ดีที่สุดประจำวัน" ซึ่งหมายความว่าในแต่ละคืนที่เข้าพัก ระบบจะเลือกโปรโมชัน "รายวันที่ดีที่สุด" รายการเดียวที่มีสิทธิ์และให้ส่วนลดมากที่สุดสำหรับคืนนั้น และอาจนำไปใช้
|
| Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | ต้องระบุ ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุส่วนลดเป็นเปอร์เซ็นต์
โดยจะมีผลกับ ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | ต้องระบุ จำนวนเงินคงที่ที่จะหักออกจาก
ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | ต้องระบุ หากระบุราคาต่อคืนของ ตัวอย่าง
|
| Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | กำหนดข้อจำกัดเกี่ยวกับจำนวนห้องพักที่ต้องพร้อมให้บริการ
เพื่อให้ใช้โปรโมชันนี้ได้ ส่วนลดจะมีผลกับคืนที่ตรงตามข้อจำกัดเท่านั้น ใช้ร่วมกับส่วนลด fixed_amount ไม่ได้ โปรดทราบว่าระบบจะระบุจำนวนห้องว่างด้วย OTA_HotelInvCountNotifRQ (InvCount) หรือ OTA_HotelAvailNotifRQ (BookingLimit) |
| Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | จำนวนห้องพักขั้นต่ำที่ต้องพร้อมให้บริการเพื่อให้ใช้โปรโมชัน กับราคาต่อคืนได้ หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนขั้นต่ำ |
| Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | จำนวนห้องพักสูงสุดที่ต้องพร้อมให้บริการเพื่อให้ใช้โปรโมชันกับราคาต่อคืนได้ หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนสูงสุด |
| Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | กำหนดขีดจำกัดของระยะเวลาในการเข้าพักที่ระบบจะใช้โปรโมชันนี้ได้ โดยจะไม่มีการใช้โปรโมชันดังกล่าวหากระยะเวลาในการเข้าพักไม่อยู่ในขีดจำกัดขั้นต่ำและสูงสุด |
| Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | จำนวนคืนขั้นต่ำที่เข้าพักซึ่งอนุญาตให้ใช้โปรโมชันได้ หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนขั้นต่ำ |
| Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | จำนวนคืนสูงสุดที่เข้าพักซึ่งอนุญาตให้ใช้โปรโมชันได้ หากไม่ได้ระบุ จะถือว่าไม่มีจำนวนสูงสุด |
| Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
คอนเทนเนอร์สำหรับกฎเกี่ยวกับอัตราสมาชิกที่ทริกเกอร์ตัวเลือก UI เฉพาะสำหรับส่วนลดที่เชื่อมโยง คุณไม่ควรกำหนดองค์ประกอบนี้ เว้นแต่จะกำหนด |
| Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
รหัสของ กฎเกี่ยวกับอัตราที่เชื่อมโยงกับโปรแกรมการเป็นสมาชิก |
| Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | ระบุผลรวมขั้นต่ำของราคาห้องพักรายวัน (ใช้ค่าที่มากกว่าระหว่าง
AmountBeforeTax หรือ AmountAfterTax) ที่ต้อง
เกินเพื่อให้ใช้โปรโมชันได้ |
| Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | มูลค่าที่ต้องเกินจึงจะใช้โปรโมชันได้ |
| Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | กำหนดข้อจำกัดเกี่ยวกับจำนวนผู้เข้าพักที่ใช้โปรโมชันนี้ได้
โดยจะไม่มีการใช้โปรโมชันดังกล่าวหากอัตราการเข้าพักไม่อยู่ในขีดจำกัดขั้นต่ำและสูงสุด
โปรโมชันจะมีผลกับราคาของแผนการเดินทาง คุณไม่สามารถตั้งค่าส่วนลดสูงสุดต่อผู้เข้าพักได้ |
| Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | จำนวนผู้เข้าพักที่ผู้ใช้ระบุต้องมีค่าอย่างน้อยเท่ากับค่านี้จึงจะ ใช้ส่วนลดได้ |
| Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | จำนวนผู้เข้าพักที่ผู้ใช้ระบุต้องไม่เกินค่านี้จึงจะ ใช้ส่วนลดได้ |
| Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | คอนเทนเนอร์สำหรับรายการแพ็กเกจราคาที่ใช้โปรโมชันได้
หากไม่มีการระบุ <RatePlans> โปรโมชันจะมีผลกับแพ็กเกจราคาทั้งหมด |
| Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | ระบุแพ็กเกจราคา ระบบจะกำหนดแพ็กเกจราคาจากชุดค่าผสมของแพ็กเกจ ราคา และจำนวนห้องว่างตามที่ระบุไว้ในข้อความ Transaction (Property Data), OTA_HotelRateAmountNotifRQ และ OTA_HotelAvailNotifRQ รวมถึงกำหนดตามที่ PackageID ระบุไว้ |
| Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับแพ็กเกจราคา ค่านี้จะแมปกับค่า PackageID ใน <PackageData> ของข้อความ Transaction (Property Data) และในแอตทริบิวต์ RatePlanCode ของ <StatusApplicationControl> ทั้งข้อความ <OTA_HotelRateAmountNotifRQ> และ <OTA_HotelAvailNotifRQ>
จำนวนอักขระสูงสุดที่อนุญาตคือ 50 ตัว |
| Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | คอนเทนเนอร์สำหรับรายการประเภทห้องพักที่ใช้โปรโมชันได้
โปรโมชันจะมีผลกับ <RoomType> แต่ละรายการที่ระบุ หากไม่มีการระบุ <RoomTypes> โปรโมชันจะมีผลกับห้องพักทุกประเภท |
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | ระบุประเภทห้องพัก ประเภทห้องพักจะระบุอยู่ในองค์ประกอบ <RoomData> ของข้อความ Transaction (Property Data) และจะได้รับการอ้างอิงโดยใช้ค่า <RoomID> (นอกจากนี้ ค่า <RoomID> ยังอ้างอิงโดยแอตทริบิวต์ InvTypeCode ในข้อความ OTA_HotelRateAmountNotifRQ) |
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับห้องพัก (ประเภทห้องพัก) ค่านี้จะแมปกับ <RoomID> ในข้อความ Transaction (Property Data)
จำนวนอักขระสูงสุดที่อนุญาตคือ 50 ตัว |
| Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | ระบุวิธีรวมโปรโมชัน หากไม่ได้ระบุ ระบบจะถือว่า "ประเภท"
คือ base |
| Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | คุณใช้โปรโมชันหลายรายการกับราคาเดียวได้โดยขึ้นอยู่กับ การตั้งค่าต่อไปนี้
ในบรรดาชุดค่าผสมที่อนุญาต ระบบจะใช้ชุดโปรโมชันที่ให้ส่วนลดมากที่สุดกับราคา |
| Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดวิธีใช้โปรโมชัน เช่น เพื่อรองรับส่วนลดตามฤดูกาล |
| Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | อธิบายวิธีการใช้โปรโมชัน ค่าที่ใช้ได้มีดังนี้
คุณต้องระบุแอตทริบิวต์นี้เสมอ
|
| Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | ช่วงวันที่ซึ่งระบุวันที่ที่จะใช้โปรโมชัน นอกจากนี้ยังรองรับรูปแบบ YearlessDate ด้วย
หากต้องการตั้งค่า |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | วันที่เริ่มต้น (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่ก่อนหน้าหรือวันที่เดียวกับ end หากไม่มีการระบุ start ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่เริ่มต้น
คุณควรระบุค่า |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | วันที่สิ้นสุด (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่เดียวกันหรือหลังจาก start หากไม่มีการระบุ end ระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตตั้งแต่วันที่ start เป็นต้นไป
คุณควรระบุค่า |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | วันของสัปดาห์ที่อนุญาตให้ใช้ในช่วงวันที่ หากไม่มีการระบุ ระบบจะอนุญาตให้ใช้ทุกวันในช่วงวันที่ อักขระแต่ละตัวในสตริงจะระบุวัน เช่น "MTWHF" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้
คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ |
| Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | คอนเทนเนอร์สำหรับแสดงตำแหน่งของผู้ใช้ (ประเทศ) ที่มีสิทธิ์ สำหรับโปรโมชัน หากระบุไว้ ระบบจะเสนออัตราที่ลดแล้วให้แก่ผู้ใช้ที่มีสิทธิ์ในประเทศที่ระบุเท่านั้น หากไม่ได้ระบุไว้ ผู้ใช้ที่มีสิทธิ์ ในทุกประเทศจะได้รับอัตราที่มีส่วนลด |
| Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | ประเภทของข้อกำหนด UserCountries
ค่าที่ใช้ได้คือ หากตั้งค่า UserCountries หาก UserCountries หากไม่ได้ตั้งค่า UserCountries |
| Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | กำหนดประเทศที่ผู้ใช้มีสิทธิ์รับโปรโมชัน |
| Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | รหัสประเทศ CLDR เช่น DE หรือ FR โปรดทราบว่ารหัสประเทศ CLDR ไม่เหมือนกับรหัสประเทศ ISO 2 ตัวอักษรในบางประเทศ
นอกจากนี้ ระบบยังไม่รองรับรหัสภูมิภาค CLDR ด้วย |
ตัวอย่าง
พร็อพเพอร์ตี้ 1 รายการมีโปรโมชันได้ไม่เกิน 500 รายการ ดูตัวอย่าง "ลบโปรโมชัน 1 รายการ" เพื่อนำโปรโมชันออกจากพร็อพเพอร์ตี้
ข้อความพื้นฐาน
ตัวอย่างต่อไปนี้แสดงPromotionsข้อความพื้นฐาน
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<Discount percentage="20" applied_nights="2"/>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<Stacking type="base"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
สภาพสินค้าคงคลัง
ตัวอย่างต่อไปนี้แสดงวิธีสร้างส่วนลดหากมีสินค้าคงคลัง มากเกินไปในช่วงใกล้ถึงวันที่เดินทาง
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow max="7"/>
<Discount percentage="10"/>
<InventoryCount min="3"/>
</Promotion>
</HotelPromotions>
</Promotions>
ลบโปรโมชัน 1 รายการ
ตัวอย่างต่อไปนี้แสดงวิธีลบโปรโมชัน 1 รายการสำหรับที่พัก
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1" action="delete"/>
</HotelPromotions>
</Promotions>
ลบโปรโมชันทั้งหมด
ตัวอย่างต่อไปนี้แสดงวิธีลบโปรโมชันทั้งหมดสำหรับที่พัก
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
วางซ้อนโปรโมชันทั้งหมด
ตัวอย่างต่อไปนี้แสดงวิธีซ้อนทับ <HotelPromotions> สำหรับที่พัก
ที่มีโปรโมชันใหม่ตั้งแต่ 1 รายการขึ้นไป เมื่อ action="overlay" ระบบจะลบโปรโมชันที่จัดเก็บไว้ทั้งหมดก่อนจัดเก็บโปรโมชันที่ระบุในข้อความปัจจุบัน
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<Discount percentage="10"/>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<Stacking type="base"/>
</Promotion>
</HotelPromotions>
</Promotions>
การซ้อน 3 ประเภท
ตัวอย่างต่อไปนี้แสดงกรณีที่จะใช้โปรโมชัน 3 รายการที่แตกต่างกัน (base, second, any) โปรดทราบว่าระบบจะไม่ใช้โปรโมชัน none เนื่องจากโปรโมชันอื่นๆ ให้ส่วนลดที่ดีกว่า หากราคาเดิมอยู่ที่ $100 ราคาที่มีส่วนลดจะอยู่ที่ $72.90
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
ไม่มีประเภทการซ้อน
ตัวอย่างต่อไปนี้แสดงกรณีที่ใช้noneโปรโมชันเนื่องจาก
การรวมโปรโมชันอื่นๆ ให้ส่วนลดน้อยกว่า หาก
ราคาเดิมคือ $100 ราคาที่มีส่วนลดจะเป็น $75
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
ขอบเขตระยะเวลาการจอง
ตัวอย่างต่อไปนี้แสดงกรณีที่ใช้องค์ประกอบ BookingWindow
โดยมีขอบเขตเริ่มต้นและสิ้นสุดที่กำหนดเป็นประเภทระยะเวลา ISO 8601
ข้อจำกัดของช่วงเวลาการจองนี้กำหนดให้จองภายในเวลา 18:00 น.
ของวันก่อนวันเข้าพัก และตั้งแต่เวลา 12:00 น. เป็นต้นไปในวันที่ 2 ก่อนวัน
เข้าพัก
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
ขอบเขตวันที่และเวลาในการจอง
ตัวอย่างต่อไปนี้แสดงกรณีที่ใช้องค์ประกอบ BookingDates
กับแอตทริบิวต์ start และ end เป็นประเภท
DateTime ข้อจำกัดวันที่จองนี้กำหนดให้ต้องจอง
ระหว่างเวลา 06:30 น. ของวันที่ 01-07-2020 ถึง 18:45 น. ของวันที่ 02-07-2020
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
ช่วงวันที่ที่ไม่มีปี
ตัวอย่างต่อไปนี้แสดงกรณีที่องค์ประกอบ CheckInDates
มี DateRanges ที่มีฟิลด์ start และ
end ที่ไม่มีปี ในตัวอย่างนี้ โปรโมชันจะมีผลกับวันที่เช็คอินระหว่างวันที่ 29/12 ถึง 2/1 ไม่ว่าจะเป็นปีใดก็ตาม ช่วงวันที่ที่ไม่มีปีซึ่งข้ามขอบเขตปีใหม่จะใช้ไม่ได้ ดังนั้น DateRange
จึงแสดงเป็นช่วงวันที่ 2 ช่วงที่อยู่ติดกัน
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
ส่วนลด FreeNights
ตัวอย่างต่อไปนี้จะลดราคา 50% สำหรับการเข้าพัก 2 คืนเมื่อเข้าพัก 4 คืนในช่วงวันที่จองที่ระบุ สำหรับแผนการเดินทาง 10 คืน ระบบจะลดราคา 50% ให้รวม 4 คืน
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
ตัวอย่างถัดไปจะลดราคา 50% สำหรับ 1 คืนเมื่อเข้าพัก 3 คืนสำหรับช่วงวันที่เข้าพักที่ระบุ ระบบจะนับเฉพาะคืนที่ทับซ้อนกันของการเข้าพัก เพื่อพิจารณาว่ามีสิทธิ์รับส่วนลดหรือไม่ สำหรับแผนการเดินทางต่อไปนี้ที่มีการเช็คอิน ในวันที่ 01-01-2022 และเช็คเอาต์ในวันที่ 07-01-2022 ระบบจะใช้จำนวนคืนที่เข้าพักที่มีสิทธิ์และ ส่วนลดดังนี้
- 2022-01-01 (คงเดิม)
- 2022-01-02 (พัก)
- 2022-01-03
- 2022-01-04 (ลดราคา)
- 2022-01-05 (เข้าพัก)
- 2022-01-06 (อยู่)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
การเลือกตามลำดับ
ตัวอย่างต่อไปนี้เสนอส่วนลด 2 รายการ โดยรายการหนึ่งลด 20% และอีกรายการลด 15% ในระหว่างการประเมิน ระบบจะใช้ส่วนลด 15% เท่านั้นเนื่องจากมีอันดับต่ำกว่า
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
ตัวอย่างต่อไปนี้จะลดราคาการเข้าพัก 2 คืนโดยใช้ BestDailyDiscount ร่วมกับ Discount
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
พิจารณาการเข้าพัก 2 คืนตั้งแต่วันที่ 30 เมษายน 2023 ถึง 2 พฤษภาคม 2023 สำหรับการคำนวณ ระบบจะค้นหาส่วนลดรายวันที่ดีที่สุดที่ให้ ส่วนลดมากที่สุดก่อน
สำหรับคืนแรก โปรโมชัน "ทั่วไป" จะเป็นจำนวนเงินเดียวที่มีสิทธิ์พร้อม ส่วนลดคงที่ 20
สำหรับคืนที่ 2 โปรโมชัน "อาจ" ให้ส่วนลดมากกว่าส่วนลด "ทั่วไป" ดังนั้นเมื่อเลือก "อาจ" ส่วนลดคงที่ จะเป็น 50
จากนั้นโปรโมชัน "fiesta" จะลดราคาสำหรับการเข้าพักเหลือ 5 ต่อคืน หรือ
รวมเป็น 10 โดยสามารถใช้ร่วมกับส่วนลดรายวันที่ดีที่สุดได้
เนื่องจาก "fiesta" มีประเภทการซ้อนทับเป็น any หากตั้งค่าเป็น base ระบบจะใช้เฉพาะส่วนลดรายวันที่ดีที่สุดหรือส่วนลด "fiesta" เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่คำอธิบายของ
Stacking
`โดยรวมแล้ว ราคาของการเข้าพักจะได้รับส่วนลดแบบคงที่ 20 + 50 + 10 = 80
คำตอบ
ไวยากรณ์
ข้อความ PromotionsResponse ใช้ไวยากรณ์ต่อไปนี้
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
องค์ประกอบและแอตทริบิวต์
ข้อความ PromotionsResponse มีองค์ประกอบและแอตทริบิวต์ต่อไปนี้
| องค์ประกอบ / @แอตทริบิวต์ | จำนวนข้อผิดพลาด | ประเภท | คำอธิบาย |
|---|---|---|---|
| PromotionsResponse | 1 | Complex element | องค์ประกอบรูทที่บ่งบอกความสำเร็จหรือปัญหาของข้อความคำขอ Promotions ที่ได้รับ |
| PromotionsResponse / @timestamp | 1 | DateTime | วันที่และเวลาที่สร้างข้อความนี้ |
| PromotionsResponse / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันจากข้อความ Promotions ที่เกี่ยวข้อง |
| PromotionsResponse / @partner | 1 | string | บัญชีพาร์ทเนอร์สำหรับข้อความนี้ |
| PromotionsResponse / Success | 0..1 | Success | บ่งบอกว่าข้อความโปรโมชันได้รับการประมวลผลเรียบร้อยแล้วโดยไม่มีคำเตือน ข้อผิดพลาด หรือความล้มเหลว
แต่ละข้อความจะมี |
| PromotionsResponse / Issues | 0..1 | Issues | คอนเทนเนอร์สำหรับปัญหาอย่างน้อย 1 รายการที่พบขณะประมวลผลข้อความ Promotions
แต่ละข้อความจะมี |
| PromotionsResponse / Issues / Issue | 1..n | Issue | คำอธิบายของคำเตือน ข้อผิดพลาด หรือความล้มเหลวที่พบขณะประมวลผลข้อความโปรโมชัน ดูรายละเอียดเกี่ยวกับปัญหาเหล่านี้ได้ใน ข้อความแสดงข้อผิดพลาดของสถานะฟีด |
| PromotionsResponse / Issues / Issue / @code | 1 | integer | ตัวระบุสำหรับปัญหา |
| PromotionsResponse / Issues / Issue / @status | 1 | enum | ประเภทของปัญหาที่พบ ค่าที่ใช้ได้คือ |
ตัวอย่าง
สำเร็จ
การตอบกลับข้อความโปรโมชันที่ประมวลผลเรียบร้อยแล้วมีดังนี้
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
ปัญหา
การตอบกลับข้อความ Promotions ที่ยังไม่ได้ประมวลผลเนื่องจากพบข้อผิดพลาดมีดังนี้
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>