;
首页 接口文档 线下火车票

线下火车票

免账号预订,无需注册和登录12306账号。支持24小时出票,支持定制需求购票,支持特殊人群(如外籍等)购票

http://接口域名/trainOffline/createOrder
json
post

线下票免(12306)账号购票下单接口。

重要说明:

遇到卧铺传下铺价格、儿童票传成人票的价格,,,平台先按照最高票价预收,如果最终实际出票金额低于预收金额,平台将自动退差。

下单成功后请及时支付,新订单30分钟未支付订单将自动取消。


请商户严格按照该预订流程对接,不然会存在:无效订单占比过高(即:只下单不支付的单子),接口账户被系统自动封禁的风险。

下单流程图.png


请求参数:

参数名称 类型 必填 说明
appKey string 您申请的APPKEY
customerOrderNo string 采购商的订单号
contactName string 订单联系人姓名
contactMobile string 订单联系人手机号
callBackUrl string 出票结果回调地址(出票成功/失败时,将通过此地址回调给采购商,回调详见:订单状态推送通知说明)
refundTicketCallbackUrl string 退票结果回调地址(退票成功/失败时,将通过此地址回调给采购商,回调详见:订单状态推送通知说明)
refundMoneyCallbackUrl string 退款回调地址(退款时,将通过此地址回调给采购商,回调详见:订单状态推送通知说明)
trainSegments TrainSegment[] 行程信息,支持联程(单程时该数组长度就是1,联程是就是2)
trainCode string 车次号
fromStation string 出发站
toStation string 到达站
fromDateTime string 出发日期及时间,精确到分钟,格式:yyyy-MM-dd HH:mm,如:2025-01-15 06:02
toDateTime string 到达日期及时间,精确到分钟,格式:yyyy-MM-dd HH:mm,如:2025-01-15 06:02
isAcceptStanding bool 是否接受无座,默认不接收
passengers Passenger[] 乘客信息
name string 乘客姓名
cardType int 证件类型( 身份证 = 1,护照 = 2, 港澳居民来往内地通行证 = 3 , 台湾居民来往大陆通行证 = 4 ,外国人永久居留身份证 = 8 ,港澳台居民居住证 = 9 )
cardNo string 证件号码
mobile string 手机号
ticketType int 火车票票种( 成人票 = 1,儿童票 = 2, 学生票 = 3, 残军票 = 4)
seatType int 席别类型(商务座 = 1,特等座 = 2,一等座 = 3,二等座 = 4,高级软卧 = 5,软卧 = 6,动卧 = 7 ,硬卧 = 8,软座 = 9,硬座 = 10,一等卧 = 11,二等卧 = 12,高级动卧 = 13, 一等软座 = 14 , 二等软座 = 15, 特等软座 = 16, 包厢硬卧 = 17, 一人软包 = 18, 多功能座 = 19, 无座 =98,其他 = 99)
preTicketPrice decimal 预收票价( 卧铺时传最高的下铺票价,儿童/学生/参军票时传成人票价 )

返回参数:

参数名称 类型 说明
success bool 下单结果(非出票结果),true:下单成功,false下单失败
msg string 下单失败时,失败原因
data object 业务参数(success为true时才有值,false时为null)
orderNo string 订单号
totalPreTicketPriceAmount decimal 订单中所有乘客的预收票价(下单请求参数中preTicketPrice字段)之和(余额支付时,将按照此金额收取。如果最终实际总出票价大于此值将会被拒单出票失败,小于此值时,出票成功后将自动退还多收取的票差)

JSON请求示例 :

单程下单请求示例:
{
  "appKey": "您申请的APPKEY",
  "customerOrderNo": "2025011022150473",
  "contactName": "张三",
  "contactMobile": "13912345678",
  "callBackUrl": "https://xxxxxx/outTicketResultCallback",
  "refundTicketCallbackUrl": "https://xxxxxx/refundTicketResultCallback",
  "refundMoneyCallbackUrl": "https://xxxxxx/refundMoneyCallback",
  "trainSegments": [
    {
      "trainCode": "K1158",
      "fromStation": "合肥",
      "toStation": "蚌埠",
      "fromDateTime": "2025-01-15 06:02",
      "toDateTime": "2025-01-15 08:15",
      "isAcceptStanding": false,
      "isAcceptOtherSeat": false,
      "passengers": [
        {
          "name": "张三",
          "cardType": "1",
          "cardNo": "340123197209183099",
          "mobile": "13912345678",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 77.5
        },
        {
          "name": "李四",
          "cardType": "1",
          "cardNo": "441721198812150039",
          "mobile": "13912345678",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 77.5
        },
        {
          "name": "王二",
          "cardType": "1",
          "cardNo": "620821200112042422",
          "mobile": "13912345670",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 77.5
        }
      ]
    }
  ]
}



联程下单请求示例:
{
  "appKey": "您申请的APPKEY",
  "customerOrderNo": "2025011022150485",
  "contactName": "张三",
  "contactMobile": "13912345678",
  "callBackUrl": "https://xxxxxx/outTicketResultCallback",
  "refundTicketCallbackUrl": "https://xxxxxx/refundTicketResultCallback",
  "refundMoneyCallbackUrl": "https://xxxxxx/refundMoneyCallback",
  "trainSegments": [
    {
      "trainCode": "K1158",
      "fromStation": "合肥",
      "toStation": "蚌埠",
      "fromDateTime": "2025-01-15 06:02",
      "toDateTime": "2025-01-15 08:15",
      "isAcceptStanding": false,
      "isAcceptOtherSeat": false,
      "passengers": [
        {
          "name": "张三",
          "cardType": "1",
          "cardNo": "340123197209183099",
          "mobile": "13912345678",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 77.5
        },
        {
          "name": "李四",
          "cardType": "1",
          "cardNo": "441721198812150039",
          "mobile": "13912345678",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 77.5
        },
        {
          "name": "王二",
          "cardType": "1",
          "cardNo": "620821200112042422",
          "mobile": "13912345670",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 77.5
        }
      ]
    },
    {
      "trainCode": "K1276",
      "fromStation": "蚌埠",
      "toStation": "呼和浩特",
      "fromDateTime": "2025-01-15 16:45",
      "toDateTime": "2025-01-16 19:08",
      "isAcceptStanding": false,
      "isAcceptOtherSeat": false,
      "passengers": [
        {
          "name": "张三",
          "cardType": "1",
          "cardNo": "340123197209183099",
          "mobile": "13912345678",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 343.5
        },
        {
          "name": "李四",
          "cardType": "1",
          "cardNo": "441721198812150039",
          "mobile": "13812345678",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 343.5
        },
        {
          "name": "王二",
          "cardType": "1",
          "cardNo": "620821200112042422",
          "mobile": "13812345679",
          "ticketType": 1,
          "seatType": 8,
          "preTicketPrice": 343.5
        }
      ]
    }
  ]
}

JSON返回示例 :

下单成功示例:
{
    "data": {
        "orderNo": "TX25011213525343937",
        "totalPreTicketPriceAmount": 232.5
    },
    "success": true,
    "msg": "请求成功"
}

下单失败示例:
{
    "data": null,
    "success": false,
    "msg": "火车票票款余额不足,当前账户火车票票款余额:8.51小于订单票款总金额:232.5"
}