退票费用为正数。

master
赵鹏 2 years ago
parent 148e542ea7
commit f7c3e963fa

@ -44,6 +44,9 @@ class innerTrainSearch extends CI_Controller{
case 'lanhai':
$this->LanHaiApi($date,$from,$to);
break;
case 'shuntu':
$this->ShunTuApi($date,$from,$to);
break;
default :
$this->NewCtripApi($date,$from,$to);
break;
@ -651,6 +654,230 @@ class innerTrainSearch extends CI_Controller{
}
}
/**
* @description:顺途2.0火车票查询接口
* @param {*} $date 日期
* @param {*} $from 出发站点三字码
* @param {*} $to 到达站点三字码
* @param {*} $return
* @return {*}
* @Date Changed:
*/
public function ShunTuApi($date=null,$from=null,$to=null,$return=false){
if(!$date || !$from || !$to){
header("HTTP/1.1 404 Not Found");
exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}');
}else{
$isCache = false;
$iseven = false;
$cachedata = false;
$now_time = time();
$differ = (strtotime($date) - $now_time) / 86400;
//屏蔽掉超过预售期的搜索,提高速度,2021-7-5 zp修改预售期为15天不再是30天
if($differ > 14){
$date = date('Y-m-d',strtotime('+7day'));
$iseven = true;
}
//转换三字码为中文
$this->load->model("ctrip_model");
$FromName = $this->ctrip_model->ReplaceCodeToName($from);
$ToName = $this->ctrip_model->ReplaceCodeToName($to);
if(!$FromName || !$ToName){
header("HTTP/1.1 404 Not Found");
exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}');
}else{
$FromName = $FromName->station_name;
$ToName = $ToName->station_name;
}
//生成请求链接
$TimeStamp = date("Y-m-d H:i:s");
$serviceName = "train.searchTrainsBetweenStations"; //每个接口都有自己名称
$strSign = $TimeStamp.$serviceName.COMPANYID.CTRIPKEY; //加密前的令牌
$Sign = md5($strSign);
$url = "http://ctrip.21kv.com/train/ticket/searchTrainsBetweenStations"; //顺途2.0的接口每个都不一样了
//构建接口参数POST方式JSON格式
$post_data = new stdClass();
$post_data->authentication = new stdClass();
$post_data->authentication->timeStamp = $TimeStamp;
$post_data->authentication->serviceName = $serviceName;
$post_data->authentication->companyId = COMPANYID;
$post_data->authentication->messageIdentity = $Sign;
$post_data->searchTrainsParam = new stdClass();
$post_data->searchTrainsParam->departDate = $date;
$post_data->searchTrainsParam->fromStationCode = "";
$post_data->searchTrainsParam->toStationCode = "";
$post_data->searchTrainsParam->fromStationName = $FromName;
$post_data->searchTrainsParam->toStationName = $ToName;
$post_data->searchTrainsParam->trainNo = "";
$api_start_time = microtime(true);
// //获取数据
// echo ($url . "<hr/>");
// echo(json_encode($post_data) . "<hr/>");
$ResponseJson = GetPost_http($url,json_encode($post_data),'json');
$api_end_time = microtime(true);
$ResponseData = json_decode($ResponseJson);
// echo($ResponseJson);
$api_responsive_time = $api_end_time - $api_start_time;
if(empty($ResponseData->trainList)){
log_message('error','ctrip_trian|status:trains is empty |相应时间:'.$api_responsive_time);
}else{
log_message('error','ctrip_trian|status:'.$ResponseData->ResponseStatus->Ack.'|相应时间:'.$api_responsive_time);
}
//定义返回的json
$ReturnData = new stdClass();
$ReturnData->httpstatus = 200;
$ReturnData->data = new stdClass();
$ReturnData->data->seven = $iseven;
$ReturnData->data->cache = $isCache;
$ReturnData->data->supplier = 'ShunTu';
$ReturnData->data->result = array();
$ReturnData->data->map = new stdClass();
$obj = array();
$i = 0;
$PriceStr = '';
//数据解析
if(!empty($ResponseData->trainList)){
foreach ($ResponseData->trainList as $TrainInfo){
$obj[$TrainInfo->fromTelCode] = $TrainInfo->fromStationName;
$obj[$TrainInfo->toTelCode] = $TrainInfo->toStationName;
$SeaType = '';
//余数初始化为空
$gjrwNum = $rwNum = $rzNum = $tdzNum = $wzNum = $yzNum = $edzNum = $ydzNum = $swzNum = $ywNum = $dwNum = $ydwNum = $edzNum = null;
foreach($TrainInfo->seatList as $Seats){
//从香港出发的 D/G 火车加价3%
if($from == 'XJA'){
if(stripos($TrainInfo->trainNo, "G") !== false || stripos($TrainInfo->trainNo, "D") !== false){
$Seats->maxPrice = $Seats->maxPrice * 1.03;
}
}
if($Seats->seatName == '高级软卧上' || $Seats->seatName == '高级软卧'){
$gjrwXiaPrice = $Seats->maxPrice * 10;
$SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->maxPrice.'",';
$gjrwNum = $Seats->ticketLeft;
}
if($Seats->seatName == '软卧上' || $Seats->seatName == '软卧' ){
$rwPrice = $Seats->maxPrice * 10;
$SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->maxPrice.'",';
$rwNum = $Seats->ticketLeft;
}
if($Seats->seatName == '一等双软上' || $Seats->seatName=='一等卧'){
$SeaType .= '"YDW":"¥'.$Seats->maxPrice.'",';
$ydwNum = $Seats->ticketLeft;
}
if($Seats->seatName == '软座'){
$rzPrice = $Seats->maxPrice * 10;
$SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->maxPrice.'",';
$rzNum = $Seats->ticketLeft;
}
if($Seats->seatName == '特等座'){
$SeaType .= '"P":"¥'.$Seats->maxPrice.'",';
$tdzNum = $Seats->ticketLeft;
}
if($Seats->seatName == '无座'){
$SeaType .= '"WZ":"¥'.$Seats->maxPrice.'",';
$wzNum = $Seats->ticketLeft;
}
if($Seats->seatName == '硬座'){
$yzPrice = $Seats->maxPrice * 10;
$SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->maxPrice.'",';
$yzNum = $Seats->ticketLeft;
}
if($Seats->seatName == '二等座'){
$SeaType .= '"O":"¥'.$Seats->maxPrice.'",';
$edzNum = $Seats->ticketLeft;
}
if($Seats->seatName == '一等座'){
$SeaType .= '"M":"¥'.$Seats->maxPrice.'",';
$ydzNum = $Seats->ticketLeft;
}
if($Seats->seatName == '商务座'){
$swzPrice = $Seats->maxPrice * 10;
$SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->maxPrice.'",';
$swzNum = $Seats->ticketLeft;
}
if($Seats->seatName == '硬卧上' || $Seats->seatName == '硬卧'){
$ywPrice = $Seats->maxPrice * 10;
$SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->maxPrice.'",';
$ywNum = $Seats->ticketLeft;
}
if($Seats->seatName == '二等双软上' || $Seats->seatName == '二等卧'){
$SeaType .= '"EDW":"¥'.$Seats->maxPrice.'",';
$erwNum = $Seats->ticketLeft;
}
if($Seats->seatName == '动卧上' || $Seats->seatName == '动卧'){
$SeaType .= '"F":"¥'.$Seats->maxPrice.'",';
$dwNum = $Seats->ticketLeft;
}
$PriceStr = $SeaType.'"train_no":'.'"'.$TrainInfo->trainNo.'"';
}
//对返回的数据进行容错处理
$gjrwNum = isset($gjrwNum) ? ticket_exchange($Seats->maxPrice,$gjrwNum,$iseven) : '';
$rwNum = isset($rwNum) ? ticket_exchange($Seats->maxPrice,$rwNum,$iseven) : '';
$rzNum = isset($rzNum) ? ticket_exchange($Seats->maxPrice,$rzNum,$iseven) : '';
$tdzNum = isset($tdzNum) ? ticket_exchange($Seats->maxPrice,$tdzNum,$iseven) : '';
$wzNum = isset($wzNum) ? ticket_exchange($Seats->maxPrice,$wzNum,$iseven) : '';
$ywNum = isset($ywNum) ? ticket_exchange($Seats->maxPrice,$ywNum,$iseven) : '';
$yzNum = isset($yzNum) ? ticket_exchange($Seats->maxPrice,$yzNum,$iseven) : '';
$edzNum = isset($edzNum) ? ticket_exchange($Seats->maxPrice,$edzNum,$iseven) : '';
$ydzNum = isset($ydzNum) ? ticket_exchange($Seats->maxPrice,$ydzNum,$iseven) : '';
$swzNum = isset($swzNum) ? ticket_exchange($Seats->maxPrice,$swzNum,$iseven) : '';
$dwNum = isset($dwNum) ? ticket_exchange($Seats->maxPrice,$dwNum,$iseven) : '';
$ydwNum = isset($ydwNum) ? ticket_exchange($Seats->maxPrice,$ydwNum,$iseven) : '';
$erwNum = isset($erwNum) ? ticket_exchange($Seats->maxPrice,$erwNum,$iseven) : '';
$runMin = $TrainInfo->durationMinutes % 60;
$runHour = ($TrainInfo->durationMinutes - $runMin) / 60;
$ReturnData->data->result[$i] = '|预定|'.$TrainInfo->train12306No.'|'.$TrainInfo->trainNo.'|'.$TrainInfo->fromStationName.'|'.$TrainInfo->toStationName.'|'.$TrainInfo->fromTelCode.'|'.$TrainInfo->toTelCode.'|'.$TrainInfo->startTime.'|'.$TrainInfo->arriveTime.'|'.$runHour.':'.$runMin.'|'.$TrainInfo->canWebBuy.'||'.date('Ymd',strtotime($date)).'||||||||'.$gjrwNum.'||'.$rwNum.'|'.$rzNum.'|'.$tdzNum.'|'.$wzNum.'||'.$ywNum.'|'.$yzNum.'|'.$edzNum.'|'.$ydzNum.'|'.$swzNum.'|'.$dwNum.'|||'.$ydwNum.'|'.$erwNum;
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$PriceStr.'},"messages":[],"validateMessages":{}}';
$ReturnData->data->price[$i] = $data;
$i++;
}
}
//print_r($ResponseData);die();
$ReturnData->data->map = (object)$obj;
if($return){
return json_encode($ReturnData);
}else{
echo json_encode($ReturnData);
}
}
}
//App项目组的接口 暂时不用
public function appGroupApi($train_date=null,$fromStation=null,$toStation=null,$return=false){
set_time_limit(0);

@ -577,7 +577,7 @@ class LanHaiTicket extends CI_Controller
$returnticket->TOC_COLD_SN = $cold_sn;
$returnticket->TOC_TrainNumber = $passenger_data->ts_checi;
$returnticket->TOC_DepartureDate = $passenger_data->ts_startdate;
$returnticket->TOC_TicketCost = -15;
$returnticket->TOC_TicketCost = 15;
//print_r($add_train_payment_data);die();
$this->BIZ_train_model->returnticket_train($returnticket);

Loading…
Cancel
Save