Giao dịch (Dữ liệu của cơ sở lưu trú)

Yêu cầu

Cú pháp

Thông báo Transaction (Property Data) sử dụng cú pháp sau:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp"
             id="message_ID"
             partner="partner_key">
  <PropertyDataSet action="[overlay|delta]">
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>HotelID</Property>
    <RoomData>
      <!-- (Required) One room ID per RoomData element -->
      <RoomID>RoomID</RoomID>
      <Name>
        <Text text="room_name" language="language_code"/>
      </Name>
      <Description>
        <Text text="room_description" language="language_code"/>
      </Description>
      <!-- (Optional) Restricts the rate plans allowed for this room type to
        those listed here. If specified, don't specify AllowableRoomIDs. -->
      <AllowablePackageIDs>
        <AllowablePackageID>PackageID</AllowablePackageID>
      </AllowablePackageIDs>
      <Capacity>max_number_of_occupants</Capacity>
      <AdultCapacity>max_number_of_adult_occupants</AdultCapacity>
      <ChildCapacity>max_number_of_child_occupants</ChildCapacity>
      <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>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="bed_width"/>
             <Length unit="cm" number="bed_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>
    <PackageData>
      <!-- (Required) One package ID per PackageData element -->
      <PackageID>PackageID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
      </Description>
      <!-- (Optional) Restricts the room types allowed for this rate plan to
        those listed here. If specified, don't specify AllowablePackageIDs. -->
      <AllowableRoomIDs>
        <AllowableRoomID>RoomID</AllowableRoomID>
      </AllowableRoomIDs>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- 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>
    </PackageData>
  </PropertyDataSet>
</Transaction>

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

Thông báo Giao dịch (Dữ liệu của cơ sở lưu trú) có các thành phần sau và thuộc tính:

Phần tử / @Thuộc tính Số lần xuất hiện Loại Mô tả
Transaction 1 Complex element Trong quá trình triển khai ARI, đây là thành phần gốc của thông báo xác định loại phòng và gói dịch vụ cho một cơ sở lưu trú.
Transaction / @timestamp 1 DateTime Ngày và giờ tạo thông báo này.
Transaction / @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 tin nhắn 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).
Transaction / @partner 1 string Tài khoản đối tác dùng cho thư này. Giá trị chuỗi này là "Khoá đối tác" giá trị đượ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 ID được chỉ định trong <RequestorID> của <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> thư cho cùng một tài khoản.

Transaction / PropertyDataSet 1.. PropertyDataSet Vùng chứa dùng để xác định loại phòng và gói dịch vụ cho một cơ sở lưu trú.
Transaction / PropertyDataSet / @action 0..1 enum

Loại nội dung cập nhật áp dụng cho định nghĩa về giá phòng.

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

  • overlay : Thay thế tất cả được xác định trước đó <RoomData><PackageData> cho cơ sở lưu trú. Chỉ <RoomData><PackageData> trong tin nhắn hiện tại là hợp lệ.
  • delta : Bổ sung thông tin chưa xác định trước đó <RoomData><PackageData> hoặc sửa đổi các bản ghi hiện có.

Thuộc tính này là không bắt buộc và đặt mặc định là delta nếu không phải đã chỉ định.

Transaction / PropertyDataSet / Property 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 <id> trong phần tử <listing> trong 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.
Transaction / PropertyDataSet / RoomData 0..n RoomData

Mô tả một phòng.

Lưu ý: Ít nhất một trong <RoomData> hoặc <PackageData> là bắt buộc.

