# 火车票标准接入接口文档

# 总体说明

接口采用http协议,utf-8编码

header添加参数(回调时需传回):

  • swimlane="泳道信息xxx",举例:swimlane=selftest-250318-193537-470
  • INF_CELL="灰度信息xxx",举例:INF_CELL=gray-release-tmc-testing

http接口返回通用参数

success值 code值 msg值
true 0 处理或操作成功
false 非0 失败信息

加解密处理:

所有请求体:

名称 类型 是否必填 示例 说明
partnerAccessKey String 美团企业版分配给供应商的接入密钥
content String UgxoCGPQIzoP 请求体内容,将请求参数JSON序列化后进行加密的结果值

文档参考:待定

密钥信息:

// test环境
partnerCode 100304
partnerAccessKey BGUHF23XZHFN-TK
partnerSecretKey T6l+GZomC2/CJCaVDf9ytw==
环境 回调域名
线上 https://bep-openapi.meituan.com
线下 https://waimai-openapi.apigw.test.meituan.com

# 1.1 占座下单/锁单

# 1.1.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/holdseat POST json http://xxxxxx.com为合作商可访问域名

# 1.1.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
bookingOrderParamList List 下单入参,支持单程
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

BookingOrderParam参数说明:

参数名 是否必传 参数类型 参数说明
orderId String 美团的订单号
isChooseNoSeats Boolean 是否出无座票 true:不出无座票 false:允许出无座票
isChooseSeats Boolean 是否选座
chooseSeats String 选座的坐席1A1B1C2A2B
passengerList List 乘客信息
mobilePhone String 联系人手机号
orderAmount Integer 订单价格,单位分
trainInfo TrainInfo 车次信息

TrainInfo参数说明:

参数名 是否必传 参数类型 参数说明
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss

# 1.1.3 业务输出参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
status Integer 处理结果status
message String 处理结果message
data T 接口返回实际数据

# 1.2 申请出票

# 1.2.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/trainOrder POST json http://xxxxxx.com为合作商可访问域名

# 1.2.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
payOrderParamList List 出票入参,支持单程、中转
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

PayOrderParam参数说明:

参数名 是否必传 参数类型 参数说明
orderId String 美团的订单号
payEndTime String 出票截止时间,格式2020-02-19 20:25:00

# 1.2.3 业务输出参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
status String 处理结果status
message String 处理结果message
data T 接口返回实际数据

# 1.3 改签下单

# 1.3.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/resignTicket POST json http://xxxxxx.com为合作商可访问域名

# 1.3.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
orderId String 美团订单号
orderId12306 String 12306订单号
isChooseNoSeat Boolean 是否接受无座 true:不出无座票 false:允许出无座票
serviceId long 改签id,回调时候传回来
ticketList List 改签车票信息
trainInfo TrainInfo 车次信息
orderAmount Integer 改签订单价格,单位分
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

TrainInfo参数说明:

参数名 是否必传 参数类型 参数说明
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss

Ticket参数说明:

参数名 是否必传 参数类型 参数说明
certificateNo String 证件号码
certificateType String 证件类型,对应附录
passengerId String 乘客id,回调时候传回来
passengerName String 乘客姓名
ticketPrice Integer 预估车票单价,单位:分
seatType String 坐席类型,对应附录【坐席类型枚举】中文
acceptSeats String //坐席选项 示例:["硬卧下","硬卧中","硬卧上"]
acceptSeatRemark String //行程坐席要求 示例:"优先出【同排ACF座】,无法满足可出任意座位,不接受站票"
ticketType String 车票类型,对应附录【车票类型枚举】中文
mobilePhone String 手机号
email String 邮箱

# 1.3.3 业务输出参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
status String 处理结果status
message String 处理结果message
data T 接口返回实际数据

# 1.4 改签出票

# 1.4.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/confirmResign POST json http://xxxxxx.com为合作商可访问域名

# 1.4.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
serviceId String 美团改签id
orderId String 美团订单号
payEndTime String 出票截止时间,格式2020-02-19 20:25:00
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

# 1.4.3 业务输出参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
status String 处理结果status
message String 处理结果message
data T 接口返回实际数据

# 1.5 订单取消

# 1.5.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/cancelHoldSeat POST json http://xxxxxx.com为合作商可访问域名

# 1.5.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
orderId String 美团订单id
cancelEndTime String 取消截止时间,格式2020-02-19 20:25:00
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

# 1.5.3 业务输出参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
status String 处理结果status
message String 处理结果message
data T 接口返回实际数据

# 1.6 取消改签申请

