本教程用来演示聚合数据-火车票订票接口的使用流程。
-
配置好PHP环境,PHP版本最好大于5.5
-
去聚合数据-火车票订票接口申请key:http://www.juhe.cn/docs/api/id/173
-
以下代码供您了解流程,不要直接复制,不要用于生产环境
\'您申请到的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;