Transaction / PropertyDataSet / RoomData / RoomID 1 RoomID Giá trị nhận dạng duy nhất của một loại phòng. Giá trị này được tham chiếu bằng thuộc tính InvTypeCode trong Phần tử <StatusApplicationControl> trong <OTA_HotelAvailNotifRQ><OTA_HotelRateAmountNotifRQ> tin nhắn.
Transaction / PropertyDataSet / RoomData / Name 1 Name Vùng chứa tên loại phòng của một hoặc nhiều ngôn ngữ.
Transaction / PropertyDataSet / RoomData / Name / Text 1..n Text Xác định tên của danh mục phòng bằng một ngôn ngữ.
Transaction / PropertyDataSet / RoomData / Name / Text / @text 1..n string Tên của danh mục phòng bằng ngôn ngữ do Thuộc tính language.
Transaction / PropertyDataSet / RoomData / Description 1 Name Vùng chứa nội dung mô tả của danh mục phòng của một hoặc nhiều ngôn ngữ.
Transaction / PropertyDataSet / RoomData / Description / Text 1..n Text Xác định nội dung mô tả của danh mục phòng bằng một ngôn ngữ.
Transaction / PropertyDataSet / RoomData / Description / Text / @text 1..n string Nội dung mô tả của danh mục phòng bằng ngôn ngữ được chỉ định theo thuộc tính language.
Transaction / PropertyDataSet / RoomData / Description / Text / @language 1..n string Một chữ cái gồm hai chữ cái mã ngôn ngữ.
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs 0..1 AllowablePackageIDs Vùng chứa các phần tử <AllowablePackageID>.

Nếu bạn chỉ định <AllowablePackageIDs>, phòng loại được xác định bởi <RoomID> trong phần tử <RoomData> mẹ chỉ có thể được kết hợp với các gói giá được xác định theo Phần tử <AllowablePackageID>.

Nếu bạn không chỉ định <AllowablePackageIDs> thì phòng loại được xác định bởi <RoomID> trong phần tử mẹ Phần tử <RoomData> có thể kết hợp với bất kỳ gói giá.

Sử dụng <AllowablePackageIDs> hoặc <AllowableRoomIDs>, chứ không phải cả hai.

Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID 1..n AllowablePackageID Chỉ định PackageID của một gói giá có thể kết hợp được với gói giá này loại phòng. Gói giá được xác định bằng cách kết hợp gói, giá và tình trạng còn phòng. PackageID tương ứng với RatePlanCode trong Các thông báo OTA_HotelRateAmountNotifRQ và OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / RoomData / Capacity 0..1 integer Số lượng người lớn và trẻ em tối đa mà một phòng có thể cho phép điều kiện thực tế. Giá trị này phải lớn hơn hoặc bằng mọi giá trị NumberOfGuests mà bạn gửi cùng với giá.

Giá trị của <Capacity> phải là một số nguyên dương từ 1 đến 99. Xem tại đây để xem ví dụ.

Lưu ý: Nếu bạn không đặt <Capacity>, số này số người lưu trú được phép được coi là không giới hạn. Nếu trường này chưa được đặt và ExtraGuestCharges hoặc AdditionalGuestAmounts đã được xác định, giá có thể được tạo cho số lượng người lưu trú bất kỳ. Bạn nên bạn đặt <Capacity> nếu ExtraGuestCharges hoặc AdditionalGuestAmounts được xác định để đảm bảo rằng các mức giá không xuất hiện đối với những lựa chọn về số người lưu trú không hợp lệ.

Transaction / PropertyDataSet / RoomData / AdultCapacity 0..1 integer Số lượng người lớn tối đa mà một phòng có thể thực tế cho phép điều chỉnh cho phù hợp. Giá trị này phải lớn hơn hoặc bằng bất kỳ giá trị nào Giá trị NumberOfGuests mà bạn gửi cùng với giá.

Giá trị của <AdultCapacity> phải là số dương số nguyên từ 1 đến 99. Xem tại đây để xem ví dụ.

Transaction / PropertyDataSet / RoomData / ChildCapacity 0..1 integer Số lượng trẻ em tối đa mà một phòng có thể thực tế điều chỉnh cho phù hợp.

Giá trị của <ChildCapacity> phải là số dương số nguyên từ 1 đến 99. Xem tại đây để xem ví dụ.

Transaction / PropertyDataSet / RoomData / OccupancySettings 0..1 OccupancySettings Những chế độ cài đặt có thể hạn chế hoặc sửa đổi các yêu cầu về số người lưu trú của phòng.

Phần tử <OccupancySettings> sẽ lấy phương thức các phần tử con sau đây:

  • <MinOccupancy>: Số lượng khách tối thiểu có thể ở trong phòng. Ví dụ: nếu giá trị này được đặt thành 2 thân mến! Bạn không thể đặt phòng này cho một khách.

    Giá trị của <MinOccupancy> phải là số dương số nguyên từ 1 đến 99.

  • <MinAge>: Độ tuổi tối thiểu cho tất cả khách ở trong phòng. Ví dụ: nếu bạn đặt thuộc tính này thành 18, chỉ có thể đặt phòng này cho nhóm mà tất cả khách đều từ 18 tuổi trở lên.

    Giá trị của <MinAge> phải là một số nguyên dương từ 0 đến 99.

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

Bạn không cần thêm tất cả các phần tử con.

Transaction / PropertyDataSet / RoomData / PhotoURL 0..n PhotoURL URL và nội dung chú thích không bắt buộc về hình ảnh của căn phòng hoặc Gói dịch vụ phòng. Bạn có thể chỉ định nhiều <PhotoURL> cho một phòng hoặc Gói dịch vụ phòng.

Phần tử này có các phần tử con sau đây:

  • <URL>: Xác định vị trí của ảnh. Chiến lược phát hành đĩa đơn vị trí phải công khai (không có tường lửa) và phải bao gồm giao thức (http://).
  • <Caption>: Xác định chú thích cho ảnh. Phần tử này có một phần tử con duy nhất là <Text> Tệp này có hai thuộc tính bắt buộc, Textlanguage. Thuộc tính Text là chú thích. còn thuộc tính language chỉ định mã gồm hai chữ cái mã ngôn ngữ như en.
<PhotoURL>
 <URL>http://www.example.com/image1.jpg</URL>
 <Caption>
  <Text text="A bright way to enjoy your
   mornin' cuppa tea." language="en"/>
  <Text text="Une façon lumineuse pour profiter
   de votre tasse de thé." language="fr"/>
 </Caption>
</PhotoURL>
Transaction / PropertyDataSet / RoomData / RoomFeatures 0..1 <RoomFeatures> Chứa thông tin về các đặc điểm của phòng.
Transaction / PropertyDataSet / RoomData / RoomFeatures / JapaneseHotelRoomStyle 0..1 enum

Cho biết kiểu phòng khách sạn kiểu Nhật.

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

  • western: Phòng kiểu phương Tây có giường.
  • japanese: Phòng kiểu Nhật có giường futon.
  • japanese_western: Phòng kiểu phương Tây của Nhật Bản có có cả giường kiểu phương Tây và đệm futon kiểu Nhật.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds 0..1 Object Chứa nhiều <Bed> nhất có trong phòng. Xin lưu ý rằng không nên tính đệm futon của Nhật Bản ở đây.

Mỗi <Bed> đều có các thuộc tính sau:

  • size (không bắt buộc): Các giá trị hợp lệ là single, semi_double, double, queenking.
Mỗi <Bed> có các phần tử con như sau:
  • <Width> (không bắt buộc): Chỉ định chiều rộng của giường. Phải có thuộc tính unit với giá trị cm và thuộc tính number có chiều rộng của giường tính bằng centimet nguyên.
  • <Length> (không bắt buộc): Chỉ định chiều dài của giường. Phải có thuộc tính unit với giá trị cm và thuộc tính number có chiều dài của giường centimet.
Ví dụ:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
Transaction / PropertyDataSet / RoomData / RoomFeatures / Suite 0.. enum Hãy cung cấp phần tử này khi phòng này là phòng suite.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule 0..1 enum Hãy cung cấp phần tử này khi phòng này là phòng con nhộng.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing 0..1 enum Phòng này có được dùng chung với những người cư ngụ khác, chẳng hạn như chủ sở hữu hay không hoặc các khách mời khác. Các giá trị hợp lệ là sharedprivate.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor 0..1 enum Cung cấp phần tử này khi phòng này là nơi lưu trú ngoài trời không có tường cố định, hệ thống ống nước và điều hoà không khí. Ví dụ: phòng khách sạn không phải là nơi lưu trú ngoài trời trong khi khu cắm trại nơi khách lưu trú trong lều và Những khu vui chơi giải trí nơi khách mang xe RV riêng đến là nơi lưu trú ngoài trời.
Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible 0..1 enum Cung cấp phần tử này nếu phòng này có hỗ trợ người khuyết tật.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking 0..1 enum Phòng này là phòng không hút thuốc hay phòng hút thuốc. Hợp lệ là non_smokingsmoking.
Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet 0..1 Object Chứa thông tin về bồn tắm và nhà vệ sinh trong phòng.

Thuộc tính này là:

  • relation (không bắt buộc): Cho biết cách tắm và nhà vệ sinh được đặt tương quan với nhau. Các giá trị hợp lệ là Ví dụ: together có phòng tắm có cả hai phòng tắm và nhà vệ sinh được đặt cùng nhau trong cùng một phòng; và separate, nơi mỗi phòng tắm và nhà vệ sinh đều có riêng không gian. Bạn không được đặt thuộc tính này khi không có phòng cả bồn tắm lẫn nhà vệ sinh.

Phần tử này có thể lấy các phần tử con sau đây (không bắt buộc):

  • <Bath> (không bắt buộc): Sự tồn tại của phần tử này cho biết phòng có bồn tắm.

    Các thuộc tính đó bao gồm:

    • bathtub (không bắt buộc): Cho biết phòng tắm có bồn tắm trong phòng tắm. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).
    • shower (không bắt buộc): Cho biết phòng tắm có vòi hoa sen. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).
  • <Toilet> (không bắt buộc): Sự tồn tại của phần tử này cho biết phòng này có nhà vệ sinh.

    Các thuộc tính đó bao gồm:

    • electronic_bidet (không bắt buộc): Cho biết rằng bồn cầu có bàn vệ sinh điện tử. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).
    • mobility_accessible (không bắt buộc): Cho biết rằng nhà vệ sinh có hỗ trợ người khuyết tật. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).