# 1.6.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/cancelResign POST json http://xxxxxx.com为合作商可访问域名

# 1.6.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
serviceId String 美团改签id
orderId String 美团订单号
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

# 1.6.3 业务输出参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
status String 处理结果status
message String 处理结果message
data T 接口返回实际数据

# 1.7 改签申请异步回调

# 1.7.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/resignTicketCallback POST json http://xxxxxx.com为合作商可访问域名

# 1.7.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
serviceId String 美团改签id
orderId String 美团订单号
status String 改签状态
message String 改签结果信息
data T 改签返回实际数据

# 1.8 占座/锁单异步回调

# 1.8.1 接口说明

url method 参数类型 说明
http://xxxxxx.com/RestfulService/holdSeatCallback POST json http://xxxxxx.com为合作商可访问域名

# 1.8.2 业务输入参数

# (1) 参数说明

参数名 是否必传 参数类型 参数说明
orderId String 美团订单号
status String 占座状态
message String 占座结果信息
data T 占座返回实际数据

# 1.9 改签占座异步回调

# 1.9.1 接口说明

uri method 参数类型 说明
/api/sqt/open/train/supply/receive-notice POST json

# 1.9.2 业务输入参数

参数名 是否必传 参数类型 参数说明
ts long 请求时间戳
partnerCode Integer 美团给供应商分配的code
noticeBizType Integer 固定传40
orderId String 美团订单id
orderId12306 String 12306订单号
serviceId String 美团改签id
changeType Integer 改签类型,0 未改签,1:低改高2:平改3:高改低(非真实占座无)
realHoldSeat Boolean 是否真实占座
noticeSuccess Boolean 占座是否成功
failCode String 占座失败必传,参考【改签失败枚举】(枚举为失败原因分类,failMsg可填详细失败原因)
failMsg String 失败详细原因
changeTotalServiceFee Integer 改签总手续费,改签手续费+改签差额退手续费,单位:分(非真实占座无)
changeServiceFee Integer 改签手续费,单位:分(非真实占座无)
changeRefundFee Integer 改签差额退款手续费,单位:分(非真实占座无)
changeTrainInfo TrainInfo 改签后车次信息
changeTicketInfoList List 改签后车票list

TrainInfo参数说明:

参数名 是否必传 参数类型 参数说明
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss
ticketEntrance String 检票口

TicketInfo参数说明:

参数名 是否必传 参数类型 参数说明
certificateNo String 证件号码
certificateType String 证件类型,对应附录
passengerId String 乘客id
passengerName String 乘客姓名
ticketPrice Integer 车票单价,单位:分
coachNo String 车票车厢号,格式02车厢
seatNo String 坐席号
seatType String 坐席类型,对应附录【坐席类型枚举】中文
ticketNo String 12306长票号,对应唯一乘客
ticketType String 车票类型,对应附录【车票类型枚举】中文
changeServiceFee Integer 改签手续费,单位:分
changeRefundFee Integer 改签差额退款手续费,单位:分

# 1.9.3 业务输出参数

参数名 是否必传 参数类型 参数说明
data Data 具体结果
status Integer 处理结果code
msg String 处理结果msg

Data参数说明:

参数名 是否必传 参数类型 参数说明
success boolean 是否处理成功

# 1.10 出票结果回调

# 1.10.1 接口说明

uri method 参数类型 说明
/api/sqt/open/train/supply/receive-notice POST json

# 1.10.2 业务输入参数

参数名 是否必传 参数类型 参数说明
ts long 请求时间戳
partnerCode Integer 美团给供应商分配的code
noticeBizType Integer 固定传30
orderId String 美团订单号
partnerOrderId String 供应商订单号
noticeSuccess boolean 订票是否成功
orderId12306 String 12306订单号
failCode String 占座失败必传,参考【出票/占座失败枚举】(枚举为失败原因分类,failMsg可填详细失败原因)
failMsg String 失败详细原因
orderAmount Integer 订单总金额,单位:分
trainInfo TrainInfo 车次信息
ticketInfoList List 格式同下单一致,内容为实际出票的数据

TrainInfo参数说明:

参数名 是否必传 参数类型 参数说明
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss
ticketEntrance String 检票口

TicketInfo参数说明:

参数名 是否必传 参数类型 参数说明
certificateNo String 证件号码
certificateType String 证件类型,对应附录
passengerId String 乘客id
passengerName String 乘客姓名
ticketPrice Integer 车票单价,单位:分
coachNo String 车票车厢号,格式02车厢
seatNo String 坐席号
seatType String 坐席类型,对应附录【坐席类型枚举】中文
ticketNo String 12306长票号,对应唯一乘客
ticketType String 车票类型,对应附录【车票类型枚举】中文

# 1.10.3 业务输出参数

参数名 是否必传 参数类型 参数说明
data Data 具体结果
status Integer 处理结果code
msg String 处理结果msg

Data参数说明:

参数名 是否必传 参数类型 参数说明
success boolean 是否处理成功

# 1.11 改签确认回调

# 1.11.1 接口说明

method 参数类型 说明
/api/sqt/open/train/supply/receive-notice POST json

# 1.11.2 业务输入参数

参数名 是否必传 参数类型 参数说明
ts long 请求时间戳
partnerCode Integer 美团给供应商分配的code
noticeBizType Integer 固定传60
orderId String 美团订单id
orderId12306 String 12306订单号
serviceId String 美团改签id
changeType Integer 改签类型,0 未改签,1:低改高2:平改3:高改低
noticeSuccess Boolean 改签确认是否成功
failCode String 占座失败必传,参考【改签失败枚举】(枚举为失败原因分类,failMsg可填详细失败原因)
failMsg String 失败详细原因
changeTotalServiceFee Integer 改签总手续费,改签手续费+改签差额退手续费,单位:分
changeServiceFee Integer 改签手续费,单位:分
changeRefundFee Integer 改签差额退款手续费,单位:分
changeTrainInfo TrainInfo 改签后车次信息
changeTicketInfoList List 改签后车票list

TrainInfo参数说明:

参数名 是否必传 参数类型 参数说明
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss
ticketEntrance String 检票口

TicketInfo参数说明:

参数名 是否必传 参数类型 参数说明
certificateNo String 证件号码
certificateType String 证件类型,对应附录
passengerId String 乘客id
passengerName String 乘客姓名
ticketPrice Integer 车票单价,单位:分
coachNo String 车票车厢号,格式02车厢
seatNo String 坐席号
seatType String 坐席类型,对应附录【坐席类型枚举】中文
ticketNo String 12306长票号,对应唯一乘客
ticketType String 车票类型,对应附录【车票类型枚举】中文
changeServiceFee Integer 改签手续费,单位:分
changeRefundFee Integer 改签差额退款手续费,单位:分

# 1.11.3 业务输出参数

参数名 是否必传 参数类型 参数说明
data Data 具体结果
status Integer 处理结果code
msg String 处理结果msg

Data参数说明:

参数名 是否必传 参数类型 参数说明
success boolean 是否处理成功

# 1.12 退票结果回调

# 1.12.1 接口说明

uri method 参数类型 说明
/api/sqt/open/train/supply/receive-notice POST json

# 1.12.2 业务输入参数

参数名 是否必传 参数类型 参数说明
ts long 请求时间戳
partnerCode Integer 美团给供应商分配的code
noticeBizType Integer 固定传70
orderId String 美团订单id
orderId12306 String 12306订单号
serviceId String 退票服务单id
needRefund Boolean 是否需要退款
refundTotalPrice Integer 退票退款总金额,单位:分
noticeSuccess Boolean 退票是否成功
printReceipt Integer 是否已经打印报销凭证 0没有打印 1打印,应对新的变化
offlineReturnDate String 报销凭证返回最晚日期,格式2020-02-23,应对新的变化
failCode String 占座失败必传,参考【退票失败枚举】(枚举为失败原因分类,failMsg可填详细失败原因)
failMsg String 失败详细原因
ticketInfoList List 退票信息列表

TrainInfo参数说明:

参数名 是否必传 参数类型 参数说明
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss
ticketEntrance String 检票口

TicketInfo参数说明:

参数名 是否必传 参数类型 参数说明
certificateNo String 证件号码
certificateType String 证件类型,对应附录
passengerId String 乘客id
passengerName String 乘客姓名
ticketPrice Integer 车票单价,单位:分
coachNo String 车票车厢号,格式02车厢
seatNo String 坐席号
seatType String 坐席类型,对应附录【坐席类型枚举】中文
ticketNo String 12306长票号,对应唯一乘客
ticketType String 车票类型,对应附录【车票类型枚举】中文
refundPrice Integer 退票金额,单位:分
refundServiceFee Integer 退票手续费,单位:分

# 1.12.3 业务输出参数

参数名 是否必传 参数类型 参数说明
data Data 具体结果
status Integer 处理结果code
msg String 处理结果msg

Data参数说明:

参数名 是否必传 参数类型 参数说明
success boolean 是否处理成功

# 1.13 线下退款通知

# 1.13.1 接口说明

