Sửa đổi cước phí

Tổng quan

API này cho phép bạn xác định cách linh động áp dụng các hành động cho một mức giá bất cứ khi nào đáp ứng điều kiện, chẳng hạn như điều chỉnh giá hoặc bật tính năng hoàn tiền. Không giống như API khuyến mãi, chỉ có thể áp dụng các chương trình khuyến mãi đủ điều kiện với mức chiết khấu sâu nhất, API này áp dụng mọi hành động khi đáp ứng một số điều kiện nhất định, bao gồm cả các mức điều chỉnh giá có thể làm tăng giá cuối cùng.

Yêu cầu

Cú pháp

Thông báo RateModifications sử dụng cú pháp sau:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
                      id="message_ID"
                      timestamp="timestamp">
  <HotelRateModifications hotel_id="HotelID" action="[overlay]">
    <ItineraryRateModification id="ModificationID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </BookingDates>
      <BookingWindow min="integer" max="integer"/>
      <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>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <LengthOfStay min="integer" max="integer"/>
      <MinimumAmount before_discount="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates application="[all|any]">
        <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>
      <ModificationActions>
        <PriceAdjustment multiplier="float"/>
        <RateRule id="RateRuleID"/>
        <Refundable available="[false|true]"
                       refundable_until_days="number_of_days"
                       refundable_until_time="time"/>
        <Availability status="[unavailable]"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Phần tử và thuộc tính

Thông báo RateModifications có các phần tử và thuộc tính sau:

Phần tử / @Thuộc tính Số lần xuất hiện Loại Nội dung mô tả
RateModifications 1 Complex element Phần tử gốc của thông báo về việc sửa đổi giá.
RateModifications / @partner 1 string Tài khoản đối tác dùng cho thư này. Giá trị của chuỗi này là giá trị của "Khoá đối tác" được liệt kê trên trang Cài đặt tài khoản trong Hotel Center.

Lưu ý: Nếu bạn có phần phụ trợ cung cấp nguồn cấp dữ liệu cho nhiều tài khoản, thì giá trị này cần phải khớp với giá trị thuộc tính ID được chỉ định trong phần tử <RequestorID> của thông báo <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> cho cùng một tài khoản.

RateModifications / @id 1 string Giá trị nhận dạng duy nhất cho thông báo yêu cầu này. Giá trị này được trả về trong thông báo phản hồi. Các ký tự được phép là a-z, A-Z, 0-9, _ (dấu gạch dưới) và - (dấu gạch ngang).
RateModifications / @timestamp 1 DateTime Ngày và giờ tạo thông báo này.
RateModifications / HotelRateModifications 0..n HotelRateModifications

Sửa đổi giá cho một cơ sở lưu trú. Mỗi nội dung sửa đổi giá sẽ áp dụng cho một cơ sở lưu trú.

Lưu ý: Nếu có thể áp dụng nhiều nội dung sửa đổi mức giá cho cùng một mức giá, thì tất cả nội dung sửa đổi sẽ được áp dụng. Chúng tôi không đảm bảo thứ tự cụ thể.

RateModifications / HotelRateModifications / @hotel_id 1 string Giá trị nhận dạng duy nhất của cơ sở lưu trú. Giá trị này phải khớp với Mã khách sạn được chỉ định bằng phần tử <id> trong phần tử <listing> của Nguồn cấp dữ liệu danh sách khách sạn. Mã khách sạn cũng có trong Hotel Center.
RateModifications / HotelRateModifications / @action 0..1 enum

Nếu bạn không chỉ định action, các nội dung sửa đổi trong phần tử này sẽ được thêm hoặc cập nhật cho khách sạn này. Nếu bạn chỉ định action="overlay", thì tất cả nội dung sửa đổi đã xác định trước đó đối với khách sạn này sẽ bị xoá trước. Sau đó, các nội dung sửa đổi được chỉ định ở đây sẽ được viết. Nếu bạn sử dụng action="overlay" và không chỉ định nội dung sửa đổi trong phần tử này, thì mọi nội dung sửa đổi của khách sạn này đều sẽ bị xoá.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Một lần sửa đổi giá cho một cơ sở lưu trú.

