机票订单查询
- 接口(建议后缀):/order/flight/queryOrder
- Method:POST
- 数据格式:Json
- 调用方:每刻
- 接口说明:每刻将通过该接口,获取特定范围的机票订单数据
[warning] 对接前先看:
目前常见的参数组合(以下例子不包括必填参数)示例:
- 每日凌晨定时任务:startDate + endDate 拉取该时间范围内对应 externalCorpCode 企业的订单;
- 申请单申请人触发:externalApprovalNo 拉取指定申请单下预定的订单;
- 管理员或者预定人触发丢失订单的补充拉取:externalEmployeeCode + startDate + endDate 拉取指定员工;
- 第三方对接了第三方订单通知实时推送接口:orderId + operationId 直接拉取对应订单;
当订单进入每刻后,很快就会生成费用,甚至费用可能已经报销,原则上是不允许第三方订单进行修改(尤其是金额),如果这笔订单传的金额不正确,或者人为因素导致订单金额多了或者少了,可以采取 orderId 保持原单不变,生成一笔新的 operationId 订单,金额为该笔订单多了或少了的金额。
请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
externalCorpCode | String | Y | 企业在第三方的唯一标识 |
externalEmployeeCode | String | [1] | 下单人在第三方的唯一编码 |
externalApprovalNo | String | [1] | 申请单在第三方唯一编码 |
orderId | String | [1] | 订单号 |
operationId | String | [1] | 操作号 |
startDate | String | [2] | 开始日期(yyyy-MM-dd)[3] |
endDate | String | [2] | 结束日期(yyyy-MM-dd)[3] |
dateType | String | N | 参考时间(不传时等同 OPERATION) |
onlyApprovingOrder | bool | N | 限定只拉取审批中的订单(默认不传,不传按 false 处理) |
pageNo | int | Y | 第几页(从第1页开始) |
pageSize | int | Y | 每页容量(最大为 100) |
[info] 说明:
[1] 非必填参数,至少填写一个,可以填写多个,如果填写了多个,条件是叠加的,比如四个个字段都有值,externalCorpCode 企业、externalEmployeeCode 员工、approval 申请单和 orderId 订单对应的订单信息。
[2] 没有开始与结束日期,默认结束日期为请求日期;只有开始时间,表示从开始日期到调用日期的订单;只有结束日期,开始日期为结束日期的前一个月。
[3] 默认开始时间为00:00,默认结束时间为23:59。
参考时间
code | 定义 |
---|---|
ORDER | 订单时间(暂不支持) |
OPERATION | 操作时间 |
响应结构
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
success | bool | Y | 请求是否成功 |
errorMessage | String | N | 失败信息(当 success 为 false 时,失败信息为必填) |
data | List<FlightOrder> | Y | 订单详情列表 |
hasNextPage | bool | N | 是否有下一页 |
[warning] 关于请求分页如何结束:
hasNextPage = false 标志着分页结束,success 仅表示请求是否成功。
FlightOrder
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
orderId | String | Y | 订单在第三方的唯一编码 |
operationId | String | Y | 操作在第三方的唯一编码 |
originalOperationId | String | [4] | 关联原操作号 |
String | N | ||
String | N | ||
sourceAppCode | String | N | 实际供应商(TMC)原 originalAppCode 废弃,保留接收,但新对接 TMC 使用该字段 |
sourceOrderId | String | N | 实际供应商订单号 |
externalCorpCode | String | Y | 企业在第三方的唯一编码 |
externalEmployeeCode | String | Y | 预订人在第三方的唯一编码 |
externalEmployeeName | String | N | 预订人在第三方姓名 |
externalDepName | String | N | 预订人在第三方部门名称 |
externalApprovalNo | String | N | 申请单在第三方的唯一编码 |
status | String | Y | 订单状态 |
onBusiness | bool | N | 是否因公 |
isOnline | bool | N | 是否在线预订 |
orderAt | String | Y | 预订时间(yyyy-MM-dd HH:mm:ss) |
operationAt | String | N | 订单状态改变时间(yyyy-MM-dd HH:mm:ss) |
paidAt | String | Y | 支付时间(yyyy-MM-dd HH:mm:ss) |
payType | String | Y | 付款方式 |
totalFee | BigDecimal | Y | 订单总金额=企业支付(corpPayFee) + 个人支付(personalPayFee) |
corpPayFee | BigDecimal | Y | 订单企业支付部分金额 |
personalPayFee | BigDecimal | Y | 订单个人支付部分金额 |
changeFee | BigDecimal | N | 改签费,仅改签明细需要有值,=改签差价(changeDiffFee)+ 改签手续费(changeCommisionFee) |
changeDiffFee | BigDecimal | N | 改签差价,仅改签明细需要有值 |
changeCommisionFee | BigDecimal | N | 改签手续费,仅改签明细需要有值(航司收取) |
changeServiceFee | BigDecimal | N | 仅改签明细有值的改签服务费(TMC收取) |
refundFee | BigDecimal | N | 退票费,仅退票明细有值(航司收取) |
refundServiceFee | BigDecimal | N | 仅退票明细有值的退票服务费(TMC收取) |
serviceFee | BigDecimal | N | 仅预订有值的预订服务费(TMC收取) |
extraServiceFee | BigDecimal | N | 额外服务费(TMC收取) |
deliveryFee | BigDecimal | N | 快递费 |
insuranceFee | BigDecimal | N | 保险费 |
BigDecimal | N | ||
BigDecimal | N | ||
BigDecimal | N | ||
platformAgencyFee | BigDecimal | N | 平台服务费(平台收取的服务费,区别于实际供应商服务费) |
currency | String | Y | 货币类型(人民币为 CNY) |
incompatibleReason | String | N | 不符合申请单的原因 |
remark | String | N | 订单备注 |
approver | String | N | 授权人在第三方中的唯一标识 |
approver2 | String | N | 授权人在第三方中的唯一标识 |
settlementBatchNo | String | N | 结算批次号 |
ticketList | List<FlightTicket> | Y | 预订机票列表 |
useStatus | OrderUseStatus | N | (要传该字段请和每刻确认)订单使用状态 |
[info] 说明:
[4] 机票发生改签与退票操作才会关联原操作号,详细信息请阅读订单同步首页的描述。
订单状态
code | 定义 |
---|---|
O | 预订单(首次购票的订单) |
C | 改签单(首次改签/N次改签) |
R | 退票单 |
付款方式
code | 定义 |
---|---|
PERSONAL_PAY | 个人支付 |
CORP_ACCOUNT_PAY | 公司支付 |
MIX_PAY | 混合支付 |
FlightTicket
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
ticketNo | String | N | 机票号 |
originalTicketNo | String | [5] | 原票号 |
flightNo | String | N | 航班号 |
airlineName | String | N | 航空公司名称 |
airlineCode | String | N | 航空公司编码 |
aircraftType | String | N | 机型 |
departureTime | String | N | 出发时间(yyyy-MM-dd HH:mm:ss) [6] |
departureTimeZone | String | N | 出发时间时区([+/-]hhmm) |
arrivalTime | String | N | 降落时间(yyyy-MM-dd HH:mm:ss) [6] |
arrivalTimeZone | String | N | 降落时间时区([+/-]hhmm) |
flyDuration | String | N | 飞行时间(分钟) |
departureCity | City | Y | 出发城市 |
arrivalCity | City | Y | 到达城市 |
departurePort | String | N | 出发机场 |
arrivalPort | String | N | 降落机场 |
departurePortCode | String | N | 出发机场三字码 |
arrivalPortCode | String | N | 降落机场三字码 |
cabin | String | N | 舱位 |
ticketPrice | BigDecimal | N | 实际支付票价,改签明细值=改签差价(changeDiffFee),退票明细值=(预订支付票价+改签差价)的负值 |
standardTicketPrice | BigDecimal | N | 票本价 |
discount | int | N | 百分比折扣(范围0-100的整数,比如75%,此字段值为75) |
tmcServiceFee | BigDecimal | N | TMC 服务费 |
airlineServiceFee | BigDecimal | N | 航司服务费 |
insuranceFee | BigDecimal | N | 保险费 |
oilFee | BigDecimal | N | 燃油附加费,改签明细值=0,改签明细值=改签然后差价,不变传 0,退票明细值=原支付的燃油费的负值 |
taxFee | BigDecimal | N | 机建费,改签明细改签=0,退票明细值=原支付的机建费的负值 |
currency | String | N | 货币类型 |
internationalFlight | bool | N | 是否国际航班 |
printNo | String | N | 行程单号 |
client | Client | Y | 乘机人 |
[info] 说明:
[5] 当该机票所属订单为改签或退票订单,则该机票中需要填写原票号,表示被改签或被退票的原票号。
[6] 默认时间为本地时间。
舱位枚举
code | 定义 |
---|---|
S | 超级经济舱 |
Y | 经济舱 |
C | 商务舱 |
F | 头等舱 |
Client
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
externalEmployeeCode | String | [7] | 乘机人唯一标识 |
name | String | Y | 姓名 |
[info] 说明:
[7] 乘机人可能不是企业员工,如果填写了该字段,表示为企业员工,如果只有姓名,表示外部同行人。
数据示例
以下示例为仅企业支付:
- 原票:全价 2000,票价 1000,折扣 50%,TMC服务费 30,基建 50,保险 20
- 第一次改签:只做改期,未升舱,航司手续费 200,保险退保 20
- 第二次改签:改签并且升舱,票全价 2000,票价 1500,折扣 75%,航司手续费 300,航司升舱费 500,重新购买保险 50
- 退票:退票手续费 500,两次航司改签的手续费共 500 是不退的,TMC服务费 30 是不退的,即收取 1030,退原票 500,退基建 50,退第二次改签的航司升舱费 500,退第二次重新购买的保险 50
类型 | 原票 | 第一次改签 | 第二次改签 | 退票 | ||
---|---|---|---|---|---|---|
FlightOrder | 订单总金额 | totalFee | 1100 | 180 | 850 | -1100 |
订单企业支付金额 | corpPayFee | 1100 | 180 | 850 | -1100 | |
改签费 | changeFee | 0 | 200 | 800 | 0 | |
改签差价 | changeDiffFee | 0 | 0 | 500 | 0 | |
改签手续费 | changeCommisionFee | 0 | 200 | 300 | 0 | |
改签服务费 | changeServiceFee | 0 | 0 | 0 | 0 | |
退票费 | refundFee | 0 | 0 | 0 | 500 | |
退票服务费 | refundServiceFee | 0 | 0 | 0 | 0 | |
服务费 | serviceFee | 30 | 0 | 0 | 0 | |
保险费 | insuranceFee | 20 | -20 | 50 | -50 | |
FlightTicket | 实际支付票价 | ticketPrice | 1000 | 0 | 500 | -1500 |
票本价 | standardTicketPrice | 2000 | 2000 | 2000 | 2000 | |
百分比折扣 | discount | 50 | 50 | 75 | 75 | |
TMC 服务费 | tmcServiceFee | 30 | 0 | 0 | 0 | |
航司服务费 | airlineServiceFee | 0 | 0 | 0 | 0 | |
保险费 | insuranceFee | 20 | -20 | 50 | -50 | |
燃油附加费 | oilFee | 0 | 0 | 0 | 0 | |
基建费 | taxFee | 50 | 0 | 0 | -50 |
[warning] 重要:
所有金额字段如果表示的是需要客户(企业或者个人)付给第三方的,就是正值,反之,如果是第三方退回给客户的,则是负值。
示例
[warning] 重要:
示例维护并非和文档字段维护一样频繁,如果遇到示例和文档不一致,请以文档为准
请求头:
{
"tokenId": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJtYXljdXJfand0X2Rldl9pZCIsInN1YiI6IlBGMjAwNjIwMTI1NU5GTk8iLCJpYXQiOjE2MDQ2MzA5NjYsImF1ZCI6IlBMQVRGT1JNIiwiZXhwIjoxNjA0NjM0NTY2LCJwcm9kdWN0TGluZSI6IkRBVEFfSFVCIn0.AyNIwPtGUXxFMuHO8Bx-4XeXNyWYRcot40MfsL1swr4"
}
请求示例:
1.每日凌晨定时任务
{
"externalCorpCode": "0123456",
"startDate": "2024-06-12",
"endDate": "2024-06-19",
"pageNo": 1,
"pageSize": 50
}
2.申请单申请人触发
{
"externalCorpCode": "0123456",
"externalApprovalNo": "AE94527002203135xxx",
"pageNo": 1,
"pageSize": 50
}
3.管理员或者预定人触发丢失订单的补充拉取
{
"externalCorpCode": "0123456",
"externalEmployeeCode": "48edc82xxx",
"startDate": "2024-06-12",
"endDate": "2024-06-19",
"pageNo": 1,
"pageSize": 50
}
4.第三方对接了第三方订单通知实时推送接口
{
"externalCorpCode": "021343",
"orderId": "13406390267",
"operationId": "13406390267",
"pageNo": 1,
"pageSize": 50
}
响应示例:
{
"success": true,
"errorMessage": null,
"data": [
{
"orderId": "13406390267",
"operationId": "13406390267",
"originalOperationId": null,
"externalCorpCode": "0123456",
"externalEmployeeCode": "48edc82xxx",
"externalEmployeeName": "xxx",
"externalApprovalNo": "a00a7e3xxxx",
"status": "O",
"onBusiness": true,
"isOnline": true,
"orderAt": "2024-06-19 13:41:23",
"operationAt": "2024-06-19 13:41:24",
"payType": "CORP_ACCOUNT_PAY",
"totalFee": 1353.0,
"corpPayFee": 1353.0,
"personalPayFee": 0.0,
"changeFee": 0.0,
"changeDiffFee": 0.0,
"changeCommisionFee": 0.0,
"changeServiceFee": 0.0,
"refundFee": 0.0,
"refundServiceFee": 0.0,
"serviceFee": 13.0,
"extraServiceFee": 0.0,
"deliveryFee": 0.0,
"insuranceFee": 0.0,
"taxFee": 100.0,
"deductibleTaxFee": 0.0,
"nonDeductibleTaxFee": 0.0,
"currency": "CNY",
"incompatibleReason": null,
"remark": "",
"approver": null,
"approver2": null,
"settlementBatchNo": null,
"ticketList": [
{
"ticketNo": "8918812xxx",
"originalTicketNo": "",
"flightNo": "GJ8871",
"airlineName": "长龙航空",
"airlineCode": "GJ",
"aircraftType": "空客 320 (中型)",
"departureTime": "2024-06-22 08:50:00",
"departureTimeZone": "+8:00",
"arrivalTime": "2024-06-22 14:50:00",
"arrivalTimeZone": "+8:00",
"flyDuration": "360",
"departureCity": {
"code": "CT530100",
"name": "昆明",
"adminDivCode": null
},
"arrivalCity": {
"code": "CT220100",
"name": "长春",
"adminDivCode": null
},
"departurePort": "长水国际机场",
"arrivalPort": "龙嘉国际机场",
"departurePortCode": "KMG",
"arrivalPortCode": "CGQ",
"cabin": "Y",
"ticketPrice": 1240.0,
"discount": 35,
"tmcServiceFee": 13.0,
"airlineServiceFee": 0.0,
"insuranceFee": 0.0,
"oilFee": 50.0,
"taxFee": 50.0,
"currency": "CNY",
"internationalFlight": false,
"printNo": null,
"client": {
"externalEmployeeCode": "48edc82xxx",
"name": "xxx"
}
}
],
"paidAt": "2024-06-19 13:41:23"
}
],
"hasNextPage": false
}