uri method 参数类型 说明
/api/sqt/open/train/supply/receive-notice POST json

# 1.13.2 业务输入参数

参数名 是否必传 类型 描述
ts long 请求时间戳
partnerCode Integer 美团给供应商分配的code
noticeBizType Integer 固定传80
orderId String 美团订单id
orderId12306 String 12306订单号
serviceId String 服务单id(唯一标识)
totalAmount Integer 退款总金额
offlineRefundDetailList List 线下退具体详情

OfflineRefundDetail参数说明:

参数名 是否必传 类型 描述
certificateNo String 证件号码
certificateType String 证件类型,对应附录
passengerId String 乘客id
passengerName String 乘客姓名
ticketNo String 12306长票号,对应唯一乘客
amount Integer 退款金额,单位:分
refundType Integer 0:线下退票退款,1:线下改签退款
changeTicketInfo TrainChangeTicketInfo 如果是线下改签,改签后的车次及票信息

TrainChangeTicketInfo参数说明:

参数名 是否必传 类型 描述
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss
ticketEntrance String 检票口
seatType String 坐席类型,对应附录【坐席类型枚举】中文
coachNo String 车票车厢号,格式02车厢
seatNo String 座位号
price Integer 票价,单位:分
changeTicketFee Integer 改签差额退票手续费
time String 改签时间,格式:yyyy-MM-dd HH:mm:ss

# 1.13.3 业务输出参数

参数名 是否必传 参数类型 参数说明
data Data 具体结果
status Integer 处理结果code
msg String 处理结果msg

Data参数说明:

参数名 是否必传 参数类型 参数说明
success boolean 是否处理成功

# 1.14 下单占座取消通知

# 1.14.1 接口说明

uri method 参数类型 说明
/api/sqt/open/train/supply/receive-notice POST json

# 1.14.2 业务输入参数

参数名 是否必传 类型 描述
ts long 请求时间戳
partnerCode Integer 美团给供应商分配的code
noticeBizType Integer 固定传20
orderId String 美团订单id
orderId12306 String 12306订单号
partnerOrderId String 供应商订单号
noticeSuccess Boolean 是否取消成功
failCode String 占座失败必传,参考【出票/占座失败枚举】(枚举为失败原因分类,failMsg可填详细失败原因)
failMsg String 失败详细原因

# 1.14.3 业务输出参数

参数名 是否必传 参数类型 参数说明
data Data 具体结果
status Integer 处理结果code
msg String 处理结果msg

Data参数说明:

参数名 是否必传 参数类型 参数说明
success boolean 是否处理成功

# 1.15 改签取消通知

# 1.15.1 接口说明

uri method 参数类型 说明
/api/sqt/open/train/supply/receive-notice POST json partnerId是代理商code

# 1.15.2 业务输入参数

参数名 是否必传 类型 描述
ts long 请求时间戳
partnerCode Integer 美团给供应商分配的code
noticeBizType Integer 固定传50
orderId String 美团订单id
serviceId String 改签服务单id
orderId12306 String 12306订单号
partnerOrderId String 供应商订单号
noticeSuccess Boolean 是否取消成功
failCode String 占座失败必传,参考【改签失败枚举】(枚举为失败原因分类,failMsg可填详细失败原因)
failMsg String 失败详细原因

# 1.15.3 业务输出参数

参数名 是否必传 参数类型 参数说明
data Data 具体结果
status Integer 处理结果code
msg String 处理结果msg

Data参数说明:

参数名 是否必传 参数类型 参数说明
success boolean 是否处理成功

# 1.16 检票口查询

# 1.16.1 接口说明

url uri method 参数类型 说明
http://agentgateway-train.meituan.com/{partnerId}/ticketGateQuery xxx/ticketGateQuery POST json

# 1.16.2 业务输入参数

参数名 是否必传 类型 描述
fromStationName String 发站
trainCode String 车次号
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

# 1.16.3 业务输出参数

名称 是否必传 类型 描述
status Integer 0:成功,非0:失败
msg String 查询失败原因
data QueryCheckInData 查询结果

QueryCheckInData参数说明:

名称 类型 必填 描述
result Integer Y 查询状态 (查询成功/查询失败)
ticketGate String Y 检票口

# 1.17 订单详情查询

# 1.17.1 接口说明

url uri method 参数类型 说明
http://agentgateway-train.meituan.com/{partnerId}/orderDetailQuery xxx/orderDetailQuery POST json

# 1.17.2 业务输入参数

参数名 是否必传 类型 描述
orderId String 美团订单号
ts Long 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 示例:1617085650321