Ví dụ:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
Transaction / PropertyDataSet / RoomData / RoomFeatures / OpenAirBath 0..1 enum Hãy cung cấp phần tử này khi phòng này có bồn tắm riêng ngoài trời.
Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning 0..1 enum Cung cấp phần tử này khi phòng này có máy điều hoà không khí.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony 0..1 enum Cung cấp phần tử này khi phòng này có ban công hoặc mái hiên.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Views 0..1 Object Các lựa chọn hợp lệ bao gồm:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

Transaction / PropertyDataSet / PackageData 0..n PackageData

Vùng chứa các phần tử mô tả tính năng theo giá và điều khoản không phải là một phần của nội dung mô tả phòng thực tế.

Lưu ý: Ít nhất một trong <RoomData> hoặc <PackageData> là bắt buộc.

Transaction / PropertyDataSet / PackageData / PackageID 1 string PackageID trong những tin nhắn này tương ứng với RatePlanCode trong OTA_HotelRateAmountNotifRQ và Thông báo OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / PackageData / Name 1 Name Vùng chứa tên gói bằng một hoặc nhiều ngôn ngữ.
Transaction / PropertyDataSet / PackageData / Name / Text 1..n Text Chỉ định tên của gói bằng một ngôn ngữ.
Transaction / PropertyDataSet / PackageData / Name / Text / @text 1..n string Tên của gói bằng ngôn ngữ được chỉ định bởi Thuộc tính language.
Transaction / PropertyDataSet / PackageData / Description 1 Description Vùng chứa nội dung mô tả gói bằng một hoặc nhiều ngôn ngữ.
Transaction / PropertyDataSet / PackageData / Description / Text 1..n Text Cho biết nội dung mô tả gói bằng một ngôn ngữ.
Transaction / PropertyDataSet / PackageData / Description / Text / @text 1..n string Mô tả của gói bằng ngôn ngữ được chỉ định bởi Thuộc tính language.
Transaction / PropertyDataSet / PackageData / Description / Text / @language 1..n string Một chữ cái gồm hai chữ cái mã ngôn ngữ.
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs 0..1 AllowableRoomIDs Vùng chứa các phần tử <AllowableRoomID>.

