基础 qianmi.elife.train.order.create(预订火车票)

预订:
1.保险商品目前只支持千米官方非人工充值的货源,请确认货源对接正确以避免下单失败。
2.操作结果不代表预订结果,最终预订结果由货源方决定。
购票须知:
1.火车票相关业务处理时间为8:00-22:00
2.发车前4小时以内退款不做处理,请自行去火车站退票
3.不受理改签业务,需用户自行在发车前去车站办理
4.火车票新版上线,支持购买卧铺票、硬座,不支持指定无座
5.禁止代理商向用户收取票面价格以外的手续费
6.提交订单时如提示身份证待核验,乘车人需带二代身份证到火车站通过身份认证才能网上购票。
7.火车票预订接口最新扩展,证件类型支持(身份证、护照、台胞证、港澳通行证);票类型支持(成人、儿童)
8.【注意】:儿童票不可单独订票,当订单中存在儿童时,儿童姓名passengerName、证件类型idType、证件号idCard 三项按成人信息传递; 订单中包含儿童票,如需退票必须先退儿童票
 公共参数
请求地址:
环境 HTTP请求地址 HTTPS请求地址
正式环境 http://api.bm001.com/api https://api.bm001.com/api
系统级请求参数:
名称 类型 是否必须 描述
methodString 必须 API接口名称
access_tokenString 必须 接入码,获取方式:登录直销商系统(sale.bm001.com),进入“数据中心” > “开发工具”。
vString 必须 API协议版本,当前可选值:1.1
signString 必须 API输入参数签名结果
timestampString 必须 请求时间戳,时区为GMT+8(北京时间),格式:"yyyy-MM-dd HH:mm:ss",例如"2012-12-20 10:20:35",开放平台允许客户端请求的最大时间误差为10分钟
 业务参数