# 1.17.3 业务输出参数

名称 是否必传 类型 描述
status Integer 0:成功,非0:失败
msg String 查询失败原因
data TrainOrderDetailDTO 查询结果

TrainOrderDetailDTO参数说明:

参数名 是否必传 类型 描述
orderId String 美团订单号
partnerId String 供应商id
partnerOrderId String 供应商订单号
orderStatus Integer 订单状态 2 待出票 3 出票成功 4 出票失败 5 已取消 8 待占座 9 占座成功 10 占座失败
orderId12306 String 12306订单号(取票号)
contactName String 联系人
contactPhone String 联系电话
outTicketTime String 出票时间,格式:yyyy-MM-dd HH:mm:ss
createTime String 订单创建时间,格式:yyyy-MM-dd HH:mm:ss
trainOrderTravelList List 车次,票等详细信息

OrderTravel参数说明:

参数名 是否必传 类型 描述
trainInfo TrainInfoDTO 车次信息
ticketInfoList List 具体出票退改相关信息

TrainInfoDTO参数说明:

参数名 是否必传 参数类型 参数说明
trainCode String 车次号
fromStationCode String 出发站三字码
fromStationName String 出发站名称
toStationCode String 到达站三字码
toStationName String 到达站名称
startTime String 出发时间,格式:yyyy-MM-dd HH:mm:ss
arriveTime String 到达时间,格式:yyyy-MM-dd HH:mm:ss
ticketEntrance String 检票口

TrainTicketAllInfoDTO参数说明:

参数名 是否必传 参数类型 参数说明
certificateNo String 证件号码
certificateType String 证件类型,对应附录
passengerId String 乘客id
passengerName String 乘客姓名
ticketPrice Integer 车票单价,单位:分
coachNo String 车票车厢号,格式02车厢
seatNo String 坐席号
seatType String 坐席类型,对应附录【坐席类型枚举】中文
ticketNo String 12306长票号,对应唯一乘客
ticketType String 车票类型,对应附录【车票类型枚举】中文
changeType String 改签类型
beforeChangeTicketNo String 改签前票号
changeServiceFee Integer 改签手续费,单位:分
changeRefundFee Integer 改签差额退款手续费,单位:分
refundPrice Integer 退票金额,单位:分
refundServiceFee Integer 退票手续费,单位:分
statusCode String 状态

# 附录

# 证件类型枚举(代理商侧港澳台居民居住证和身份证code都是1)

public enum PassengerIdTypeEnum {
    IDCARD("二代身份证", "1"),
    HK_LAISSEZ_PASSER("港澳居民来往内地通行证", "C"),
    TAIWAN_LAISSEZ_PASSER("台湾居民来往大陆通行证", "G"),
    PASSPORT("护照", "B"),
    HK_LAISSEZ_TAIWAN_CARD("港澳台居民居住证", "1"),
    FOREIGNER_ID_CARD("外国人永久居留身份证", "H"),
    ;

    private String name;
    private String code;//证件类型code

    PassengerIdTypeEnum(String name, String code) {
        this.name = name;
        this.code = code;
    }
}

# 坐席类型枚举

public enum SeatTypeEnum {
    YZ("硬座", "1", "1"),
    YWS("硬卧上", "2", "3"),
    YWZ("硬卧中", "3", "3"),
    YWX("硬卧下", "4", "3"),
    RZ("软座", "5", "2"),
    RWS("软卧上", "6", "4"),
    RWZ("软卧中", "7", "4"),
    RWX("软卧下", "8", "4"),
    SWZ("商务座", "9", "9"),
    DGNZ("多功能座", "10", "Q"),
    EDBZ("二等包座", "11", "S"),
    TDZ("特等座", "12", "P"),
    YDZ("一等座", "13", "M"),
    EDZ("二等座", "14", "O"),
    GJRW("高级软卧", "42", "6"),
    GJRWS("高级软卧上", "15", "6"),
    GJRWX("高级软卧下", "16", "6"),
    WZ("无座", "17", "W"),
    YRRB("一人软包", "18", "H"),
    ERRB("二人软包", "19", "H"),
    DW("动卧", "20", "F"),
    GJDR("高级动卧", "21", "A"),
    BXYW("包厢硬卧", "22", "5"),
    YW("硬卧", "23", "3"),
    RW("软卧", "24", "4"),
    YDRZ("一等软座", "25", "7"),
    EDRZ("二等软座", "26", "8"),
    TDRZ("特等软座", "27", "E"),
    BXYWS("包厢硬卧上", "28", "5"),
    BXYWZ("包厢硬卧中", "29", "5"),
    BXYWX("包厢硬卧下", "30", "5"),
    BXRZ("包厢软座", "31", "D"),
    YDW("一等卧", "32", "I"),
    EDW("二等卧", "33", "J"),
    HBYZ("混编硬座", "34", "B"),
    HBRZ("混编软座", "35", "K"),
    YDWS("一等卧上", "36", "I"),
    YDWZ("一等卧中", "37", "I"),
    YDWX("一等卧下", "38", "I"),
    EDWS("二等卧上", "39", "J"),
    EDWZ("二等卧中", "40", "J"),
    EDWX("二等卧下", "41", "J"),
    DWS("动卧上","43","F"),
    DWX("动卧下","44","F"),
    GJDRS("高级动卧上","45","A"),
    GJDRX("高级动卧下","46","A"),
    YWDYZ("硬卧代硬座","47", "1"),
    YWDEDZ("卧代二等座", "48", "O"),
    RWDRZ("软卧代软座", "49", "2"),
    WDYDZ("卧代一等座", "50", "M"),
    HBYWDYZ("硬卧代硬座", "51", "B"),
    UNKNOW("未知", "99", "-1");

