TABLE OF CONTENTS


介绍

儿童价是 GO Distributor v4.7 发布的一项新功能,支持当酒店集团按儿童年龄段来提供儿童价时,GO 透传给渠道的业务场景。



版本要求


GO版本需要升级到 GO Distributor V4.7或更高版本吗?备注
  • GO V3 渠道
  • GO V4 Pull 渠道
渠道调用实时检查或Shop ARI 接口时,GO将根据请求中的”儿童年龄”进行计算并返回对应的价格
  • GO V4 Push 渠道


需要升级以下两个接口:

1.BookingUSB的酒店产品接口

2.AvailabilityPeer的ARI推送接口




儿童价类型

目前 GO 支持四种儿童价类型,渠道可以通过 BookingUSB 酒店产品接口中的 childRateType 字段获取此类型。

儿童价类型描述
Normal

入住成人与入住儿童组合价

ByAge

根据入住儿童年龄收取对应儿童价

Free

入住儿童免费

AsAdult

入住儿童按成人价收取



文档中的定义

属性类型描述
childRateType枚举

枚举:[Normal,ByAge,Free,AsAdult]

标示酒店儿童价类型

Normal:默认类型,入住成人与入住儿童组合价,与入住儿童年龄无关

ByAge:根据入住儿童年龄收取对应儿童价。此类型时 maxChildAge 字段提供最大儿童年龄设置。推送 ARI 时,儿童价由 extraChildRates 节点推送。

Free:入住儿童免费

AsAdult:入住儿童将按成人收费

maxChildAge整数如果 childRateType 设置为 ByAge,则必须提供大于零的最大儿童年龄。



如何通过API获取childRateType指示符?

渠道调用 BookingUSB 酒店产品接口,通过 childRateType 字段获取标识,参见示例如下:

{
    "hotelId": "GATHI",
    "hotelName": "This is a test hotel",
    "supplierId": "HILTON",
    "status": "Actived",
    "chainCode": "abc",
    "brandCode": "Waldorf",
    "longitude": 41.40338,
    "latitude": 2.17403,
    "city": "string",
    "country": "string",
    "state": "string",
    "address": [
        "AddressLine1",
        "AddressLine2"
    ],
    "phone": {
        "countryAccessCode": "string",
        "areaCityCode": "string",
        "phoneNumber": "string"
    },
    "settings": {
        "userName": "username",
        "password": "password"
    },
    "ariType": "Daily",
    "timezone": "America/Los_Angeles",
    "rateType": "AmountBeforeTax",
    "maxChildAge": 17,
    "childRateType": "ByAge",
    "products": [...]
}



如何通过 API 获取儿童价?

  • 对于 GO v4 拉模式渠道

渠道无需修改程序代码,因为 GO 将根据请求中的成人数,儿童数及儿童年龄计算出总价并返回给渠道。

示例:shopping 两位成人,一位 8 岁儿童入住的 ARI 数据,GO 将计算并返回总价。

示例请求:

{
"header": {
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
 },
 "hotels": [
 {
"supplierId": "HILTON",
"hotelId": "GATHI",
"status": "Actived"
 }
 ],

"stayRange": {
"checkin": "2022-01-01",
"checkout": "2022-01-04"
 },
"roomCriteria": {
"roomCount": 1,
"adultCount": 2,
 "childCount": 1,
"childAges": [8]
 }
}


  • 对于 GO v4 推模式渠道

重要信息:

GO Distributor v4.7及以上支持儿童价功能。低于此版本的渠道如要升级并支持儿童价,请联系我们 GO Help 团队。

如果酒店集团支持并提供儿童价,GO 将通过 AvailabilityPeer ARI Push 接口中 extraChilaRates 向渠道推送儿童价。

Daily ARI 推送示例如下:

{
    "header": {
        "supplierId": "HILTON",
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "hotelId": "GATHI",
    "dateRange": {
        "startDate": "2018-01-01",
        "endDate": "2018-01-04"
    },
    "currency": "USD",
    "dailyAris": [
        {
            "roomId": "K1",
            "rateId": "BARB",
            "mealPlans": [
                "BB",
                "BB",
                "BB",
                "BB"
            ],
            "inventories": [
                9,
                0,
                9,
                9
            ],
            "rates": {
                "extraChildRates": [
                    {
                        "amountAfterTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "amountBeforeTax": [
                            40.00,
                            40.00,
                            40.00,
                            40.00
                        ],
                        "maxAge": 2,
                        "minAge": 0
                    },
                    {
                        "amountAfterTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "amountBeforeTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "maxAge": 8,
                        "minAge": 3
                    },
                    {
                        "amountAfterTax": [
                            70.00,
                            70.00,
                            70.00,
                            70.00
                        ],
                        "amountBeforeTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "maxAge": 17,
                        "minAge": 9
                    }
                ],
                "type": "OccupancyRate",
                "rates": [
                    {
                        "adultCount": 1,
                        "amountBeforeTax": [
                            502.19,
                            502.19,
                            502.19,
                            502.19
                        ],
                        "amountAfterTax": [
                            623.23,
                            623.23,
                            623.23,
                            623.23
                        ]
                    },
                    {
                        "adultCount": 2,
                        "amountBeforeTax": [
                            520.19,
                            520.19,
                            520.19,
                            520.19
                        ],
                        "amountAfterTax": [
                            641.23,
                            641.23,
                            641.23,
                            641.23
                        ]
                    }
                ]
            },
            "availStatuses": {
                "close": [
                    false,
                    false,
                    false,
                    false
                ],
                "minStayArrival": [
                    0,
                    2,
                    0,
                    0
                ],
                "maxStayArrival": [
                    0,
                    2,
                    0,
                    0
                ],
                "minStayThrough": [
                    0,
                    2,
                    0,
                    0
                ],
                "maxStayThrough": [
                    0,
                    2,
                    0,
                    0
                ],
                "minAdvanceDay": [
                    0,
                    2,
                    0,
                    0
                ],
                "maxAdvanceDay": [
                    365,
                    365,
                    365,
                    365
                ],
                "cta": [
                    false,
                    false,
                    false,
                    true
                ],
                "ctd": [
                    false,
                    false,
                    false,
                    true
                ],
                "fplos": [
                    "1111111",
                    "1001111",
                    "1000001",
                    "0000000"
                ]
            },
            "rateChangeIndicators": [
                true,
                false,
                true,
                false
            ]
        }
    ]
}


