火车票订单查询

  • 接口(建议后缀):/order/train/queryOrder
  • Method:POST
  • 数据格式:Json
  • 调用方:每刻
  • 接口说明:每刻将通过该接口,获取特定范围的火车票订单数据

[warning] 对接前先看:
目前常见的参数组合(以下例子不包括必填参数)示例

  1. 每日凌晨定时任务:startDate + endDate 拉取该时间范围内对应 externalCorpCode 企业的订单;
  2. 申请单申请人触发:externalApprovalNo 拉取指定申请单下预定的订单;
  3. 管理员或者预定人触发丢失订单的补充拉取:externalEmployeeCode + startDate + endDate 拉取指定员工;
  4. 第三方对接了第三方订单通知实时推送接口: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<TrainOrder> Y 订单详情列表
hasNextPage bool N 是否有下一页

[warning] 关于请求分页如何结束:
hasNextPage = false 标志着分页结束,success 仅表示请求是否成功。

TrainOrder

字段 类型 必填 描述
orderId String Y 订单在第三方的唯一编码
operationId String Y 操作在第三方的唯一编码
originalOperationId String [4] 关联原操作号
originalAppCode String N 实际供应商(TMC)
originalAppName 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 改签费,仅改签明细需要有值,=改签差价+ 改签手续费(12306收取)
changeServiceFee BigDecimal N 仅改签明细有值的改签服务费(TMC收取)
refundFee BigDecimal N 退票费,仅退票明细有值(12306收取)
refundServiceFee BigDecimal N 仅退票明细有值的退票服务费(TMC收取)
serviceFee BigDecimal N 仅预订有值的预订服务费(TMC收取)
extraServiceFee BigDecimal N 额外服务费
taxFee BigDecimal N 税费,已废弃
deductibleTaxFee BigDecimal N 可抵扣税,已废弃
nonDeductibleTaxFee BigDecimal N 非可抵扣税,已废弃
platformAgencyFee BigDecimal N 平台服务费(平台收取的服务费,区别于实际供应商服务费)
currency String Y 货币类型(人民币为 CNY)
incompatibleReason String N 不符合申请单的原因
remark String N 订单备注
approver String N 授权人在第三方中的唯一标识
approver2 String N 授权人在第三方中的唯一标识
ticketList List<TrainTicket> Y 预订火车票列表
settlementBatchNo String N 结算批次号
useStatus OrderUseStatus N (要传该字段请和每刻确认)订单使用状态

[info] 说明:
[4]火车票发生改签与退票操作才会关联原订单号或原操作号,详细信息请阅读订单同步首页的描述。

订单状态

code 定义
O 预订单(首次购票的订单)
C 改签单(首次改签/N次改签)
R 退票单

付款方式

code 定义
PERSONAL_PAY 个人支付
CORP_ACCOUNT_PAY 公司支付
MIX_PAY 混合支付

TrainTicket

字段 类型 必填 描述
trainNo String Y 车次号
departureTime String Y 出发时间(yyyy-MM-dd HH:mm:ss)
arrivalTime String Y 到达时间(yyyy-MM-dd HH:mm:ss)
tripDuration String N 行程时间(分钟)
departureCity City Y 出发城市
arrivalCity City Y 到达城市
departureStation String Y 出发车站
arrivalStation String Y 到达车站
seat String Y 座位
ticketPrice BigDecimal Y 实际支付票价,改签明细值=改签票差价(changeDiffFee),退票明细值=(预订支付票价+改签费)的负值
tmcServiceFee BigDecimal Y TMC 服务费
insuranceFee BigDecimal Y 保险费
client Client Y 乘车人

座位定义

code 定义
SECOND_CLASS 二等座
FIRST_CLASS 一等座
BUSINESS_CLASS 商务座
PREMIER_CLASS 特等座
SLEEPER 动卧
DELUXE_SLEEPER 高级软卧
SOFT_SLEEPER 软卧
HARD_SLEEPER 硬卧
FIRST_SLEEPER 一等卧
SECOND_SLEEPER 二等卧
SOFT_BOX 一人软包
SOFT_SEAT 软座
HARD_SEAT 硬座
NO_SEAT 无座

Client

字段 类型 必填 描述
externalEmployeeCode String [5] 乘车人唯一标识
name String Y 姓名
identityType String N 乘车人证件类型
identityCode String N 乘车人证件号

[info] 说明:
[5] 乘车人可能不是企业员工,如果填写了该字段,表示为企业员工,如果只有姓名,表示外部同行人。


数据示例

以下示例仅企业支付:

  • 原票:全价 1000,票价 1000,TMC服务费 30,保险 20
  • 第一次改签:只做改期,未升舱,并退掉了保险,改签手续费 0
  • 第二次改签:改签并且升级座等,改签费(改签临期手续费 30 + 票差价 470) 500,并重新买了一份 20 的保险
  • 退票:退票手续费 100,TMC服务费 30 是不退的
类型 原订单 第一次改签 第二次改签 退票
TrainOrder 订单总金额 totalFee 1050 -20 520 -1390
企业支付金额 corpPayFee 1050 -20 520 -1390
改签费 changeFee 0 0 500 0
改签服务费 changeServiceFee 0 0 0 0
退票费 refundFee 0 0 0 100
服务费 serviceFee 30 0 0 0
保险费 insuranceFee 20 -20 20 -20
TrainTicket 票价 ticketPrice 1000 0 470 -1470
TMC 服务费 tmcServiceFee 30 0 0 0
保险费 insuranceFee 20 -20 20 -20

示例

[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-18 15:43:11",
      "operationAt": "2024-06-18 15:45:09",
      "payType": "CORP_ACCOUNT_PAY",
      "totalFee": 48.00,
      "corpPayFee": 48.00,
      "personalPayFee": 0.0,
      "changeFee": 0.0,
      "changeServiceFee": 0.0,
      "refundFee": 0.0,
      "refundServiceFee": 0.0,
      "serviceFee": 6.00,
      "extraServiceFee": 0.0,
      "taxFee": 0.0,
      "deductibleTaxFee": 0.0,
      "nonDeductibleTaxFee": 0.0,
      "currency": "CNY",
      "incompatibleReason": "",
      "remark": "",
      "approver": null,
      "approver2": null,
      "ticketList": [
        {
          "trainNo": "G7139",
          "departureTime": "2024-06-18 16:44:00",
          "arrivalTime": "2024-06-18 17:18:00",
          "tripDuration": "34",
          "departureCity": {
            "code": "CT320500",
            "name": "苏州"
          },
          "arrivalCity": {
            "code": "CT310000",
            "name": "上海"
          },
          "departureStation": "苏州",
          "arrivalStation": "上海虹桥",
          "seat": "SECOND_CLASS",
          "ticketPrice": 42.00,
          "tmcServiceFee": 6.0,
          "insuranceFee": 0.0,
          "client": {
            "externalEmployeeCode": "48edc82xxx",
            "name": "xxx",
            "identityType": "身份证",
            "identityCode": "xxxxxxxxxxxxxxxxxx"
          }
        }
      ],
      "paidAt": "2024-06-18 15:45:09"
    }
  ],
  "hasNextPage": false
}

results matching ""

    No results matching ""