    private static Map<String, SeatTypeEnum> nameMap;
    private static Map<String, SeatTypeEnum> codeMap;
    private static Map<String, SeatTypeEnum> highPriceMap;

    private String seatName;
    private String seatCode;//这个字段是坐席类型code
    private String seatCode12306;

    private SeatTypeEnum(String seatName, String seatCode, String seatCode12306) {
        this.seatName = seatName;
        this.seatCode = seatCode;
        this.seatCode12306 = seatCode12306;
    }
}

# 车票类型枚举

public enum TicketTypeEnum {
    ADULT_TICKET("成人票", "1"),
    STUDENT_TICKET("学生票", "3"),
    CHILD_TICKET("儿童票", "2");

    private String name;
    private String code;//这个字段是车票类型code字段

    private TicketTypeEnum(String name, String code) {
        this.name = name;
        this.code = code;
    }
}

# 出票/占座失败枚举

public enum TrainOrderTicketFailEnum {
    // ========== 乘车人原因 ==========
    /** 存在冲突行程 */
    PASSENGER_CONFLICT_TRIP(10001, "存在冲突行程"),
    /** 证件信息有误 */
    PASSENGER_ID_INFO_ERROR(10002, "证件信息有误"),
    /** 限制高消费 */
    PASSENGER_HIGH_CONSUMPTION_LIMIT(10003, "限制高消费"),
    /** 不可进京 */
    PASSENGER_BEIJING_RESTRICTED(10004, "不可进京"),

    // ========== 车次原因 ==========
    /** 车次暂未起售 */
    TRAIN_NOT_ON_SALE(10101, "车次暂未起售"),
    /** 车次已停售 */
    TRAIN_SALE_STOPPED(10102, "车次已停售"),
    /** 所选新车次已停运 */
    TRAIN_SUSPENDED(10103, "所选新车次已停运"),
    /** 出/到站已封站 */
    STATION_CLOSED(10104, "出/到站已封站"),
    /** 无票或余票不足 */
    NO_TICKET_OR_INSUFFICIENT(10105, "无票或余票不足"),
    /** 车次不存在 */
    TRAIN_NOT_EXIST(10106, "车次不存在"),

    // ========== 供应商角度原因 ==========
    /** 紧急单,来不及处理 */
    SUPPLIER_URGENT_ORDER(10201, "紧急单,来不及处理"),
    /** 票机故障或车站临检,暂时无法处理 */
    SUPPLIER_EQUIPMENT_FAULT(10202, "票机故障或车站临检,暂时无法处理"),
    /** 乘车人姓名与票机默认不一致 */
    SUPPLIER_NAME_MISMATCH(10203, "乘车人姓名与票机默认不一致"),
    /** 价格不符 */
    SUPPLIER_PRICE_MISMATCH(10204, "价格不符"),
    /** 客户要求取消 */
    SUPPLIER_CUSTOMER_CANCEL(10205, "客户要求取消"),

    // ========== 12306原因 ==========
    /** 12306系统升级中 */
    SYSTEM_12306_UPGRADING(10301, "12306系统升级中"),
    /** 12306存在待支付订单 */
    SYSTEM_12306_PENDING_ORDER(10302, "12306存在待支付订单"),

    // ========== 其他原因 ==========
    /** 系统繁忙 */
    SYSTEM_BUSY(10401, "系统繁忙"),
    /** 其他原因 */
    OTHER_REASON(10402, "其他");

