买家支付后,通过订阅接受tmc消息taobao_train_TradeNotify(TMC消息相关资料)获取到订单,然后通过订单详情接口获取订单信息,必须对接待出票列表接口,防止tmc消息丢失后无法查询到待出票信息,获取订单信息后
消息名称:taobao_train_TradeNotify
{
"time_stamp":1592219975110,
"user_id":2994085846,
"main_biz_order_id":1063056341145084658,
"extra":"10", ---10:线下票类型
"description":"book-xxx",
"msg_type":"1",
"sub_biz_order_id":0
}
含义 |
字段名 |
类型 |
备注 |
退票类型 |
offline_refund_type |
Integer |
10:跑腿退 非必传 |
用户id |
user_id |
Long |
|
主订单号 |
main_biz_order_id |
Long |
|
备用字段 |
extra |
||
退票的申请id |
apply_id |
Long |
|
简介 |
description |
String |
|
消息类型 |
msg_type |
String |
6:线下票 |
子订单号 |
sub_biz_order_id |
Long |
|
消息时间 |
time_stamp |
Date |
含义 |
字段名 |
类型 |
备注 |
主订单号 |
main_biz_order_id |
Long |
|
退票类型 |
offline_refund_type |
Integer |
30:本人退 非必传 |
备用字段 |
extra |
{"alipay_trade_no":"支付流水号","refund_fee":"退款金额(以分为单位)"} |
|
退票的申请id |
apply_id |
Long |
|
消息类型 |
msg_type |
String |
9:本人退款成功消息 |
子订单号 |
sub_biz_order_id |
Long |
|
消息时间 |
time_stamp |
Date |
含义 |
字段名 |
类型 |
备注 |
主订单号 |
main_biz_order_id |
Long |
3125510139995105101 |
备用字段 |
extra |
{"changeApplyId":520744121553,"ttpId":520744121553,"tpId":3125510139995105101,"changeIssueTimeout":"2022-12-30 12:37:45"} |
|
退票的申请id |
apply_id |
Long |
520744121553 |
消息类型 |
msg_type |
String |
101:跑腿改签消息 |
子订单号 |
sub_biz_order_id |
Long |
0 |
消息时间 |
time_stamp |
Date |
{
"train_agent_order_get_vtwo_response":{
"ttp_order_id":1234,
"is_success":true,
"main_order_id":123456,
"tickets":{
"to_agent_ticket_info":[
{
"student_info":{
},
"sub_order_id":"123456",
"from_station":"北京",
"from_time":"2013-08-08 08:08:00",
"to_station":"上海",
"seat":1,
"train_num":"G101",
"passenger_name":"亚里士多德",
"certificate_num":"123456",
"certificate_type":"0",
"insurance_price":1000,
"ticket_price":10000,
"birthday":"2013-08-08",
"to_time":"2013-08-08 08:08:00",
"tag":1,
"insurance_unit_price":1000,
"passenger_type":0,
"segment_index":1,
"nationality":"澳大利亚",
"nationality_code":"AU",
"valid_until":"2022-11-07",
"gender":"1",
"telephone":"13811111111",
"real_ticket_price":
"support_no_seat":fase --是否支持无座
}
]
},
"total_price":50000,
"telephone":"12345678900",
"mailing":false,
"address":"",
"relation_name":"姓名",
"company_name":"淘宝网",
"order_status":1,
"latest_issue_time":"2000-01-01 00:00:00",
"order_type":0,
"paper_type":1,
"paper_backup":0,
"paper_low_seat_count":1,
"transport_name":"张三",
"transport_phone":"18098890900",
"transport_address":"地址",
"transport_price":2000,
"service_price":2000,
"extend_params":"备用",
"online_book_seat":"用户在线选座的值",
"interchange_station":"中转站",
"is_multi_trip":"是否为连程",
"need_receipt":false, ---是否需要开发票 true:是 false:否
"accept_no_vip_custom":0, ---是否接受非定制票 1:是 0:否
"vip_custom_min_seat_count":1, ---至少接受定制票数量,
"vip_custom_type":1 ---定制票类型 0:不指定坐席 1:下铺 2:下铺or中铺 3:过道 4:靠窗
"vip_custom_list":{ --优先级大于定制类型,兼容之前的vip_custom_type、vip_custom_min_seat_count、accept_no_vip_custom 这里的信息,可以只使用此list
"vip_custom_result_item":[{
"custom_type":"carriage",//定制车厢
"count":1,//辅营份数,多少人选定制数字为几
"carriage_custom":{
"string":[
"07",
"08",
"09"
]
},//定制车厢号
"accept_no_vip_custom":1//是否接受非定制,0不接受,1接受
"segment_index":1//联程订单定制序号,1一程,2二程
},
{
"custom_type":"adjacencySeat",//定制连坐
"count":1,//辅营份数,多少人选定制数字为几
"accept_no_vip_custom":1//是否接受非定制,0不接受,1接受
"segment_index":1//联程订单定制序号,1一程,2二程
},
{
"custom_type":"onlineBooking",//在线选座
"count":4,//辅营份数
"carriage_custom":{
"string":[
]
},//定制车厢号
"seat_custom":"1A1B2C2D#2A2B2C2D",//在线选座信息
"accept_no_vip_custom":1//是否接受非定制,0不接受,1接受
"segment_index":2//联程订单定制序号,1一程,2二程
}]}
}
}
含义 |
标识 |
取值 |
现金/电子结算标识 |
vip_settlement_mode |
CASH:现金结算; ELECTRONIC:电子结算 |
是否接受非定制票 |
accept_no_vip_custom |
1:是 0:否 |
至少接受定制票数量 |
vip_custom_min_seat_count |
|
定制票类型 |
vip_custom_type |
0:不指定坐席 1:下铺 2:下铺or中铺 3:过道 4:靠窗 |
is_multi_trip |
是否中转订单 |
0:非中转;1:中转 |
segment_index(乘车人结构:to_agent_ticket_info) |
第几程 |
1:第一程;2:第二程 |
account_audit_flag |
平台账单审计订单 |
0:非平台审计订单;1:平台审计订单 |
urgent_ticket |
商家紧急票 |
0:非紧急票;1:紧急票 |
custom_type |
定制类型 |
取值: ONLINE_BOOKING("onlineBooking", "在线选座"), VIP_TICKET_WINDOW_SEAT("vipTicketWindowSeat", "选靠窗"), VIP_TICKET_CORRIDOR_SEAT("vipTicketCorridorSeat", "选过道"), VIP_TICKET_LOWER_BERTH("vipTicketLowerBerth", "选下铺"), VIP_TICKET_MIDDLE_LOWER_BERTH("vipTicketMiddleLowerBerth", "选中下铺"), VIP_TICKET_MIDDLE_BERTH("vipTicketMiddleBerth", "选中铺"), VIP_TICKET_UPPER_BERTH("vipTicketUpperBerth", "选上铺"), CARRIAGE("carriage", "选车厢"), NEAR_THE_DOOR("nearTheDoor", "靠车门"), ADJACENCY_SEAT("adjacencySeat", "选连坐"), SAME_ROOM("sameRoom", "选择同房间") |
是否免费线下 |
thomasToOfflineFree 在extendParams |
0:不是 ;1:是 |
一单多人的情况:
如果一单多人,多人中只有一部分人定制了坐席,则剩余的用户应优先保证跟定制了坐席的用户座位相近(比如硬座高铁邻座、卧铺同包厢);若用户可接受其它坐席,则出票时应优先保证能按照用户定制的需求出票,在无法保证或只能部分满足的情况,则应尽量保证同一单的用户座位相近。
{
"order_type":10,
"agent_id":1231231321312312321,
"main_order_id":2139262129924275458,
"boarding_gates":"3",
"from_station_name":"平凉",
"dep_date":"2021-10-07 13:10:00",
"extend_params":"{\"alipay_trade_no\":\"2021092822001198371452872199\",\"is_fliggy_multi_trip\":false,\"paper_low_passage_count\":0,\"need_receipt\":false,\"orderIdOn12306\":\"\",\"vip_settlement_mode\":\"CASH\"}",
"can_change":false,
"ticket_12306_id":"EDW333",
"ticket_num":1,
"tickets":[
"4984170046;100;1;硬座_1车_2号;6074;小张;0;1231231231231;0;0"
],
"alipay_trade_no":"商家电子票支付流水",
"arrive_date":"2021-10-07 13:25:00",
"ticket_info_list":[
{
"passenger_name":"小张",
"cert_type":0,
"ttp_sub_order_id":4984170046,
"seat_num":"硬座_1车_2号",
"ticket_no":"EDW333",
"vip_custom_result":1,
"vip_custom_result_list":[{
"custom_type":"carriage",//定制车厢
},{
"custom_type":"vipTicketCorridorSeat",//定制过道
}]
"insurance_pay_price":0,
"real_seat":1,
"train_no":"6074",
"certificate_num":"1231231231231",
"real_ticket_price":100
}
],
"alipay_account":"商家电子票支付账号",
"to_station_name":"平凉南",
"fail_msg":"0",
"status":true
}
含义 |
标识 |
取值 |
现金/电子结算标识 |
vip_settlement_mode |
CASH:现金结算; ELECTRONIC:电子结算 |
签约代扣的商家流水 |
alipayTradeNo |
20210826221312318371420668123 |
签约代扣的商家账号 |
alipayAccount |
XXXXX@xxx.com |
12306订单号 |
ticketNO_12306 |
E111111111 |
errorCode |
errorMsg(用户侧表达) |
商家侧文案 |
0 |
未知原因出票失败,请联系商家确认 |
其他 |
1 |
票已售完,出票失败全额退款 |
票已售完 |
2 |
票价变动出票失败,请选择其他车次 |
实际票价高于用户支付金额 |
11 |
被限制高消费出票失败,请选择请选择经济低价坐席 |
乘客被限制高消费 |
13 |
行程冲突出票失败,请将原票退改后重新购票 |
乘车人行程冲突 |
16 |
您的12306账号有未支付订单,请取消后再购此票 |
乘客存在未支付订单,无法出票 |
20 |
车次停运出票失败,请选择其他车次 |
车次已停运 |
25 |
您的证件未通过铁路局核验出票失败,请前往火车站办理 |
乘客身份信息未通过核验 |
27 |
无法满足您的定制需求出票失败 |
无法满足乘客定制需求 |
28 |
您主动要求取消 |
客人要求取消订单 |
45 |
按照新型冠状病毒肺炎疫情防控工作要求,您暂不可购票进京 |
按照新型冠状病毒肺炎疫情防控工作要求,乘客暂不可购票进京 |
49 |
当前订单存在乘车人未完成手机号码(或电子邮箱)填报核验,请您至12306官网或app,按系统提示填报乘车人联系方式,并通知其协助核验,核验通过后,方可购票 |
当前订单存在乘车人未完成联系方式核验 |
300 |
该订单中存在多名证件号重复的成人票乘客,请核查证件号之后重新提交 |
同一订单多名乘客证件号重复(非成人和儿童) |
301 |
订单中乘客姓名与铁路局默认姓名不一致,请核实姓名后重新提交 |
提交姓名与票机默认不一致 |
401 |
无下铺有中上铺可选,建议选择其他坐席 |
无下铺有中上铺可选,建议选择其他坐席 |
402 |
无中下铺有上铺可选,建议选择其他坐席 |
无中下铺有上铺可选,建议选择其他坐席 |
403 |
无靠窗票,请选择其他坐席 |
无靠窗票,请选择其他坐席 |
404 |
无靠过道票,请选择其他坐席 |
无靠过道票,请选择其他坐 |
999999 |
系统异常,请您稍后重试 |
票机卡/网络故障等临时因素 |
含义 |
标识 |
取值 |
拒绝退票原因 |
refuse_return_reason |
见退票失败原因code码 回传code |
errorCode |
errorMsg(用户侧表达) |
商家侧文案 |
2 |
已过发车时间 |
已过发车时间 |
4012 |
已取报销凭证,不支持退票 |
已取报销凭证,不支持退票 |
4013 |
该车票已改签不可退票 |
该车票已改签不可退票 |
4014 |
该车票改签处理中不可退票 |
该车票改签处理中不可退票 |
4015 |
该车票已变更到站不可退票 |
该车票已变更到站不可退票 |
4016 |
该车票变更到站处理中不可退票 |
该车票变更到站处理中不可退票 |
5001 |
因该票已退过无需再次提交,票款会在1-7个工作日原路退回,请及时查收 |
该票已退票成功,不可重复退票 |
5002 |
因铁路系统异常,暂无法为您办理退票。为保证您的个人权益,建议去车站窗口办理或稍后重试 |
其它 |
5003 |
您主动要求取消订单,无法退票 | 用户要求取消退票 |
{
"train_agent_untreatedchange_query_vtwo_response": {
"request_id": "x2deg4el5c1e",
"untreated_change_apply_ids": "520744121553,520744129999,52033221553,52078889999",
"untreated_change_order_num": 4
}
}
{
"change_to_station": "北京北",
"alipay_trade_no": "1111111111111111",
"ttp_order_id": 43333222111,
"agent_id": 222333444,
"change_to_date_time": "2023-01-01 12:00:00",
"change_from_date_time": "2023-01-01 12:00:00",
"issue_fail_code": 8,
"issue_status": 1,
"change_settlement_mode": 1,
"change_tickets": [
{
"change_seat_type_code": "o",
"e_ticket_no": "e1212121212122",
"change_fee": 100,
"change_seat_type_name": "二等座",
"change_ticket_price": "1000",
"sub_order_id": 5342332323,
"handing_fee": 100,
"change_seat_no": "001",
"change_coach_no": "01",
"ticket_type_name": "成人票",
"ticket_type_code": "1",
"change_coach_name": "01",
"change_apply_id": 53232323234
}
],
"alipay_account": "123@alipay.com",
"tp_order_id": 43333222111,
"change_train_date": "20230101",
"change_apply_id": 53333111,
"change_train_code": "G1",
"change_from_station": "北京",
"sequence_no": "E1W123456"
}
{
"train_agent_changeorderdetail_query_vtwo_response": {
"change_apply_order": {
"agent_id": 222333444,
"change_apply_id": 520744121553,
"change_from_date_time": "2023-01-05 12:00:00",
"change_from_station": "重庆西",
"change_from_station_code": "CXW",
"change_issue_timeout": "2023-01-05 12:00:00",
"change_ticket_type": 0,
"change_to_date_time": "2023-01-05 12:00:00",
"change_to_station": "成都东",
"change_to_station_code": "ICW",
"change_train_code": "G102",
"change_train_date": "20230105",
"change_type": 0,
"original_from_date_time": "2023-01-05 12:00:00",
"original_from_station": "重庆西",
"original_from_station_code": "CXW",
"original_sequence_no": "EJ123456789",
"original_to_date_time": "2023-01-05 12:00:00",
"original_to_station": "成都东",
"original_to_station_code": "ICW",
"original_train_code": "G101",
"original_train_date": "20230105",
"settlement_mode": 1,
"status": 0,
"ticket_price_all": 100,
"ticket_total_num": 2,
"tp_id": 1779715812572607883,
"ttp_id": 4812850813378
},
"change_apply_sub_orders": {
"change_apply_sub_order_d_t_o": [
{
"agent_id": 333444555,
"certificate_no": "11012312345678001",
"certificate_type_code": "二代身份证",
"certificate_type_name": "1",
"original_coach_name": "01",
"original_coach_no": "01",
"original_seat_no": "003A",
"original_seat_type_code": "o",
"original_seat_type_name": "二等座",
"original_ticket_price": "400",
"passenger_name": "张三",
"sub_order_id": 330744121553,
"ticket_type_code": 1,
"ticket_type_name": "成人票"
},
{
"agent_id": 333444555,
"certificate_no": "11012312345678002",
"certificate_type_code": "二代身份证",
"certificate_type_name": "1",
"original_coach_name": "01",
"original_coach_no": "01",
"original_seat_no": "003B",
"original_seat_type_code": "o",
"original_seat_type_name": "二等座",
"original_ticket_price": "400",
"passenger_name": "李四",
"sub_order_id": 33074499993,
"ticket_type_code": 1,
"ticket_type_name": "成人票"
}
]
},
"request_id": "x2dehcls6f8s"
}
}
failCode |
对应失败原因 |
1 |
余票不足、票已售完、没有足够票、停止售票等; |
2 |
原票已取报销凭证无法线上改签、原票已打印发票无法线上改签等; |
3 |
原票已退票无法改签; |
18 |
原票已改签不可再次改签; |
14 |
行程冲突; |
12 |
限制高消费; |
44 |
乘车人存在未支付的车票,请先支付完成后再继续购票; |
4 |
乘车人证件信息未通过路局核验; |
59 |
按照新型冠状病毒肺炎疫情防控工作要求,您暂不可购票进京等; |
501 |
主动取消改签 |
502 |
车票已使用进站已检 |
6 |
其他原因(不在上述原因里),先映射这个code,后续进行补充; |