LOS ARI 推送示例如下:

{
    "header": {
        "supplierId": "HILTON",
        "distributorId": "GTA",
        "version": "v4",
        "token": "18393849028490234"
    },
    "hotelId": "GATHI",
    "dateRange": {
        "startDate": "2018-01-01",
        "endDate": "2018-01-04"
    },
    "currency": "USD",
    "losAris": [{
            "roomId": "K1",
            "rateId": "BARB",
            "los": 1,
            "mealPlans": [
                "BB",
                "BB",
                "RO",
                "BB"
            ],
            "inventories": [
                9,
                0,
                9,
                9
            ],
            "rates": {
                "extraChildRates": [{
                        "amountAfterTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "amountBeforeTax": [
                            40.00,
                            40.00,
                            40.00,
                            40.00
                        ],
                        "maxAge": 2,
                        "minAge": 0
                    }, {
                        "amountAfterTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "amountBeforeTax": [
                            50.00,
                            50.00,
                            50.00,
                            50.00
                        ],
                        "maxAge": 8,
                        "minAge": 3
                    }, {
                        "amountAfterTax": [
                            70.00,
                            70.00,
                            70.00,
                            70.00
                        ],
                        "amountBeforeTax": [
                            60.00,
                            60.00,
                            60.00,
                            60.00
                        ],
                        "maxAge": 17,
                        "minAge": 9
                    }
                ],
                "type": "OccupancyRate",
                "rates": [{
                        "adultCount": 2,
                        "childCount": 1,
                        "amountBeforeTax": [
                            502.19,
                            502.19,
                            502.19,
                            502.19
                        ],
                        "amountAfterTax": [
                            623.23,
                            623.23,
                            623.23,
                            623.23
                        ]
                    }
                ]
            }
        }
    ]
}



它是如何在GO v4.7 Push渠道API上工作的?

我们从 GO BookingUSB 的酒店产品 API 中删除了 2 个属性,并添加了一个新属性。

  • 属性 freeChildAge 和 childPriceRules 将被删除。
  • 添加属性 childRateType,用于指示酒店集团提供了哪种类型的儿童价。如果 childRateType 是 ByAge,则 maxChildAge 为必填属性,并且值大于0。示例如下:
{
    "hotelId": "100001",
    "hotelName": "This is a test hotel",
    "distributorId": "GTA",
    "status": "Actived",
    "chainCode": "Marriott",
    "brandCode": "Courtyard",
    "longitude": 41.40338,
    "latitude": 2.17403,
    "city": "string",
    "country": "string",
    "state": "string",
    "address": [],
    "phone": {},
    "settings": {},
    "ariType": "Daily",
    "timezone": "America/Los_Angeles",
    "rateType": "AmountBeforeTax",
    "maxChildAge": 17,
    "childRateType": "ByAge",
    "products": []
}


我们在 AvailabilityPeer 的 ARI PUSH API 上添加了新属性 extraChilaRates,以反映 Rate 模型 OccupancyRate 中特定年龄段的儿童价格。

例如. 如果设置 maxChildAge=8,则示例响应如下:

"rates": {
  "type": "OccupancyRate",
  "rates": [
    {
      "adultCount": 1,
      "amountBeforeTax": [
        100.00,
        100.00,
      ],
      "amountAfterTax": [
        120.00,
        120.00
      ]
    },
    {
      "adultCount": 2,
      "amountBeforeTax": [
        180.00,
        180.00,
      ],
      "amountAfterTax": [
        200.00,
        200.00
      ]
    }
  ],
  "extraChildRates": [
    {
      "minAge": 0,
      "maxAge": 2,
      "amountBeforeTax": [
        40.00,
        40.00,
      ],
      "amountAfterTax": [
        50.00,
        50.00
      ]
    },
    {
      "minAge": 3,
      "maxAge": 8,
      "amountBeforeTax": [
        50.00,
        50.00,
      ],
      "amountAfterTax": [
        60.00,
        60.00
      ]
    }
  ]
}


Notes:
  1. 年龄范围将被明确定义且不重叠,例如,当 maxChildAge 为 12 时,年龄范围为 [0-2]、[3-8] 和 [9-12]。
  2. minAge 和 maxAge 都是闭区间,其中 minAge 将大于或等于 0,maxAge 应小于或等于 maxChildAge。
  3. 儿童定价将基于与客房相同的金额类型(AAT/ABT)。
  4. 当推送 byAge 的儿童价时,childCount 字段将从成人和儿童的费率组合中删除。