Nếu bạn chỉ định <AllowableRoomIDs>, gói giá được xác định bởi <PackageID> trong phần tử <PackageData> mẹ chỉ có thể được kết hợp với các loại phòng do Phần tử <AllowableRoomID>.

Nếu bạn không chỉ định <AllowableRoomIDs>, tỷ lệ kế hoạch do <PackageID> xác định trong phần tử mẹ Phần tử <PackageData> có thể kết hợp với bất kỳ loại phòng.

Sử dụng <AllowablePackageIDs> hoặc <AllowableRoomIDs>, chứ không phải cả hai.

Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID 1..n AllowableRoomID Chỉ định RoomID của một loại phòng có thể kết hợp được với loại phòng này gói giá. Một loại phòng được xác định trong một <RoomData> .
Transaction / PropertyDataSet / PackageData / Refundable 0..1 Refundable Cho phép niêm yết giá là có thể hoàn tiền đầy đủ hoặc có thể huỷ. Nếu không được cung cấp, sẽ không có thông tin nào về khoản tiền hoàn lại được hiển thị.

Lưu ý: Bạn nên đặt tất cả các thuộc tính. Nguồn cấp dữ liệu Thông báo cảnh báo về trạng thái sẽ được tạo khi một hoặc nhiều thuộc tính chưa được đặt.

Nếu bạn không thiết lập thuộc tính thì thuế suất sẽ không xuất hiện dưới dạng có thể hoàn lại.

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

  • Nếu available hoặc refundable_until_days nếu bạn không đặt, thì giá sẽ không hiển thị là có thể hoàn tiền.
  • Nếu available0 hoặc false, các thuộc tính khác sẽ bị bỏ qua. Thuế suất không hiển thị dưới dạng được hoàn lại ngay cả khi bạn đã thiết lập một trong hai hoặc cả hai thuộc tính còn lại.
Transaction / PropertyDataSet / PackageData / Refundable / @available 1 boolean (Bắt buộc) Đặt thành 1 hoặc true để cho biết liệu mức giá này có cho phép refund; nếu không, hãy đặt thành 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à có thể được hoàn lại toàn bộ tiền đã yêu cầu. Giá trị của refundable_until_days phải là một số nguyên từ 0 đến 330, gồm cả hai giá trị này.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time 0.. 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, yêu cầu hoàn tiền sẽ được thực hiện. Bạn có thể kết hợp các refundable_until_days để chỉ định, cho ví dụ: "có thể hoàn tiền đến 4 giờ chiều hai ngày trước khi xác nhận có mặt". Nếu bạn không đặt refundable_until_time thì giá trị này mặc định là nửa đêm.
Transaction / PropertyDataSet / PackageData / BreakfastIncluded 0..1 boolean Xác định xem loại phòng này có bao gồm bữa sáng hay không. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).

Bạn nên sử dụng <Meals> thay vì <BreakfastIncluded>.

Transaction / PropertyDataSet / PackageData / CheckinTime 0..1 Time Thời gian nhận phòng sớm nhất có thể theo giờ địa phương của khách sạn. Thời gian phải ít hơn 24:00.
Transaction / PropertyDataSet / PackageData / CheckoutTime 0..1 Time Thời gian trả phòng muộn nhất theo giờ địa phương của khách sạn.
Transaction / PropertyDataSet / PackageData / InternetIncluded 0..1 boolean Chỉ định xem phòng có cho phép truy cập Internet miễn phí hay không còn các phòng khác thì không có tiện nghi này. Đừng đặt phần tử này trong khách sạn cung cấp Internet miễn phí cho tất cả phòng. Phần tử này không áp dụng cho mạng có dây trong phòng hoặc Internet không dây không có trong phòng dành cho khách. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).
Transaction / PropertyDataSet / PackageData / Meals 0..1 Object Chứa thông tin về các bữa ăn trong gói này.

