**实现目标**
为实现西安机场成为国内最佳中转机场,西安机场中转服务平台支持业务部门的需求,本次需要完成空空中转旅客在西安机场的行李直挂、中转服务引导、代打登机牌、中转服务产品多渠道预订等功能
**功能说明**
1、行李免提
旅客在OTA平台上购买经西安机场的前后段中转航班时,提醒旅客西安机场可以提供行李免提功能,机票成交后将旅客的行程实时推送给机场中转服务平台完成行李免提的预约,航班到达西安机场后由机场地服人员将旅客的行李从前段到达的飞机上拉下来后,直接转运到旅客后段出发飞机上,旅客无需自己提取行李,最大化提升机场的中转服务能力和旅客中转的便捷出行
2、中转引导
旅客在OTA平台上购买经西安机场的前后段中转航班时,提醒旅客西安机场可以提供中转引导功能,前段航班起飞后机场中转服务平台通过app、短信、微信等渠道通知客户服务部,本航班上需要引导的所有旅客信息和联系方式,服务人员进行线下保障
2、代打登机牌
旅客在OTA平台上购买经西安机场的前后段中转航班时,提醒旅客西安机场可以提供代打登机牌功能,服务人员打完登机牌后以图片链接的方式发送给旅客,旅客不必再去打印登机牌。
## 1、第一阶段:出行前购票
1. 旅客在携程网上购买经西安机场中转的两段机票,携程网根据MCT
时间确定是否给旅客显示西安机场有行李直挂服务,旅客可以选择行李直挂的服务,也可以不选择
2. 旅客完成机票交易后,携程调用西安机场中转服务平台的行李直挂
订单处理接口,携程需要将以下信息传给机场的生成接口:创建订单、起降航班号、起降时间、起降航站楼、起降航司、前后段机场、旅客中英文姓名、证件、手机、性别、服务项(直挂),机场生成订单后同步将结果返回给携程,返回结果为已收到
3. 旅客在出行前如果进行了退票操作,携程需要调用西安机场中转服
务平台的行李直挂订单处理接口(同上一个接口),传递信息:退票订单、订单号,机场将预订的订单取消旅客在出行前如果进行了改签操作,携程需要调用西安机场中转服务平台的行李直挂订单处理接口(同上一个接口),传递信息:改签订单、订单号,机场将预订的订单取消,并重新生成新订单
4. 旅客在出行前如果进行了取消直挂请求,携程需要调用西安机场中
转服务平台的行李直挂订单处理接口(同上一个接口),传递信息:取消订单、订单号,机场将预订的订单取消
## 2、第二阶段:出行落地前
1. 旅客在前段机场办理值机和行李托运(如果有),并登机,航班已
起飞
2. 离港系统在前段航班起飞后将该航班上的所有中转旅客信息和行李
信息推送给西安机场中转服务平台
3. 中转服务平台收到信息后与携程发送的预订信息进行匹配,如果匹
配到并有行李托运,则取出行李编号等信息更新到预订订单记录中(有可能多个,因为一个人有多件行李)
4. 更新后中转服务平台调用西安机场行李保障平台接口,生成行李直
挂任务单,行李平台返回任务单生成完成,意思是中转平台告诉行李平台,旅客的行李已经在天上了,请做好卸机转运准备,行李平台回复知道了
5. 中转平台收到行李平台的回复后,马上调用携程的行李状态更新
接口,传递该旅客有行李,并且行李直挂已经申请成功
6. 携程收到消息后,更新状态并发短信给旅客,此时旅客的手机处于
关机状态,等飞机落地开机后才能收到,(携程是否要监听短信接收回执,如果飞机落地10分钟后还没有回执,可语音提醒旅客状态)
7. 数据异常处理:如果系统监测到离港系统给西安机场的中转旅客息、
行李信息、航班信息中断,运维人员需要马上通知中转坐席人员,在中
转服务平台管理端查询当天所有预约行李直挂的订单,并在航信中转系
统终端里查询这些人的行李信息(只能查前站已值机结束并且未落地的
航班),查询到后把行李信息补录到中转服务平台,平台会自动开始从
第4步执行,行李平台要非常准确的反馈是接收还是中断
## 3、第三阶段:航班落地后
1. 前段航班到达西安机场,预订过行李直挂的旅客打开手机会收到携
程发送的预订信息
2. 旅客下飞机后,未在携程购票的中转旅客也可以通过微信扫描廊桥
口的小程序码进行行李直挂的预约,已在携程预约会弱出订单信息,不能再下单
3. 地服进行行李卸机扫码,每扫一件行李和预约订单进行匹配,如果
是预约直挂的行李,进行线下行李中转保障,同时行李平台调用中转服务平台的状态更新接口,将订单改为转运中, 接口数据:订单编号、行李编号、行李状态
4. 中转服务平台收到状态后,更新订单状态,并调用携程状态回调接口
5. 携程收到消息,通知旅客开始转运,非携程订单由中转服务平台通
知旅客
6. 如果在转运中发现异常:如行李破损、超大超重等无法继续执行直
挂时, 行李保障平台要触发中断操作,并调用中转服务平台的状态更新接口,消息信息:状态、中断原因、联系方式,中转服务平台收到消息后,更新状态,并调用携程状态更新接口,携程收到消息后通知旅客处理
7. 地服进行行李装机扫码,每扫一件行李和预约订单进行匹配,如果
是预约直挂的行李,则行李平台调用中转服务平台的状态更新接口,将订单改为已装机,接口数据:订单编号、行李编号、行李状态
8. 中转服务平台收到状态后,更新订单状态,并调用携程状态回调接口
9. 携程收到消息,通知旅客已完成直挂,非携程订单由中转服务平台
通知旅客
10. 异常情况处理:如航班行李数据中断、前段航班延误、后段航班消
、行程终止等不确定因素导致无法执行行李直挂业务,需要中转坐席在中转服务平台进行中断操作,调用行李平台中断接口,行李平台返回后调用携程状态更新接口,携程通知旅客中断
**业务流程**
![](https://img.kancloud.cn/9e/a7/9ea7c4bc92edf564ee87345036af0285_1359x2175.png)
**接口描述**
中转服务平台对外提供西安机场行李免提订单预订和处理服务,可以用此接口生成订单也可以对已有订单进行修改
**接口地址**
https://ip/api/luggage/saveOrder
**请求参数**
| 字段 |类型 |描述|是否必须|备注|
| --- | --- |---|---|---|
|appCode |String |应用code|是|应用code,中转平台分配|
| timeStamp | String |时间戳|是|时间戳|
| sign | String |签名|是|按签名算法算出|
| runum | String |流水号|否|8位随机字符串|
| airportCode |String | 进港机场 | 是 | 中转机场三字码,如西安:XIY |
| goodsNo | String | 订单服务项编号 | 是 | 201,202,203 |
| goodsName | String | 订单服务项名称 | 是 | 行李免提,代办登机牌,中转引导 |
| orderId | String | 订单ID | 否 | 订单创建时无,其它必须有 |
| orderSource | String | 订单渠道 | 是 | 1:小程序 2:同程 3:携程 4其他 5 航班管家 6 华夏航空 10 航旅纵横 11 去哪儿 |
| orderType | String | 创建订单方式 | 是 | 1:现场申请 2:提前申请 |
| orderAction | int | 订单动作 | 是 | 1:创建行程 2:退票3:改签 4:旅客取消 |
| flightDate | String | 航班日期 | 是 | 前段航班进港日期,如2019-08-18 |
| flightInNo | String | 进港航班号 | 是 | 如MU2233 |
| flightInTime | datetime | 进港时间 | 是 | 如2019-08-18 21:57:22 |
| flightInTerminal | String | 进港航站楼 | 是 | 如T2 |
| flightInBrdNo | String | 进港航班登机口 | 否 | 如MU |
| flightInAirlinecode|String|进港航空公司代码|是|如MU|
|airportCodeSource|String|前段起飞机场三字码|是|如INC|
|flightOutNo|String|离港航班号|是|如MU2233|
|flightOutTime|datetime|离港时间|是|如2019-08-18 21:57:22|
|flightOutTerminal|String|离港航站楼|是|如T2|
|flightOutAirlinecode|String|离港航空公司代码|是|如MU|
|airportCodeDest|String|后段目的地机场三字码|是|如XNN|
|pssNamecn|String|旅客中文名称|是|旅客中文名,没有中文名则用英文名称|
|pssGender|String|旅客性别|否|F:女姓,M:男姓,U:不详|
|pssPhone|String|旅客手机号|是|AES128加密|
|pssCerttype|Integer|证件类型|是|1身份证,2护照,3军官证,4士兵证,5警官证,6台胞证,港澳通行证,7海员证,8学生证,9户口簿,10其他|
|pssCertno|String|证件号码|是|AES128加密|
|stayLength|Integer|停留时长|否|如75|
|luggageFreeAllowance|BigDecimal|行李免费限额|否|
|pssPnr|String|前段PNR号|否|
|pssPnrb|String|后段PNR号|否|
|remark1|String|保留字段1|否|携程id|
|remark2|String|保留字段2|否|备用|
|remark3|String|保留字段3|否|备用|
**新增订单**
请求报文
数据类型Content-Type: Params
```
appCode=""
timeStamp=""
sign=""
runum=""
```
数据类型Content-Type: application/json
```
{
"addDTO": {
"guide": "Y",
"goodsNo": "201",
"goodsName": "行李免提",
"flightInNo": "99999999",
"flightInTime": "2019-11-11 10:50:00",
"flightInTerminal": "T3",
"flightInBrdNo": "14",
"flightInAirlinecode": "MU",
"flightOutNo": "22222222",
"flightOutTime": "2019-11-11 11:45:00",
"flightOutTerminal": "T3",
"flightOutAirlinecode": "",
"pssName": "HON*",
"pssNamecn": "洪*",
"pssGender": "",
"pssPhone": "ZjiVe5ZtqEO1IbszcA5+dQ==",
"pssCerttype": "NI",
"pssCertno": "Nrg4dmtVwN5hRSk4bC89sZeNtyCEpk1DjQoE2n6MHeo",
"airportCodeSource": "NKG",
"airportCodeDest": "XNN",
"airportCode": "XIY",
"stayLength": 144,
"luggageFreeAllowance": 2,
"remark1": "123123",
"remark2": null,
"remark3": null,
"orderType": 2,
"orderSource": 3,
"orderAction": 1,
"pssPnr":"pnr"
}
}
```
响应参数
| 字段 | | 类型 |描述 |备注
| --- | --- | --- | --- |--- | --- |
| code | |int|返回状态|0 - 失败 1 - 成功|
| message| |String|错误说明|请求失败或者发生错误的具体描述
| timeStamp| |datetime|请求时间戳|请求时带的时间戳
| result| |Object||结果集|1:创建行程 2:退票3:改签 4:旅客取消
| | orderAction |int|订单动作|
| | goodsNo |String|订单服务项|
| | orderId |String|订单ID|
| | orderStatus|int|订单状态|
| | stopReason|String|中断原因默认为null|
响应格式
```
{
"success": true,
"message": "预约成功",
"code": 1,
"timestamp": 1571625089541,
"result": {
"goodsNo": "201",
"orderId": "656f290e101c4f598ad9bedd4eb148e0",
"orderStatus": 0,
"orderAction": 1,
"stopReason": null
}
}
```
**改签**
请求报文
数据类型Content-Type: Params
```
appCode=""
timeStamp=""
sign=""
runum=""
```
数据类型Content-Type: application/json
```
{
"addDTO": {
"airportCode": "XIY",
"goodsNo": "201",
"goodsName": "行李免提",
"orderId": "a7b7f2c7daa6499e91865a09f95f6ab1",
"orderSource": "3",
"orderType": "2",
"orderAction": "3",
"flightDate": "2020-07-02",
"flightInNo": "MU1122",
"flightInTime": "2020-07-02 14:35:00",
"flightInTerminal": "T3",
"flightInBrdNo": "43",
"flightInAirlinecode": "MU",
"airportCodeSource": "SHA",
"flightOutNo": "UQ1122",
"flightOutTime": "2020-07-03 14:35:00",
"flightOutTerminal": "T3",
"flightOutAirlinecode": "UQ",
"airportCodeDest": "URC"
}
}
```
响应参数
| 字段 | | 类型 |描述 |备注
| --- | --- | --- | --- |--- | --- |
| code | |String|返回状态|0 - 失败 1 - 成功|
| message| |String|错误说明|请求失败或者发生错误的具体描述
| timeStamp| |datetime|请求时间戳|请求时带的时间戳
| result| |Object||结果集|1:创建行程 2:退票3:改签 4:旅客取消
| | orderAction |int|订单动作|
| | goodsNo |String|订单服务项|
| | orderId |String|订单ID|
| | orderStatus|int|订单状态|
| | stopReason|String|中断原因默认为null|
响应格式
```
{
"success": true,
"message": "更新成功",
"code": 1,
"timestamp": 1571625089541,
"result": {
"goodsNo": "201",
"orderId": "656f290e101c4f598ad9bedd4eb148e0",
"orderStatus": 0,
"orderAction": 3,
"stopReason": null
}
}
```
**退票**
请求报文
数据类型Content-Type: Params
```
appCode=""
timeStamp=""
sign=""
runum=""
```
数据类型Content-Type: application/json
```
{
"addDTO": {
"orderId": "a7b7f2c7daa6499e91865a09f95f6ab1",
"goodsNo": "201",
"goodsName": "行李免提",
"airportCode": "XIY",
"orderType": 2,
"orderSource": 3,
"orderAction": 2
}
}
```
响应参数
| 字段 | | 类型 |描述 |备注
| --- | --- | --- | --- |--- | --- |
| code | |String|返回状态|0 - 失败 1 - 成功|
| message| |String|错误说明|请求失败或者发生错误的具体描述
| timeStamp| |datetime|请求时间戳|请求时带的时间戳
| result| |Object||结果集|1:创建行程 2:退票3:改签 4:旅客取消
| | orderAction |int|订单动作|
| | goodsNo |String|订单服务项|
| | orderId |String|订单ID|
| | orderStatus|int|订单状态|
| | stopReason|String|中断原因默认为null|
响应格式
```
{
"success": true,
"message": "退票成功",
"code": 1,
"timestamp": 1571625089541,
"result": {
"goodsNo": "201",
"orderId": "656f290e101c4f598ad9bedd4eb148e0",
"orderStatus": 0,
"orderAction": 2,
"stopReason": null
}
}
```