    private final int code;
    private final String message;

    TrainOrderTicketFailEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 根据错误码获取枚举
     *
     * @param code 错误码
     * @return 对应的枚举值,未找到则返回null
     */
    public static TrainOrderTicketFailEnum getByCode(int code) {
        for (TrainOrderTicketFailEnum failEnum : values()) {
            if (failEnum.getCode() == code) {
                return failEnum;
            }
        }
        return null;
    }
}

# 改签失败枚举

public enum TrainRescheduleFailEnum {
    // ========== 乘车人原因 ==========
    /** 存在冲突行程 */
    PASSENGER_CONFLICT_TRIP(20001, "存在冲突行程"),
    /** 限制高消费 */
    PASSENGER_HIGH_CONSUMPTION_LIMIT(20002, "限制高消费"),
    /** 不可进京 */
    PASSENGER_BEIJING_RESTRICTED(20003, "不可进京"),

    // ========== 新车次原因 ==========
    /** 车次暂未起售 */
    NEW_TRAIN_NOT_ON_SALE(20101, "车次暂未起售"),
    /** 车次已停售 */
    NEW_TRAIN_SALE_STOPPED(20102, "车次已停售"),
    /** 所选新车次已停运 */
    NEW_TRAIN_SUSPENDED(20103, "所选新车次已停运"),
    /** 出/到站已封站 */
    NEW_TRAIN_STATION_CLOSED(20104, "出/到站已封站"),
    /** 无票或余票不足 */
    NEW_TRAIN_NO_TICKET_OR_INSUFFICIENT(20105, "无票或余票不足"),

    // ========== 原车次/票原因(改签特有) ==========
    /** 车次具有原退含义,无法改签 */
    ORIGINAL_TRAIN_REFUND_MEANING(20201, "车次具有原退含义,无法改签"),
    /** 变更到站需不晚于原票开车前48小时办理 */
    ORIGINAL_TRAIN_48H_LIMIT(20202, "变更到站需不晚于原票开车前48小时办理"),
    /** 已过改签时间,无法改签 */
    ORIGINAL_TRAIN_RESCHEDULE_TIME_EXPIRED(20203, "已过改签时间,无法改签"),
    /** 已取票,无法改签 */
    ORIGINAL_TRAIN_TICKET_COLLECTED(20204, "已取票,无法改签"),
    /** 已改签,无法重复改签 */
    ORIGINAL_TRAIN_ALREADY_RESCHEDULED(20205, "已改签,无法重复改签"),
    /** 已退票,无法改签 */
    ORIGINAL_TRAIN_ALREADY_REFUNDED(20206, "已退票,无法改签"),
    /** 已在改签中无法改签 */
    ORIGINAL_TRAIN_RESCHEDULING_IN_PROGRESS(20207, "已在改签中无法改签"),
    /** 无法办理推迟乘车日期的改签(发车前48h以内改签) */
    ORIGINAL_TRAIN_DELAY_RESCHEDULE_LIMIT(20208, "无法办理推迟乘车日期的改签(发车前48h以内改签)"),
    /** 原票信息(车次、车厢、座位、证件、票价)不符 */
    ORIGINAL_TRAIN_INFO_MISMATCH(20209, "原票信息(车次、车厢、座位、证件、票价)不符"),
    /** 跨境车票无法代改 */
    ORIGINAL_TRAIN_CROSS_BORDER(20210, "跨境车票无法代改"),
    /** 此类车票无法批量改签 */
    ORIGINAL_TRAIN_NO_BATCH_RESCHEDULE(20211, "此类车票无法批量改签"),
    /** 查无信息,可能已退票或改签 */
    ORIGINAL_TRAIN_NO_INFO_FOUND(20212, "查无信息,可能已退票或改签"),

    // ========== 供应商角度原因 ==========
    /** 紧急单,来不及处理 */
    SUPPLIER_URGENT_ORDER(20301, "紧急单,来不及处理"),
    /** 票机故障或车站临检,暂时无法处理 */
    SUPPLIER_EQUIPMENT_FAULT(20302, "票机故障或车站临检,暂时无法处理"),
    /** 乘车人姓名与票机默认不一致 */
    SUPPLIER_NAME_MISMATCH(20303, "乘车人姓名与票机默认不一致"),
    /** 价格不符 */
    SUPPLIER_PRICE_MISMATCH(20304, "价格不符"),
    /** 客户要求取消 */
    SUPPLIER_CUSTOMER_CANCEL(20305, "客户要求取消"),