Phần tử <Meals> có 2 phần tử con không bắt buộc các phần tử <Breakfast><Dinner>, có các thuộc tính sau:

  • included (bắt buộc): Đặt thành 1 (hoặc true) nếu giá phòng bao gồm bữa sáng/bữa tối; nếu không được đặt thành 0 hoặc false.
  • in_room (không bắt buộc): Đặt thành 1 (hoặc true) nếu khách có thể dùng bữa sáng/bữa tối ở trong căn phòng mà chúng ở; nếu không, đặt thành 0 (hoặc false).
  • in_private_space (không bắt buộc): Đặt thành 1 (hoặc true) nếu khách có thể dùng bữa sáng/ ăn tối trong một không gian (ngoại trừ căn phòng họ ở) nơi họ có thể tránh tiếp xúc với khách khác; nếu không, đặt thành 0 (hoặc false).
  • buffet (không bắt buộc): Đặt thành 1 (hoặc true) nếu phục vụ bữa sáng/bữa tối dưới dạng tự chọn; nếu không, đặt thành 0 (hoặc false).

Các thuộc tính không bắt buộc chỉ được dùng khi included là đúng.

Đối với bộ lọc bữa ăn (no meals, breakfast only, dinner onlybreakfast and dinner) để hoạt động, cả <Breakfast><Dinner> đều cần được cung cấp cùng với thuộc tính included.