Lưu ý:Việc sửa đổi tỷ lệ rất khó gỡ lỗi và bạn nên thận trọng khi sử dụng các nội dung này. Hãy liên hệ với Nhà quản lý tài khoản hỗ trợ kỹ thuật (TAM) của bạn đối với các trường hợp sử dụng cần hơn 200 lần điều chỉnh giá.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Giá trị nhận dạng duy nhất của nội dung sửa đổi giá. Số lượng ký tự tối đa được phép là 40. Các ký tự hợp lệ là a-z, A-Z, 0-9, _ (dấu gạch dưới), - (dấu gạch ngang) và . (dấu chấm).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Nếu bạn không chỉ định và nội dung sửa đổi mức giá có cùng id không được lưu trữ, thì nội dung sửa đổi giá này sẽ được lưu trữ. Ngược lại, nếu bạn không chỉ định và nội dung sửa đổi giá có cùng id sẽ được lưu trữ, thì nội dung sửa đổi giá hiện có sẽ được cập nhật.

Nếu được chỉ định, giá trị này phải là "delete". Nếu bạn chỉ định "delete", thì nội dung sửa đổi giá được lưu trữ có cùng id sẽ bị xoá. Khi sử dụng "delete", không được thêm bất kỳ phần tử con nào vào <ItineraryRateModification>. Ngoài ra, "delete" không được phép kết hợp với <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Vùng chứa một hoặc nhiều phạm vi ngày dùng để xác định thời điểm cần phải đặt phòng để nội dung sửa đổi giá được áp dụng.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Phạm vi ngày xác định thời điểm phải đặt phòng để áp dụng nội dung sửa đổi giá.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date Ngày bắt đầu (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trước hoặc giống với ngày end. Nếu bạn không chỉ định start, phạm vi ngày sẽ không có giới hạn về ngày bắt đầu.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date Ngày kết thúc (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trùng hoặc sau ngày start. Nếu bạn không chỉ định end, phạm vi ngày sẽ không có giới hạn đối với ngày kết thúc.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu bạn không chỉ định, tất cả các ngày đều được phép sử dụng trong phạm vi ngày. Mỗi ký tự trong chuỗi chỉ định một ngày. Ví dụ: "MTWHF" cho biết những ngày trong tuần được cho phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Cho biết khoảng thời gian mà việc đặt phòng phải diễn ra tương ứng với ngày nhận phòng (dựa trên múi giờ của cơ sở lưu trú). Ví dụ: Bạn có thể đặt thời hạn đặt trước là ít nhất 7 ngày, nhưng không được quá 180 ngày, trước ngày nhận phòng.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Số ngày tối thiểu phải đặt phòng trước ngày nhận phòng thì nội dung sửa đổi giá mới được áp dụng. Nếu bạn không xác định giá trị này, thì sẽ không có giới hạn tối thiểu.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Số ngày tối đa phải đặt phòng trước ngày nhận phòng thì nội dung sửa đổi giá mới được áp dụng. Nếu bạn không xác định giá trị này, thì sẽ không có giới hạn tối đa.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Vùng chứa một hoặc nhiều phạm vi ngày dùng để xác định thời điểm phải nhận phòng để áp dụng nội dung sửa đổi giá.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Phạm vi ngày xác định thời điểm phải nhận phòng để áp dụng nội dung sửa đổi giá. Phần tử này là không bắt buộc nếu bạn đang xoá một hoặc nhiều nội dung sửa đổi về mức giá.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date Ngày bắt đầu (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trước hoặc giống với ngày end. Nếu bạn không chỉ định start, phạm vi ngày sẽ không có giới hạn về ngày bắt đầu.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date Ngày kết thúc (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trùng hoặc sau ngày start. Nếu bạn không chỉ định end, phạm vi ngày sẽ không có giới hạn đối với ngày kết thúc.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu bạn không chỉ định, tất cả các ngày đều được phép sử dụng trong phạm vi ngày. Mỗi ký tự trong chuỗi chỉ định một ngày. Ví dụ: "MTWHF" cho biết những ngày trong tuần được cho phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Vùng chứa một hoặc nhiều phạm vi ngày dùng để xác định thời điểm phải trả phòng để áp dụng nội dung sửa đổi giá.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Phạm vi ngày xác định thời điểm phải trả phòng để áp dụng nội dung sửa đổi giá. Phần tử này là không bắt buộc nếu bạn đang xoá một hoặc nhiều nội dung sửa đổi về mức giá.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date Ngày bắt đầu (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trước hoặc giống với ngày end. Nếu bạn không chỉ định start, phạm vi ngày sẽ không có giới hạn về ngày bắt đầu.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date Ngày kết thúc (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trùng hoặc sau ngày start. Nếu bạn không chỉ định end, phạm vi ngày sẽ không có giới hạn đối với ngày kết thúc.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu bạn không chỉ định, tất cả các ngày đều được phép sử dụng trong phạm vi ngày. Mỗi ký tự trong chuỗi chỉ định một ngày. Ví dụ: "MTWHF" cho biết những ngày trong tuần được cho phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Vùng chứa để liệt kê những thiết bị của người dùng đủ điều kiện để sửa đổi giá. Nếu bạn chỉ định, thì nội dung sửa đổi mức giá chỉ được áp dụng nếu người dùng khớp với một trong các thiết bị trong danh sách. Nếu bạn không chỉ định thì thao tác này không hạn chế việc áp dụng nội dung sửa đổi giá.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Xác định một loại thiết bị của người dùng đủ điều kiện để sửa đổi mức giá.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Một loại thiết bị. Giá trị phải là desktop, tablet hoặc mobile.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

(Các) hành động được áp dụng cho mức giá nếu đáp ứng tất cả các điều kiện đã chỉ định.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Sửa đổi tỷ lệ bằng cách nhân cả AmountBeforeTaxAmountAfterTax với hệ số được chỉ định
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float Cả AmountBeforeTaxAmountAfterTax đều được nhân với giá trị này.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Sửa đổi mức giá bằng cách áp dụng mã quy tắc giá đã chỉ định cho mức giá đó.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Mã này so khớp một mức giá với định nghĩa trong tệp Rate Rule Definition (Định nghĩa quy tắc giá). Lưu ý:
  • Trường này có giới hạn ký tự là 40 ký tự.
  • Mỗi mức giá chỉ có thể liên kết với một quy tắc giá duy nhất.
  • Nếu có nhiều nội dung sửa đổi áp dụng một mã quy tắc giá, thì mã quy tắc giá có giá trị nhỏ nhất về mặt từ điển sẽ được chỉ định cho giá đó.
  • Nếu mã này không khớp với một quy tắc giá trong tệp định nghĩa quy tắc giá, thì mã đó sẽ được coi là không đủ điều kiện.
Hãy xem bài viết này để biết thông tin về các biện pháp xử lý giao diện người dùng đối với mức giá ưu đãi chọn lọc.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Ghi đè khả năng hoàn tiền của mức giá vào giá trị được chỉ định.

Khi đặt thuộc tính, hãy lưu ý những điều sau:

  • Hành động sửa đổi này sẽ ghi lại hoàn toàn chế độ cài đặt Có thể hoàn tiền của mức giá đủ điều kiện, chứ không chỉ các trường điền sẵn.
  • Nếu bạn không đặt available hoặc refundable_until_days, thì giá sẽ không xuất hiện dưới dạng có thể hoàn tiền.
  • Nếu available0 hoặc false, các thuộc tính khác sẽ bị bỏ qua. Giá sẽ không xuất hiện dưới dạng có thể hoàn lại ngay cả khi bạn đã đặt một hoặc cả hai thuộc tính còn lại.
  • Bạn nên đặt refundable_until_time. Nếu không đặt, thời điểm sớm nhất (nửa đêm) sẽ được sử dụng.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Bắt buộc) Đặt thành 1 hoặc true để cho biết liệu giá cho phép hoàn tiền toàn bộ hay không; nếu không, hãy đặt là 0 hoặc false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Bắt buộc nếu availabletrue) Chỉ định số ngày trước khi nhận phòng mà người dùng có thể yêu cầu hoàn tiền toàn bộ. Giá trị của refundable_until_days phải là một số nguyên từ 0 đến 330.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Nên dùng nếu availabletrue) Chỉ định thời điểm mới nhất trong ngày theo giờ địa phương của khách sạn mà yêu cầu hoàn tiền toàn bộ sẽ được chấp nhận. Bạn có thể kết hợp thuộc tính này với refundable_until_days để chỉ định rằng "có thể hoàn tiền đến 4 giờ chiều hai ngày trước khi nhận phòng". Nếu bạn không đặt refundable_until_time, giá trị mặc định sẽ là nửa đêm.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Ghi đè tình trạng phòng của giá vào một giá trị được chỉ định. Chúng tôi chỉ hỗ trợ việc đặt mức giá là unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Nếu status="unavailable", giá sẽ được coi là không có sẵn, bất kể có giá hợp lệ hay không.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Xác định giới hạn thời gian lưu trú mà nội dung sửa đổi giá này có thể áp dụng. Nội dung sửa đổi giá sẽ không được áp dụng khi thời gian lưu trú nằm ngoài giới hạn tối thiểu và giới hạn tối đa.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Số đêm tối thiểu được phép trong thời gian lưu trú để áp dụng nội dung sửa đổi giá. Nếu bạn không xác định giá trị này, thì sẽ không có giới hạn tối thiểu.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Số đêm tối đa được phép trong thời gian lưu trú để áp dụng nội dung sửa đổi giá. Nếu bạn không xác định giá trị này, thì sẽ không có giới hạn tối đa.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount Xác định tổng tối thiểu của các giá phòng hằng ngày (dùng AmountBeforeTax hoặc AmountAfterTax giá trị lớn hơn) mà bạn phải vượt quá để được áp dụng nội dung sửa đổi giá.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Giá trị mà bạn phải vượt quá thì mới được áp dụng nội dung sửa đổi giá.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Vùng chứa danh sách các gói giá được áp dụng nội dung sửa đổi giá. Nếu bạn không chỉ định <RatePlans>, việc sửa đổi giá sẽ áp dụng cho tất cả gói giá.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Xác định một gói giá. Gói giá được xác định bằng tổ hợp gói, giá và tình trạng phòng, như xác định trong các thông báo Giao dịch (Dữ liệu của cơ sở lưu trú), OTA_HotelRateAmountNotifRQ và OTA_HotelAvailNotifRQ, và được xác định bằng PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string Giá trị nhận dạng riêng biệt của gói giá. Giá trị này liên kết với giá trị PackageID trong <PackageData> trong thông báo Giao dịch (Dữ liệu của cơ sở lưu trú) và trong thuộc tính RatePlanCode trong <StatusApplicationControl> trong cả thông báo <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ>. Số lượng ký tự tối đa được phép là 50.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Vùng chứa danh sách các loại phòng được áp dụng nội dung sửa đổi giá. Nội dung sửa đổi giá được áp dụng cho từng <RoomType> được chỉ định. Nếu bạn không chỉ định <RoomTypes>, nội dung sửa đổi giá sẽ áp dụng cho tất cả phòng.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Xác định một loại phòng. Loại phòng được xác định trong phần tử <RoomData> của thông báo Giao dịch (Dữ liệu của cơ sở lưu trú) và được tham chiếu bằng giá trị <RoomID>. (Giá trị <RoomID> cũng được thuộc tính InvTypeCode trong các thông báo OTA_HotelRateAmountNotifRQ tham chiếu.)
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string Giá trị nhận dạng duy nhất của quỹ phòng (loại phòng). Giá trị này liên kết với <RoomID> trong thông báo Giao dịch (Dữ liệu của cơ sở lưu trú). Số lượng ký tự tối đa được phép là 50.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Vùng chứa một hoặc nhiều phạm vi ngày dùng để xác định cách áp dụng nội dung sửa đổi giá, chẳng hạn như để phù hợp với giá theo mùa.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Mô tả cách áp dụng nội dung sửa đổi mức giá.

Các giá trị hợp lệ là:

  • all: Áp dụng nội dung sửa đổi giá cho mỗi đêm trong hành trình nếu tất cả các ngày trong hành trình đó trùng với ngày lưu trú.
  • any: Áp dụng nội dung sửa đổi giá cho tất cả các đêm trong hành trình nếu có bất kỳ ngày nào trong hành trình đó trùng lặp với một ngày trong phạm vi ngày lưu trú.

Thuộc tính này phải luôn được chỉ định.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Một phạm vi ngày xác định những ngày mà mức giá sẽ được sửa đổi.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date Ngày bắt đầu (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trước hoặc giống với ngày end. Nếu bạn không chỉ định start, phạm vi ngày sẽ không có giới hạn về ngày bắt đầu.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date Ngày kết thúc (dựa trên múi giờ của cơ sở lưu trú) trong phạm vi ngày. Ngày này phải trùng hoặc sau ngày start. Nếu bạn không chỉ định end, phạm vi ngày sẽ không có giới hạn đối với ngày kết thúc.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

Ngày trong tuần được phép sử dụng trong phạm vi ngày. Nếu bạn không chỉ định, tất cả các ngày đều được phép sử dụng trong phạm vi ngày. Mỗi ký tự trong chuỗi chỉ định một ngày. Ví dụ: "MTWHF" cho biết những ngày trong tuần được cho phép trong phạm vi ngày.

Các ký tự hợp lệ là:

  • M đại diện cho thứ Hai
  • T đại diện cho thứ Ba
  • W đại diện cho thứ Tư
  • H đại diện cho thứ Năm
  • F đại diện cho thứ Sáu
  • S đại diện cho thứ Bảy
  • U đại diện cho Chủ Nhật

Mọi tổ hợp ký tự đều hợp lệ.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Nếu bạn chỉ định, nội dung sửa đổi giá chỉ được áp dụng nếu người dùng ở một trong những quốc gia đã chỉ định. Nếu không được chỉ định, nội dung sửa đổi mức giá sẽ được áp dụng bất kể vị trí của người dùng.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum Loại thông số UserCountry.

Các giá trị hợp lệ là includeexclude.

Nếu bạn đặt type UserCountry là include, thì nội dung sửa đổi giá sẽ áp dụng cho người dùng ở các quốc gia trong danh sách.

Nếu type UserCountry là exclude, thì nội dung sửa đổi giá sẽ áp dụng cho người dùng ở bên ngoài các quốc gia trong danh sách.

Nếu bạn không đặt type UserCountry, thì thuộc tính này sẽ được coi là include và việc sửa đổi mức giá sẽ áp dụng cho người dùng ở các quốc gia trong danh sách.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Chỉ định một quốc gia được phép của người dùng để sửa đổi mức giá.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Mã quốc gia CLDR, chẳng hạn như DE hoặc FR. Xin lưu ý rằng đối với một số quốc gia, mã quốc gia theo CLDR không giống với mã quốc gia gồm 2 chữ cái theo tiêu chuẩn ISO. Ngoài ra, mã vùng CLDR không được hỗ trợ.

Ví dụ

Thông báo cơ bản

Ví dụ sau đây cho thấy một thông báo RateModifications` cơ bản:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Xoá một nội dung sửa đổi mức giá

Ví dụ sau đây trình bày cách xoá một nội dung sửa đổi giá cho một cơ sở lưu trú:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1" action="delete"/>
  </HotelRateModifications>
</RateModifications>

Xoá tất cả nội dung sửa đổi mức giá

Ví dụ sau đây cho thấy cách xoá tất cả nội dung sửa đổi giá của một cơ sở lưu trú:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>


Phủ tất cả nội dung sửa đổi mức giá

Ví dụ sau đây cho thấy cách phủ <HotelRateModifications> cho cơ sở lưu trú có một hoặc nhiều nội dung sửa đổi mới về mức giá. Khi action="overlay", mọi nội dung sửa đổi mức giá đã lưu trữ sẽ bị xoá trước khi lưu trữ nội dung sửa đổi mức giá được chỉ định trong thông báo hiện tại:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Nhiều hành động sửa đổi

Ví dụ sau đây cho thấy cách thực hiện nhiều thao tác sửa đổi cùng một lúc:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-01-01" end="2023-02-28"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier=".95"/>
        <Refundable available="true"
                    refundable_until_days="1"
                    refundable_until_time="12:00:00"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Tắt gói giá cho quốc gia của người dùng

Ví dụ sau đây cho thấy cách giới hạn một gói giá chỉ cho người dùng Nhật Bản (JP):

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <RatePlans>
         <RatePlan id="jp_only"/>
      </RatePlans>
      <UserCountries type="exclude">
        <Country code="JP"/>
      </UserCountries>
      <ModificationActions>
        <Availability status="unavailable"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Phản hồi

Cú pháp

Thông báo RateModificationsResponse sử dụng cú pháp sau:

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

Phần tử và thuộc tính

Thông báo RateModificationsResponse có các phần tử và thuộc tính sau:

Phần tử / @Thuộc tính Số lần xuất hiện Loại Nội dung mô tả
RateModifications 1 Complex element Phần tử gốc cho biết thông báo yêu cầu RateModify nhận được cho biết thành công hay gặp vấn đề.
RateModificationsResponse / @timestamp 1 DateTime Ngày và giờ tạo thông báo này.
RateModificationsResponse / @id 1 string Giá trị nhận dạng duy nhất trong thông báo RateModify được liên kết.
RateModificationsResponse / @partner 1 string Tài khoản đối tác dùng cho thư này.
RateModificationsResponse / Success 0..1 Success Cho biết rằng thông báo RateModify được xử lý thành công mà không có cảnh báo, lỗi hoặc lần xử lý hỏng nào.

<Success> hoặc <Issues> xuất hiện trong mỗi thông báo.

RateModificationsResponse / Issues 0..1 Issues Vùng chứa một hoặc nhiều vấn đề gặp phải khi xử lý thông báo RateModify.

<Success> hoặc <Issues> xuất hiện trong mỗi thông báo.

RateModificationsResponse / Issues / Issue 1..n Issue Nội dung mô tả về cảnh báo, lỗi hoặc sự cố gặp phải trong quá trình xử lý thông báo RateModify. Bạn có thể xem thông tin chi tiết về các vấn đề này trong Thông báo lỗi về trạng thái của nguồn cấp dữ liệu.
RateModificationsResponse / Issues / Issue / @code 1 integer Giá trị nhận dạng của vấn đề.
RateModificationsResponse / Issues / Issue / @status 1 enum

Loại vấn đề mà bạn gặp phải.

Các giá trị hợp lệ là warning, errorfailure.

Ví dụ

Thành công

Dưới đây là phản hồi cho một thông báo RateModify được xử lý thành công.

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

Vấn đề

Sau đây là phản hồi cho một thông báo RateModify chưa được xử lý do gặp lỗi.

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