名称 类型 是否必须 示例值 默认值 描述
fromString 必须 南京南 起始站中文
toString 必须 杭州东 终点站中文
dateString 必须 2014-10-20 出发日期
trainNumberString 必须 G31 车次
startTimeString 必须 07:17 发车时刻
contactNameString 必须 张三丰 联系人姓名
contactTelString 必须 15888888888 联系人电话
passagersString 必须 王大锤,15651775256,320981198802273742,软座;王二锤,15651775256,320981198802273742,一等座 乘客信息,以英文逗号分隔,依次为:乘客姓名,乘客手机号码,乘客证件号码,选择座位类型名称,多个乘客时以英文分号分隔,同一笔订单最多支持五个乘客 【最新扩展: 乘客信息拼接规则可以改为(乘客姓名,乘客手机号码,乘客证件号码,选择座位类型名称,证件号码类型,票类型,乘客生日,乘客性别),以支持多种证件购票,和购买儿童票。 证件号码: 1身份证、2护照、3台胞证、4港澳通行证;票类型: 1成人票、2儿童票;生日: yyyy-mm-dd;性别: 0女 1男。 示例: 王大锤,15651775256,E12345678,二等座,2,1,1988-02-27,0;王大锤,15651775256,E12345678,二等座,2,2,2015-02-27,1 】【本次扩展兼容原规则!有扩展需求的可以选择新规则】【新老规则不可混用】
itemIdTrainString 必须 49144 火车票商品编号
chooseSeatsString 可选 1A 在线选座坐席(奇数位表示前后排, 偶数位表示座席编号; 如1C表示前排C座位; 1C2D表示两张票, 分别为前排C座和后排D座(注:二等座的坐席是ABC DF,一等座是AC DF,特等座/商务座 AC F)
 请求示例
OpenClient client = new DefaultOpenClient(url, appKey, appSecret);
TrainOrderCreateRequest req = new TrainOrderCreateRequest();
req.setFrom("南京");
req.setTo("如皋");
req.setDate("2015-08-13");
req.setTrainNumber("K8502");
req.setStartTime("07:57");
req.setContactName("leeya");
req.setContactTel("15888888888");
req.setPassagers("张三,15651775256,34022219900101111X,软座;李四,15651775256,321324198510161111,软座;王五,15651775256,430703198709121111,软座");
req.setItemIdTrain("5500801");
req.setItemIdInsur("9210801");
TrainOrderCreateResponse response = client.execute(req, accessToken);
$client = new OpenClient;
$client->appKey = appKey;
$client->appSecret = appSecret;
$req = new TrainOrderCreateRequest;
$req->setFrom("南京");
$req->setTo("如皋");
$req->setDate("2015-08-13");
$req->setTrainNumber("K8502");
$req->setStartTime("07:57");
$req->setContactName("leeya");
$req->setContactTel("15888888888");
$req->setPassagers("张三,15651775256,34022219900101111X,软座;李四,15651775256,321324198510161111,软座;王五,15651775256,430703198709121111,软座");
$req->setItemIdTrain("5500801");
$req->setItemIdInsur("9210801");
$res = $client->execute($req, $accessToken);
IOpenClient client = new DefaultOpenClient(url, appKey, appSecret);
TrainOrderCreateRequest req = new TrainOrderCreateRequest();
req.From = "南京";
req.To = "如皋";
req.Date = "2015-08-13";
req.TrainNumber = "K8502";
req.StartTime = "07:57";
req.ContactName = "leeya";
req.ContactTel = "15888888888";
req.Passagers = "张三,15651775256,34022219900101111X,软座;李四,15651775256,321324198510161111,软座;王五,15651775256,430703198709121111,软座";
req.ItemIdTrain = "5500801";
req.ItemIdInsur = "9210801";
TrainOrderCreateResponse response = client.Execute(req, accessToken);
 响应参数
名称 类型 示例值 描述
ticketTrade TicketTrade 预订火车票返回订单详情
 响应示例

JSON数据格式:

 异常示例

JSON数据格式:

 {
    "errorToken": "@@$-ERROR_TOKEN$-@@",
    "code": "33",
    "message": "非法的参数",
    "solution": "请查看根据服务接口对参数格式的要求",
    "subErrors": [{
      "code": "isv.invalid-paramete:XXXX",
      "message": "参数XXXX无效,格式不对、非法值、越界等"
    }]
  }
 错误码
错误码 错误描述 解决方案
isv.qianmi-elife-train-order-create-service-error:00051004预定火车票失败,货源查询异常联系运维查看货源状态
isv.qianmi-elife-train-order-create-service-error:00051020预订火车票失败,获取指定座等票面价失败检查座位名称是否输入错误
isv.qianmi-elife-train-order-create-service-error:00051015火车票预定失败, 票务中心异常.联系运维确认开放平台系统状态
isv.qianmi-elife-train-order-create-service-error:00051014火车票预定失败, 15分钟内不可提交相同订单, 请注意查看订单状态.15分钟以内无法重复提交,请查看预订状态
isv.qianmi-elife-train-order-create-service-error:00051013预定火车票失败,票务预定预处理价格失败联系运维,确认商品价格状态
isv.qianmi-elife-train-order-create-service-error:00051010预订火车票失败,单等订单乘客数量不能超过五减少请求参数中乘客的数量
isv.qianmi-elife-train-order-create-service-error:00051011预定火车票失败,乘客信息异常查看请求参数中的乘客信息,修复非法数据后再次请求
isv.qianmi-elife-train-order-create-service-error:00051003预定火车票失败,火车票保险货源备货中联系运维确认保险商品货源状态
isv.qianmi-elife-train-order-create-service-error:00051005预定火车票失败,火车票货源备货中联系运维,确认火车票商品货源状态
isv.qianmi-elife-train-order-create-service-error:00051022保险货源仅支持官方非人工充值模板,请联系上级确认保险货源详情保险货源仅支持官方非人工充值模板,请联系上级确认保险货源详情
isv.qianmi-elife-train-order-create-service-error:00051012预定火车票失败,票务预定预处理时间失败查看入参中起始时间参数是否异常 格式参考 17:22
isv.qianmi-elife-train-order-create-service-error:00050602暂不支持此商品确认商品是否对接正确
isv.qianmi-elife-train-order-create-service-error:00051025预定火车票失败,无效车次,[{0}]确认入参是否正确,下单的车次信息是否为查询返回中支持的车次信息
isv.qianmi-elife-train-order-create-service-error:00051026预定火车票失败,无效座位类型,[{0}]确认入参是否正确,下单的车次信息是否为查询返回中支持的车次信息
sv.qianmi-elife-train-order-create-service-error:00051028预定火车票失败,供货商不支持无座下单请选择其它车次下单
isv.qianmi-elife-train-order-create-service-error:00051029用户未通过此数据审核,请联系上级进行数据审核请登录直销商系统(login.1000.com),步骤:数据中心—数据申请,申请对应的类目数据,然后进入BOSS系统,找到会员中的申请数据管理进行审核。
 FAQ
Q:火车票主单中的状态state与子单中的状态state有什么关系?
A:火车票订单主单TicketTrade中的state仅仅表示用户在千米系统预定火车票的订单的预定状态,而子单TicketOrder中的state是表示子单中对应火车票的出票情况,成功还是失败还是退票.一般来说,如果预定失败,主单中的state状态会直接变成9(已取消),对于这种订单无需关注子单中的状态,也无需支付订单。只有预定成功的订单,才能执行付款动作,然后再查询子单中的出票状态即可。
Q:我如何才能得知订单的预定成功还是失败?
A:千米开放平台对票务订单(火车票,机票)的订单预定状态变更都会有消息通知机制,详情请关注千米开放平台消息服务
Q:为什么火车票预定一直显示“预定中”直到半小时后自动取消也没有报错提示?
A:联系上级确认货源设价信息,确保火车票(有保险的同时也要确认保险)商品的设价正确。
Q:火车票预定被取消,提示“预定失败,12306排队失败”
A:余票不足,高峰期余票时刻变化,刷新查询后选择有余票的车次重新下单
Q:预定火车票下单失败,获取座等票面价失败
A:查询的参数(车次,起始车站)需从查询接口返回值中读取且保证一致准确,同时确认车次是否还有余票。
Q:为什么会遇到查询车次信息过期,请重新下单的问题?
A:火车票查询时,例如,查询南京-上海,而接口返回车次是南京南-上海,预定火车票时要以接口返回信息为准,传的参数必须是南京南-上海。