Transaction / PropertyDataSet / PackageData / ParkingIncluded 0..1 boolean Liệu phòng có chỗ đỗ xe miễn phí hay không, nơi nếu không thì việc đỗ xe sẽ là dịch vụ có tính phí tại khách sạn này. Không chỉ định một giá trị cho phần tử này đối với khách sạn cung cấp chỗ đỗ xe miễn phí. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true). Giá trị mặc định là false.
Transaction / PropertyDataSet / PackageData / PhotoURL 0..1 Object (Tương tự như <PhotoURL> trong <RoomData>, nhưng cho gói hàng (ví dụ: ảnh bữa ăn).

Ví dụ

Dữ liệu về phòng và gói dịch vụ

Sau đây là ví dụ cơ bản về cách xác định phòng của cơ sở lưu trú và dữ liệu về gói trong thông báo Giao dịch (Dữ liệu của cơ sở lưu trú). overlay được dùng để đảm bảo rằng nếu đã có dữ liệu tồn tại đột ngột, tất cả dữ liệu hiện có đều sẽ bị xoá và thay thế bằng dữ liệu trong thông báo này:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-05-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="King" language="en"/>
      </Name>
      <Description>
        <Text text="Room with a king bed" language="en"/>
      </Description>
      <Capacity>2</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image.jpg</URL>
        <Caption>
          <Text text="Room with a king bed" language="en"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <RoomData>
      <RoomID>RoomID_2</RoomID>
      <Name>
        <Text text="Double" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      <Description>
        <Text text="Standard rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>PackageID_2</PackageID>
      <Name>
        <Text text="Free Breakfast" language="en"/>
      </Name>
      <Description>
        <Text text="Free breakfast rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Thêm loại phòng

Sau đây là ví dụ về cách thêm một loại phòng và gói dịch vụ vào dữ liệu <Transaction> hiện có:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="delta">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_3</RoomID>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <PackageData>
      <PackageID>PackageID_3</PackageID>
      <Name>
        <Text text="Non-Refundable" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="false"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Xoá loại phòng

Sau đây là ví dụ về cách xoá các loại phòng hiện có và . Trong trường hợp này, nếu các thông báo trong "Dữ liệu về phòng và gói dịch vụ" và "Thêm loại phòng" đã từng được gửi tới Google, KingDouble loại phòng sẽ không còn tồn tại sau khi Google nhận được tin nhắn hiển thị. Lưu ý rằng việc xoá dữ liệu gói sẽ ảnh hưởng đến gói giá tổng thể như được xác định trên Giao dịch (Dữ liệu của cơ sở lưu trú), OTA_HotelRateAmountNotifRQ, và OTA_HotelAvailNotifRQ tin nhắn (bằng cách tham chiếu cùng một PackageID giá trị) và do đó, các bản cập nhật tương ứng sử dụng các loại thông báo khác có thể là bắt buộc để phản ánh rằng PackageID_2PackageID_3 không còn nữa xác định ở đây.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-08-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
      <Capacity>2</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image.jpg</URL>
        <Caption>
          <Text text="Room with a queen bed" language="en"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Refundable" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>


Hạn chế các gói giá

Sau đây là ví dụ về cách sử dụng <AllowablePackageIDs> để hạn chế các gói giá được phép cho một loại phòng. Trong ví dụ này, Loại phòng Queen (RoomID_2) chỉ có thể kết hợp với gói dịch vụ này và gói giá được xác định là PackageID_1.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="King" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <RoomData>
      <RoomID>RoomID_2</RoomID>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <AllowablePackageIDs>
        <AllowablePackageID>PackageID_1</AllowablePackageID>
      </AllowablePackageIDs>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>PackageID_2</PackageID>
      <Name>
        <Text text="Free Breakfast" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Giới hạn sức chứa của phòng

Sau đây là ví dụ về cách sử dụng <Capacity>, <AdultCapacity> Các phần tử <ChildCapacity> để đặt giới hạn về sức chứa của phòng.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="Double" language="en"/>
      </Name>
      <Capacity>4</Capacity>
      <AdultCapacity>4</AdultCapacity>
      <ChildCapacity>3</ChildCapacity>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
  </PropertyDataSet>
</Transaction>

Loại phòng đôi (RoomID_1) có thể có tổng cộng tối đa 4 khách. Ngoài ra, phòng có thể có tối đa 4 người lớn và tối đa 3 trẻ em. Cả 3 sức chứa phải đáp ứng các yêu cầu để có thể đặt phòng này. Chiến dịch này Biểu đồ này thể hiện một căn phòng thông thường có 2 giường, mỗi giường vừa với 2 người. Sức chứa của tài khoản con nhỏ hơn 1 so với tổng sức chứa vì phòng phải có ít nhất một người lớn có mặt.

Ví dụ mở rộng về <RoomFeatures> và bữa ăn

JapaneseHotelRoomStyle không có giá trị mặc định. Việc bỏ qua một giá trị sẽ không dẫn đến lỗi XML nhưng trang thông tin của bạn thì không hiển thị trong kết quả tìm kiếm, khi người dùng lọc theo kiểu phòng hoặc giường.

2 giường đơn

Ví dụ sau đây trình bày cách sử dụng <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>

2 giường đôi nhỏ

Sau đây là ví dụ về phòng kiểu western có hai double giường.

<?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>

Kiểu Nhật không có giường

Sau đây là ví dụ về phòng kiểu Nhật không có giường. Giường không cần thông tin cho phòng kiểu 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>

Giường kiểu phương Tây theo phong cách Nhật Bản

Sau đây là ví dụ về phòng kiểu japanese_westernking giường cỡ nhỏ.

<?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>

Nếu đối tác không có thông tin về số lượng giường tại japanese_western phòng, thì hãy tham khảo ví dụ sau:

<?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>


Bữa ăn

Ví dụ sau đây xác định siêu dữ liệu về phòng và gói dịch vụ cho bữa ăn, ảnh và thời gian nhận và trả phòng:

<?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>

Chỉ có bữa sáng

<?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>

Phản hồi

Cú pháp

Thông báo TransactionResponse (Property Data) sử dụng cú pháp sau:

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

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

Thông báo TransactionResponse (Property Data) có những nội dung sau phần tử và thuộc tính:

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

<Success> hoặc <Issues> là xuất hiện trong mỗi thông điệp.

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

<Success> hoặc <Issues> là xuất hiện trong mỗi thông điệp.

TransactionResponse / Issues / Issue 1..n Issue Nội dung mô tả về cảnh báo, lỗi hoặc thất bại xảy ra trong khi đang xử lý thông báo Giao dịch. 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 nguồn cấp dữ liệu.
TransactionResponse / Issues / Issue / @code 1 integer Giá trị nhận dạng của vấn đề.
TransactionResponse / 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, error, và failure.

Ví dụ

Thành công

Dưới đây là phản hồi cho thông báo Giao dịch được xử lý thành công.

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

Vấn đề

Dưới đây là phản hồi cho thông báo Giao dịch chưa được xử lý do .

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