**實現目標**
為實現西安機場成為國內最佳中轉機場,西安機場中轉服務平臺支持業務部門的需求,本次需要完成空空中轉旅客在西安機場的行李直掛、中轉服務引導、代打登機牌、中轉服務產品多渠道預訂等功能
**功能說明**
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://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
}
}
```