    // ========== 12306原因 ==========
    /** 12306系统升级中 */
    SYSTEM_12306_UPGRADING(20401, "12306系统升级中"),
    /** 12306存在待支付订单 */
    SYSTEM_12306_PENDING_ORDER(20402, "12306存在待支付订单"),

    // ========== 其他原因 ==========
    /** 系统繁忙 */
    SYSTEM_BUSY(20501, "系统繁忙"),
    /** 其他原因 */
    OTHER_REASON(20502, "其他");

    private final int code;
    private final String message;

    TrainRescheduleFailEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 根据错误码获取枚举
     *
     * @param code 错误码
     * @return 对应的枚举值,未找到则返回null
     */
    public static TrainRescheduleFailEnum getByCode(int code) {
        for (TrainRescheduleFailEnum failEnum : values()) {
            if (failEnum.getCode() == code) {
                return failEnum;
            }
        }
        return null;
    }
}

# 退票失败枚举

public enum TrainRefundFailEnum {
    // ========== 乘车人原因 ==========
    /** 存在冲突行程 */
    PASSENGER_CONFLICT_TRIP(30001, "存在冲突行程"),
    /** 限制高消费 */
    PASSENGER_HIGH_CONSUMPTION_LIMIT(30002, "限制高消费"),
    /** 不可进京 */
    PASSENGER_BEIJING_RESTRICTED(30003, "不可进京"),

    // ========== 原车次/票原因(退票特有) ==========
    /** 已过退票时间,无法退票 */
    ORIGINAL_TRAIN_REFUND_TIME_EXPIRED(30101, "已过退票时间,无法退票"),
    /** 已取票,无法退票 */
    ORIGINAL_TRAIN_TICKET_COLLECTED(30102, "已取票,无法退票"),
    /** 已改签,无法退票 */
    ORIGINAL_TRAIN_ALREADY_RESCHEDULED(30103, "已改签,无法退票"),
    /** 已退票,无法重复退票 */
    ORIGINAL_TRAIN_ALREADY_REFUNDED(30104, "已退票,无法重复退票"),
    /** 车次停运,无法代退票 */
    ORIGINAL_TRAIN_SUSPENDED_NO_REFUND(30105, "车次停运,无法代退票"),
    /** 车次晚点,无法代退票 */
    ORIGINAL_TRAIN_DELAYED_NO_REFUND(30106, "车次晚点,无法代退票"),
    /** 原票信息(车次、车厢、座位、证件、票价)不符 */
    ORIGINAL_TRAIN_INFO_MISMATCH(30107, "原票信息(车次、车厢、座位、证件、票价)不符"),
    /** 跨境车票无法代退 */
    ORIGINAL_TRAIN_CROSS_BORDER(30108, "跨境车票无法代退"),
    /** 查无信息,可能已退票或改签 */
    ORIGINAL_TRAIN_NO_INFO_FOUND(30109, "查无信息,可能已退票或改签"),

    // ========== 供应商角度原因 ==========
    /** 紧急单,来不及处理 */
    SUPPLIER_URGENT_ORDER(30201, "紧急单,来不及处理"),
    /** 票机故障或车站临检,暂时无法处理 */
    SUPPLIER_EQUIPMENT_FAULT(30202, "票机故障或车站临检,暂时无法处理"),
    /** 乘车人姓名与票机默认不一致 */
    SUPPLIER_NAME_MISMATCH(30203, "乘车人姓名与票机默认不一致"),
    /** 价格不符 */
    SUPPLIER_PRICE_MISMATCH(30204, "价格不符"),
    /** 客户要求取消 */
    SUPPLIER_CUSTOMER_CANCEL(30205, "客户要求取消"),

    // ========== 12306原因 ==========
    /** 12306系统升级中 */
    SYSTEM_12306_UPGRADING(30301, "12306系统升级中"),
    /** 12306存在待支付订单 */
    SYSTEM_12306_PENDING_ORDER(30302, "12306存在待支付订单"),

    // ========== 其他原因 ==========
    /** 系统繁忙 */
    SYSTEM_BUSY(30401, "系统繁忙"),
    /** 其他原因 */
    OTHER_REASON(30402, "其他");

    private final int code;
    private final String message;

    TrainRefundFailEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 根据错误码获取枚举
     *
     * @param code 错误码
     * @return 对应的枚举值,未找到则返回null
     */
    public static TrainRefundFailEnum getByCode(int code) {
        for (TrainRefundFailEnum failEnum : values()) {
            if (failEnum.getCode() == code) {
                return failEnum;
            }
        }
        return null;
    }
}

上次更新: 7/16/2025, 10:09:52 AM