产品 Addon API 升级指南
修改于: 2024-04-22 15:49
TABLE OF CONTENTS
介绍
渠道可以调用产品 Addon 接口获取 Addon 详细信息,调用 live-check 对其可预订检查。并在随后的订单预订中打包 Addon 产品。
版本要求
| GO的版本 | 版本要求 | 备注 |
|---|---|---|
GO v3 渠道 | 全新开发 GO v4.8 及以上 | / |
GO v4 渠道 | 升级到 GO v4.8 及以上 | 以下是需要升级或实现的API 1.酒店产品API 2.产品 Addon API(新) 3.房间实时检查API 4.订单预订前检查 API 5.订单预订 API 6.订单修改 API(可选) 7.订单详情查询 API(可选) |
工作流和交互图
- 渠道通过酒店API获取产品附加码和产品。
- 渠道过产品 Addon API获取产品插件详细信息(包括价格和限制)。
- 渠道通过Product Addon availability API从酒店供应商处获得实时可用性。
- 渠道通过Prebook API最终检查产品插件的可用性以及房间。
- 渠道通过book API预订产品插件和房间。
- 渠道通过modify API修改产品插件和房间。
- 渠道通过cancel API取消产品插件和房间。
- 渠道通过Query Res API获取特定预订的产品插件详细信息。
有6个API需要升级到v4.8才能支持产品 Addon
- 酒店产品 API
- 房间可预订检查API
- 订单预订前检查 API
- 订单预订 API
- 订单修改 API(可选)
- 查询订单详情 API(可选)
小贴士: 更改后的部分已标记为“Addon start here”和“Addon end”。
1.酒店产品API-将从酒店产品API返回产品 Addon 代码
响应示例:
{
"hotelId": "GATHI",
"hotelName": "This is a test hotel",
"supplierId": "HILTON",
"status": "Actived",
"chainCode": "Marriott",
"brandCode": "Waldorf",
"longitude": "41.40338",
"latitude": "2.17403",
"city": "string",
"country": "string",
"state": "string",
"address": [
"AddressLine1",
"AddressLine2",
"AddressLine3",
"AddressLine4",
"AddressLine5"
],
"phone": {
"countryAccessCode": "string",
"areaCityCode": "string",
"phoneNumber": "string"
},
"settings": {
"key1": "value1",
"key2": "value2"
},
"ariType": "Daily",
"timezone": "America/Los_Angeles",
"rateType": "AmountBeforeTax",
"maxChildAge": 17,
"childRateType": "ByAge",
"products": [
{
"roomId": "10000101",
"rateId": "123456",
"stayType": "OverNightRoom",
"status": "Actived",
"roomName": "Double Room",
"roomDescription": "Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings.",
"rateName": "Bar Rate",
"rateDescription": "Begin your day with a hearty meal.",
"occupancy": {
"maxAdult": 3,
"maxChild": 2,
"maxOccupancy": 3
},
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"cancelPolicies": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable",
"cancelPenalties": [
{
"noShow": true,
"cancellable": true,
"cancelDeadline": {
"offsetTimeDropType": "BeforeArrival",
"offsetTimeUnit": "D",
"offsetTimeValue": 0,
"deadline": "string"
},
"penaltyCharge": {
"chargeBase": "FullStay",
"nights": 0,
"amount": 0,
"percent": 0
}
}
]
}
}
],
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"effectivePerson": 0
}
}
],
//addon start here
"bookingChannels": [
"channel",
"channel"
],
"sourceMarkets": [
"region",
"region"
],
"productAddons": [
{
"type": "DisneyTicket",
"required": true,
"candidateCodes": [
"code",
"code"
]
}
]
//addon end
}
]
}2.Room Live Check API-将bookingChannel节点添加到请求中
请求示例:
{
"header": {
"supplierId": "HILTON",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"hotelId": "GATHI",
"stayRange": {
"checkin": "2018-01-01",
"checkout": "2018-01-04"
},
"roomCriteria": {
"roomCount": 2,
"adultCount": 1,
"childCount": 2,
"childAges": [
4,
8
]
},
"productCandidate": {
"roomId": "K1D",
"rateId": "ODAD01"
},
"iata": "string",
"loyaltyAccount": {
"programCode": "BW",
"accountId": "1234567890123457"
},
"corpAccount": {
"corpProgramCode": "CR",
"corpId": "A-1232"
},
"isAfterPromotion": false,
"promoteCode": "string",
//addon start here
"bookingChannel": "string",
//addon end here
"extensions": {
"key1": "value1",
"key2": "value2"
}
}3. Prebook API-产品 Addon 将与客房预订一起提供。
注意事项: ① 产品 Addon 的价格不包括在客房总价中。 ② 对于迪士尼的房间+门票预订,门票数量必须与入住人数相同,否则订单将无法成功。此外,对于多张票的预订,每张票的入场日期应相同。 ③ 对于迪士尼的预订,建议客人信息的数量与入住人数保持一致,客人的年龄应准确,以便迪士尼更好地为客人服务。
请求示例:
{
"header": {
"supplierId": "HILTON",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"reservationIds": {
"distributorResId": "C2084DFL0",
"derbyResId": "D15F893D34DF",
"supplierResId": "89389494"
},
"iata": "string",
"hotelId": "GATHI",
"stayRange": {
"checkin": "2018-01-01",
"checkout": "2018-01-04"
},
"contactPerson": {
"firstName": "James",
"lastName": "Bond",
"email": "007@james.com",
"phone": "string",
"address": "string"
},
"roomCriteria": {
"roomCount": 2,
"adultCount": 1,
"childCount": 2,
"childAges": [
4,
8
]
},
"total": {
"amountBeforeTax": 640,
"amountAfterTax": 700
},
"payment": {
"cardCode": "VI",
"cardNumber": "4111111111111111",
"cardHolderName": "Sherlock Holmes",
"expireDate": "0124"
},
"loyaltyAccount": {
"programCode": "BW",
"accountId": "1234567890123457"
},
"corpAccount": {
"corpProgramCode": "CR",
"corpId": "A-1232"
},
"promoteCode": "string",
"guests": [
{
"firstName": "James",
"lastName": "Bond",
"email": "007@james.com",
"phone": "string",
"address": "string",
"age": 0,
"gender": "Male",
"birthday": "2018-01-01",
"type": "Adult",
"index": 1
}
],
"comments": [
"no smoking",
"high floor"
],
"roomRates": [
{
"roomId": "K1D",
"rateId": "ODAD01",
"currency": "USD",
"amountBeforeTax": [
100,
100,
120
],
"amountAfterTax": [
110,
110,
130
],
"mealPlan": "RO",
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"effectivePerson": 0
}
}
],
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable",
"cancelPenalties": [
{
"noShow": true,
"cancellable": true,
"cancelDeadline": {
"offsetTimeDropType": "BeforeArrival",
"offsetTimeUnit": "D",
"offsetTimeValue": 0,
"deadline": "string"
},
"penaltyCharge": {
"chargeBase": "FullStay",
"nights": 0,
"amount": 0,
"percent": 0
}
}
]
}
}
],
//addon start here
"bookingChannel": "string",
"productAddons": [
{
"type": "DisneyTicket",
"code": "code",
"date": "2018-01-01",
"quantity": 1,
"officeId": "string",
"rate": {
"ageQualifyingType": {
"type": "Adult",
"minAge": 18,
"maxAge": 99
},
"currency": "USD",
"amountBeforeTax": 123.23,
"amountAfterTax": 134.34
}
}
],
//addon end
"extensions": {
"key1": "value1",
"key2": "value2"
}
}4.订单API- 订单预订请求中包含产品 Addon 信息。
注意事项: ① 客房总价不包含产品 Addon 的价格。 ② 对于迪士尼的房间+门票预订,门票数量必须与入住人数相同,否则订单将无法成功。此外,对于多张票的预订,每张票的入场日期应相同。 ③ 对于迪士尼的预订,建议客人数量与入住人数保持一致,客人的年龄应准确,以便迪士尼更好地为客人服务。
请求示例:
{
"header": {
"supplierId": "HILTON",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"reservationIds": {
"distributorResId": "C2084DFL0",
"derbyResId": "D15F893D34DF",
"supplierResId": "89389494"
},
"iata": "string",
"hotelId": "GATHI",
"stayRange": {
"checkin": "2018-01-01",
"checkout": "2018-01-04"
},
"contactPerson": {
"firstName": "James",
"lastName": "Bond",
"email": "007@james.com",
"phone": "string",
"address": "string"
},
"roomCriteria": {
"roomCount": 2,
"adultCount": 1,
"childCount": 2,
"childAges": [
4,
8
]
},
"total": {
"amountBeforeTax": 640,
"amountAfterTax": 700
},
"payment": {
"cardCode": "VI",
"cardNumber": "4111111111111111",
"cardHolderName": "Sherlock Holmes",
"expireDate": "119"
},
"loyaltyAccount": {
"programCode": "BW",
"accountId": "1234567890123457"
},
"corpAccount": {
"corpProgramCode": "CR",
"corpId": "A-1232"
},
"promoteCode": "string",
"guests": [
{
"firstName": "James",
"lastName": "Bond",
"email": "007@james.com",
"phone": "string",
"address": "string",
"age": 0,
"gender": "Male",
"birthday": "2018-01-01",
"type": "Adult",
"index": 1
}
],
"comments": [
"no smoking",
"high floor"
],
"roomRates": [
{
"roomId": "K1D",
"rateId": "ODAD01",
"currency": "USD",
"amountBeforeTax": [
100,
100,
120
],
"amountAfterTax": [
110,
110,
130
],
"mealPlan": "RO",
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"effectivePerson": 0
}
}
],
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable",
"cancelPenalties": [
{
"noShow": true,
"cancellable": true,
"cancelDeadline": {
"offsetTimeDropType": "BeforeArrival",
"offsetTimeUnit": "D",
"offsetTimeValue": 0,
"deadline": "string"
},
"penaltyCharge": {
"chargeBase": "FullStay",
"nights": 0,
"amount": 0,
"percent": 0
}
}
]
}
}
],
//addon start here
"bookingChannel": "string",
"productAddons": [
{
"type": "DisneyTicket",
"code": "code",
"date": "2018-01-01",
"quantity": 1,
"officeId": "string",
"rate": {
"ageQualifyingType": {
"type": "Adult",
"minAge": 18,
"maxAge": 99
},
"currency": "USD",
"amountBeforeTax": 123.23,
"amountAfterTax": 134.34
}
}
],
//addon end
"threeDomainSecurity": {
"cavv": "string",
"eci": "string",
"xid": "string",
"threeDomainSecurityVersion": "string",
"transactionId": "string",
"merchantName": "string",
"extensions": {
"key1": "value1",
"key2": "value2"
}
},
"bookingToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"extensions": {
"key1": "value1",
"key2": "value2"
}
}5.修改API- 订单修改接口中会包含产品 Addon 信息
注意事项: 关于修改迪士尼预订,请不要更改每个房间的第一位客人信息,否则预订将无法成功修改。
请求示例:
{
"header": {
"supplierId": "HILTON",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"reservationIds": {
"distributorResId": "C2084DFL0",
"derbyResId": "D15F893D34DF",
"supplierResId": "89389494"
},
"iata": "string",
"hotelId": "GATHI",
"stayRange": {
"checkin": "2018-01-01",
"checkout": "2018-01-04"
},
"contactPerson": {
"firstName": "James",
"lastName": "Bond",
"email": "007@james.com",
"phone": "string",
"address": "string"
},
"roomCriteria": {
"roomCount": 2,
"adultCount": 1,
"childCount": 2,
"childAges": [
4,
8
]
},
"total": {
"amountBeforeTax": 640,
"amountAfterTax": 700
},
"payment": {
"cardCode": "VI",
"cardNumber": "4111111111111111",
"cardHolderName": "Sherlock Holmes",
"expireDate": "119"
},
"loyaltyAccount": {
"programCode": "BW",
"accountId": "1234567890123457"
},
"corpAccount": {
"corpProgramCode": "CR",
"corpId": "A-1232"
},
"promoteCode": "string",
"guests": [
{
"firstName": "James",
"lastName": "Bond",
"email": "007@james.com",
"phone": "string",
"address": "string",
"age": 0,
"gender": "Male",
"birthday": "2018-01-01",
"type": "Adult",
"index": 1
}
],
"comments": [
"no smoking",
"high floor"
],
"roomRates": [
{
"roomId": "K1D",
"rateId": "ODAD01",
"currency": "USD",
"amountBeforeTax": [
100,
100,
120
],
"amountAfterTax": [
110,
110,
130
],
"mealPlan": "RO",
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"effectivePerson": 0
}
}
],
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable",
"cancelPenalties": [
{
"noShow": true,
"cancellable": true,
"cancelDeadline": {
"offsetTimeDropType": "BeforeArrival",
"offsetTimeUnit": "D",
"offsetTimeValue": 0,
"deadline": "string"
},
"penaltyCharge": {
"chargeBase": "FullStay",
"nights": 0,
"amount": 0,
"percent": 0
}
}
]
}
}
],
//addon start here
"bookingChannel": "string",
"productAddons": [
{
"type": "DisneyTicket",
"code": "code",
"date": "2018-01-01",
"quantity": 1,
"officeId": "string",
"rate": {
"ageQualifyingType": {
"type": "Adult",
"minAge": 18,
"maxAge": 99
},
"currency": "USD",
"amountBeforeTax": 123.23,
"amountAfterTax": 134.34
}
}
],
//addon end
"extensions": {
"key1": "value1",
"key2": "value2"
}
}6.Query Res Detail API-产品Addon详细信息将通过Query Res Detail API返回。
响应示例:
{
"header": {
"supplierId": "HILTON",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"reservations": [
{
"reservationIds": {
"distributorResId": "C2084DFL0",
"derbyResId": "D15F893D34DF",
"supplierResId": "89389494"
},
"iata": "string",
"hotelId": "GATHI",
"stayRange": {
"checkin": "2018-01-01",
"checkout": "2018-01-04"
},
"roomCriteria": {
"roomCount": 2,
"adultCount": 1,
"childCount": 2,
"childAges": [
4,
8
]
},
"total": {
"amountBeforeTax": 640,
"amountAfterTax": 700
},
"loyaltyAccount": {
"programCode": "BW",
"accountId": "1234567890123457"
},
"corpAccount": {
"corpProgramCode": "CR",
"corpId": "A-1232"
},
"promoteCode": "string",
"comments": [
"no smoking",
"high floor"
],
"roomRates": [
{
"roomId": "K1D",
"rateId": "ODAD01",
"currency": "USD",
"amountBeforeTax": [
100,
100,
120
],
"amountAfterTax": [
110,
110,
130
],
"mealPlan": "RO",
"paymentType": "PayNow",
"guarantee": {
"guaranteeType": "CCG"
},
"fees": [
{
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-01-04"
},
"fee": {
"name": "Service Charge",
"type": "Exclusive",
"amount": 10,
"amountType": "Percent",
"chargeType": "PerRoomPerNight",
"paymentType": "PayNow",
"effectivePerson": 0
}
}
],
"cancelPolicy": {
"code": "AD100P_100P",
"description": "Non Refundable",
"cancelPenalties": [
{
"noShow": true,
"cancellable": true,
"cancelDeadline": {
"offsetTimeDropType": "BeforeArrival",
"offsetTimeUnit": "D",
"offsetTimeValue": 0,
"deadline": "string"
},
"penaltyCharge": {
"chargeBase": "FullStay",
"nights": 0,
"amount": 0,
"percent": 0
}
}
]
}
}
],
//addon start here
"bookingChannel": "string",
"productAddons": [
{
"type": "Disney Ticket",
"code": "code",
"date": "2018-01-01",
"quantity": 1,
"officeId": "string",
"rate": {
"ageQualifyingType": {
"type": "Adult",
"minAge": 18,
"maxAge": 99
},
"currency": "USD",
"amountBeforeTax": 123.23,
"amountAfterTax": 134.34
}
}
],
//addon end
"status": "Confirmed",
"cancellationId": "C89389494",
"result": "Successful",
"failCause": {
"errorCode": "string",
"supplierErrorCode": "string",
"errorMessage": "string"
}
}
]
}7. Product Addon APIs - 这是新增的 API,请参阅开发指南
8. ARI Push API - Pull 渠道可以跳过此步
注意事项: 对于Disney的对接, 请确保实现以下两个特性: ① FPLOS Restriction ② Extra Child Rate
请求示例:
{
"header": {
"supplierId": "HILTON",
"distributorId": "GTA",
"version": "v4",
"token": "18393849028490234"
},
"messageType": "Delta",
"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": {
// extra child 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 restriction
"fplos": [
"1111111",
"1001111",
"1000001",
"0000000"
]
},
"rateChangeIndicators": [
true,
false,
true,
false
]
}
]
}注意事项
GO 遵循数据透传原则即从酒店供应商获取餐食计划,然后提供给渠道。但当迪士尼未提供餐食计划时,GO 设置默认餐食代码 RO 并提供给渠道。以下为当前迪士尼的餐食计划列表。
| 餐食计划代码 | 描述 |
| QS | Disney Quick Service Dining Plan |
| DP | Disney Dining Plan |
| DPP | Disney Dining Plan Plus |
| XD | Disney Deluxe Dining Plan |
| QSM | Disney Quick Service Meal |
访问 Disney官网 获取更多信息。
此回答是否有所帮助? 是 否
Send feedback