annie00

本教程用来演示聚合数据-火车票订票接口的使用流程。

  1. 配置好PHP环境,PHP版本最好大于5.5

  2. 去聚合数据-火车票订票接口申请key:http://www.juhe.cn/docs/api/id/173

  3. 以下代码供您了解流程,不要直接复制,不要用于生产环境

 \'您申请到的key\',
  \'url\' => array(
    \'cityCode\' => \'http://op.juhe.cn/trainTickets/cityCode\',
    \'ticketsAvailable\' => \'http://op.juhe.cn/trainTickets/ticketsAvailable\',
    \'submit\' => \'http://op.juhe.cn/trainTickets/submit\',
    \'orderStatus\' => \'http://op.juhe.cn/trainTickets/orderStatus\',
    \'pay\' => \'http://op.juhe.cn/trainTickets/pay\',
  ),
);
#1、查站点简码
echo \'行程规划:2015年7月1日,从苏州出发,目的地青岛
[object Object]\';
echo \'首先查询苏州站和青岛站的简码
\';
//查询苏州站的简码
$suzhouCodeResponse = post($config[\'url\'][\'cityCode\'], \'key=\'.$config[\'key\'].\'&stationName=苏州\');
$suzhouCodeArray = json_decode($suzhouCodeResponse, true);
$suzhouCode = $suzhouCodeArray[\'result\'][\'code\'];
echo \'查询到苏州站的简码是:\'.$suzhouCode.\'
\';
// 查询青岛站的简码
$qingdaoCodeResponse = post($config[\'url\'][\'cityCode\'], \'key=\'.$config[\'key\'].\'&stationName=青岛\');
$qingdaoCodeArray = json_decode($suzhouCodeResponse, true);
$qingdaoCode = $qingdaoCodeArray[\'result\'][\'code\'];
echo \'查询到青岛站的简码是:\'.$qingdaoCode.\'
[object Object]\';
#2、查余票
echo \'然后查询余票信息
\';
$ticketsAvailableResponse = post($config[\'url\'][\'ticketsAvailable\'],
  \'&key=\'.$config[\'key\'].
  \'&train_date=2015-07-01\'. //注意日期的格式
  \'&from_station=SZH\'. //上一步骤中查到苏州站的简码是SZH
  \'&to_station=QDK\' //上一步骤中查到青岛站的简码是QDK
);
$ticketsAvailableArray = json_decode($ticketsAvailableResponse, true);
echo \'查询到的余票信息:
\';
print_r($ticketsAvailableArray[\'result\'][\'list\']);
echo \'
[object Object]\';
#3、提交订单
echo \'提交订单
\';
echo \'根据余票信息,发现G226车次比较合适
\';
echo \'请看G226车次的余票详情,有些字段需要注意一下:
\';
echo \'start_station_name:始发站,上海虹桥
\';
echo \'from_station_name:我们将要出发的车站,苏州北,注意不是苏州
\';
echo \'from_station_code:OHH,需要注意这个是苏州北站的简码,不是苏州站的,也是接下来我们提交订单时传递的参数
\';
$passengersArray = array(
  array(
    \'passengerid\' => \'1123\', //乘客的顺序号,当有多个乘客时,每个人的乘客号要唯一
    \'passengersename\' => \'张三\', //请替换成真实的名字
    \'piaotype\' => \'1\', //请仔细查看官网文档中piaotype和piaotypename的对应关系,不可出错
    \'piaotypename\' => \'成人票\',
    \'passporttypeseid\' => \'1\', //请仔细查看官网文档中passporttypeseid和passporttypeseidname的对应关系,不可出错
    \'passporttypeseidname\' => \'二代身份证\',
    \'passportseno\' => \'420205199207231234\', //请替换成真实的身份证号码
    \'price\' => \'763.5\', //填写真实的价格
    \'zwcode\' => \'M\', //请确定您选择的车次中是否真有此类座次
    \'zwname\' => \'一等座\',
  ),
  array( //第二个乘客,最多五个乘客
    \'passengerid\' => \'2123\',
    \'passengersename\' => \'李四\',
    \'piaotype\' => \'1\',
    \'piaotypename\' => \'成人票\',
    \'passporttypeseid\' => \'1\',
    \'passporttypeseidname\' => \'二代身份证\',
    \'passportseno\' => \'23060519930621234\',
    \'price\' => \'59.5\',
    \'zwcode\' => \'M\',
    \'zwname\' => \'一等座\',
  )
);
$postArray = array(
  \'key\' => $config[\'key\'],
  \'checi\' => \'G226\', //从上一步查询中发现G226有余票
  \'from_station_code\' => \'OHH\', //出发站的简码,注意不是SZH(苏州)
  \'from_station_name\' => \'苏州北\', //出发站的名字,务必和出发站的简码对应
  \'to_station_code\' => \'QDK\', //到达车站的简码
  \'to_station_name\' => \'青岛\', //到达车站的名字,务必和到达车站的简码对应
  \'train_date\' => \'2015-07-01\', //乘车日期,注意时间的格式
  \'passengers\' => json_encode($passengersArray, JSON_UNESCAPED_UNICODE),
);
$postStr = \'\';
foreach ($postArray as $key => $value) {
  $postStr .= \'&\'.$key.\'=\'.$value;
}
// echo $postStr;exit;
$submit = post($config[\'url\'][\'submit\'], $postStr);
// echo $submit;exit;
echo \'[object Object]\';
/* 正常输出示例
{
    "reason": "成功的返回",
    "result": {
        "orderid": "1433493562439" //稍候可根据此订单号查询处理状态
    },
    "error_code": 0
}
*/
#4、查询订单状态
echo \'查询订单状态
\';
//请将订单号替换成您自己的订单号
$status = post($config[\'url\'][\'orderStatus\'], \'key=\'.$config[\'key\'].\'&orderid=1433493562439\');
echo $status;
#5、请求出票(将从您的聚合账户中扣款);请求此接口的数据前请确定您的订单是一个待支付的订单
echo \'[object Object]请求出票(前提是查询订单状态,得知占座成功)
\';
$pay = post($config[\'url\'][\'pay\'], \'key=\'.$config[\'key\'].\'&orderid=1433493562439\');
echo $pay;

  

分类:

技术点:

相关文章: