保存老版本的
parent
31bc3002b6
commit
62c2542929
@ -0,0 +1,4 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
|
||||
define("JUHE_API_KEY","123");
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,585 @@
|
||||
<?php
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
//帐号密钥
|
||||
define("ORDERUSER","guilintravel");
|
||||
define("ORDERKEY","07f811fe29f04008a8fcc86e81c012b9");
|
||||
|
||||
//数据返回格式地址
|
||||
define("JSONRETURN","http://m.ctrip.com/restapi/soa2/12976/json/");
|
||||
define("XMLRETURN","http://m.ctrip.com/restapi/soa2/12976/xml/");
|
||||
|
||||
class ctrip_train extends CI_Controller{
|
||||
|
||||
public function __construct(){
|
||||
parent::__construct();
|
||||
$this->load->helper("train");//加载模型
|
||||
$this->load->model("ctrip_train_model");//加载模型
|
||||
}
|
||||
|
||||
public function addorders(){
|
||||
//接收参数
|
||||
$cold_sn = $this->input->get("order");
|
||||
$bpe_sn = $this->input->get("people");
|
||||
$SelectSeat = $this->input->get("selectseat");
|
||||
$data = array();
|
||||
$rebakc = array();//返回数据
|
||||
$rebakc["status"] = 0;
|
||||
$rebakc["mes"] = "";
|
||||
|
||||
|
||||
if(!is_numeric($cold_sn)){
|
||||
$rebakc["mes"] = "订单号是数字";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
if(empty($bpe_sn)){
|
||||
$rebakc["mes"] = "请选择乘客";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
|
||||
$data['train'] = $this->ctrip_train_model->biz_order_detail($cold_sn);
|
||||
$data['people_list'] = $this->ctrip_train_model->in_bpesn_people_info($bpe_sn);
|
||||
|
||||
/*print_r($data['train']);
|
||||
print_r($data['people_list']);*/
|
||||
|
||||
//生成订单号
|
||||
$OrderNumber = ORDERUSER.time();
|
||||
|
||||
if (empty($data['train'])) {
|
||||
//显示错误,找不到车次
|
||||
$rebakc["mes"] = "找不到车次";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
|
||||
}
|
||||
if (empty($data['people_list'])) {
|
||||
//显示错误,找不到用户信息
|
||||
$rebakc["mes"] = "找不到乘客信息";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (count($data['people_list']) > 5) {
|
||||
//显示错误,用户超过五个
|
||||
$rebakc["mes"] = "乘客不能超过五个";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
|
||||
$db_train_zw = $this->config->item('db_train_zw');
|
||||
$train_zw = $this->config->item('train_zw');
|
||||
$zwcode = $db_train_zw[$data['train']->Aircraft]; //座位简码
|
||||
$zwname = $train_zw[$db_train_zw[$data['train']->Aircraft]]; //座位名称
|
||||
$black_list = $this->config->item('black_list');
|
||||
|
||||
//拼接发送的报文
|
||||
$PostData = array();
|
||||
$TimeStamp = time();
|
||||
$time = date('Y-m-d H:i:s',$TimeStamp);
|
||||
$PostData['Authentication']->TimeStamp = $time;
|
||||
$PostData['Authentication']->ServiceName = 'order.PartnerAddOrder';
|
||||
$PostData['Authentication']->PartnerName = ORDERUSER;
|
||||
$MessageIdentity = md5($time.'order.PartnerAddOrder'.ORDERKEY);
|
||||
$PostData['Authentication']->MessageIdentity = $MessageIdentity;
|
||||
|
||||
$PostData['TrainOrderService']->PartnerName = ORDERUSER;
|
||||
$PostData['TrainOrderService']->Operation = '';
|
||||
$PostData['TrainOrderService']->OrderType = '电子';
|
||||
$PostData['TrainOrderService']->OrderTicketType = '0';
|
||||
$PostData['TrainOrderService']->OrderNumber = $OrderNumber;
|
||||
$PostData['TrainOrderService']->ChannelName = ORDERUSER;
|
||||
|
||||
$PostData['TrainOrderService']->Order->OrderTime = $time;
|
||||
$PostData['TrainOrderService']->Order->OrderMedia = 'pc';
|
||||
$PostData['TrainOrderService']->Order->Insurance = 'N';
|
||||
$PostData['TrainOrderService']->Order->Invoice = 'N';
|
||||
$PostData['TrainOrderService']->Order->PrivateCustomization = '0';
|
||||
|
||||
$PostData['TrainOrderService']->Order->TicketItem->FromStationName = $data['train']->DepartAirport_cn;
|
||||
$PostData['TrainOrderService']->Order->TicketItem->ToStationName = $data['train']->ArrivalAirport_cn;
|
||||
$PostData['TrainOrderService']->Order->TicketItem->TicketTime = date('Y-m-d H:i:s',strtotime($data['train']->DepartureTime));
|
||||
$PostData['TrainOrderService']->Order->TicketItem->TrainNumber = $data['train']->FlightsNo;
|
||||
$PostData['TrainOrderService']->Order->TicketItem->ArrivalDateTime = date('Y-m-d H:i:s',strtotime($data['train']->ArrivalTime));
|
||||
$PostData['TrainOrderService']->Order->TicketItem->TicketPrice = $data['train']->adultcost;
|
||||
$PostData['TrainOrderService']->Order->TicketItem->TicketCount = count($data['people_list']);
|
||||
|
||||
$AdultNum = 0;
|
||||
$ChildNum = 0;
|
||||
$Passport = '';
|
||||
foreach ($data['people_list'] as $PassagerInfo){
|
||||
//乘客类型
|
||||
switch ($PassagerInfo->BPE_GuestType) {
|
||||
case 1:
|
||||
$PiaoType = 1;
|
||||
$PiaoTypeName = "成人票";
|
||||
$AdultNum++;
|
||||
break;
|
||||
case 2:
|
||||
$PiaoType = 2;
|
||||
$PiaoTypeName = "儿童票";
|
||||
$ChildNum++;
|
||||
break;
|
||||
default://外国人应该就两种票吧
|
||||
$PiaoType = 1;
|
||||
$PiaoTypeName = "成人票";
|
||||
break;
|
||||
}
|
||||
|
||||
//证件类型
|
||||
switch ($PassagerInfo->BPE_PassportType){
|
||||
case 'Chinese ID':
|
||||
$PassportTypeseId = "1";
|
||||
$PassportTypeseidName = "二代身份证";
|
||||
break;
|
||||
case 'Travel Permit from Hong Kong / Macau':
|
||||
$PassportTypeseidName = "港澳通行证";
|
||||
break;
|
||||
case 'Travel Permit from Taiwan':
|
||||
$PassportTypeseId = "G";
|
||||
$PassportTypeseidName = "台湾通行证";
|
||||
break;
|
||||
default :
|
||||
$PassportTypeseId = "B";
|
||||
$PassportTypeseidName = "护照";
|
||||
break;
|
||||
}
|
||||
//$Passport .= chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName).','.$PassportTypeseidName.','.$PassagerInfo->BPE_Passport.','.$PiaoTypeName.','.''.',0|';
|
||||
|
||||
if($PiaoType == 1){
|
||||
$RelatioNme = chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName);
|
||||
$Passport .= chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName).','.$PassportTypeseidName.','.$PassagerInfo->BPE_Passport.','.$PiaoTypeName.','.''.',0|';
|
||||
}elseif($PiaoType == 2){
|
||||
$Passport .= $RelatioNme.','.$PassportTypeseidName.','.$PassagerInfo->BPE_Passport.','.$PiaoTypeName.','.''.',0,'.chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName).'|';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$PostData['TrainOrderService']->Order->TicketItem->AuditTicketCount = $AdultNum;
|
||||
$PostData['TrainOrderService']->Order->TicketItem->ChildTicketCount = $ChildNum;
|
||||
$PostData['TrainOrderService']->Order->TicketItem->SeatName = $train_zw[$db_train_zw[$data['train']->Aircraft]];
|
||||
$PostData['TrainOrderService']->Order->TicketItem->SelectedSeat = $SelectSeat;
|
||||
$PostData['TrainOrderService']->Order->TicketItem->AcceptSeat = '';
|
||||
$PostData['TrainOrderService']->Order->TicketItem->passport = substr($Passport,0,strlen($Passport)-1);
|
||||
$PostData['TrainOrderService']->Order->TicketItem->OrderPrice = $data['train']->adultcost * $AdultNum + $data['train']->childcost * $ChildNum;
|
||||
|
||||
$PostData['TrainOrderService']->Order->FrontSeatFlag = '0';
|
||||
|
||||
$PostData['TrainOrderService']->Order->User->UserID = '';
|
||||
$PostData['TrainOrderService']->Order->User->UserName = 'guilintravel';
|
||||
$PostData['TrainOrderService']->Order->User->userLoginName = 'guilintravel';
|
||||
$PostData['TrainOrderService']->Order->User->UserMobile = '18877381547';
|
||||
//print_r($PostData);die();
|
||||
//本地添加记录
|
||||
$add_data = new stdClass();
|
||||
$add_data->cold_sn = $cold_sn;
|
||||
$add_data->ordernumber = $OrderNumber;
|
||||
$add_data->returncode = '';
|
||||
$add_data->status = '2';
|
||||
$add_data->errormsg = '预定中';
|
||||
$add_data->checi = $data['train']->FlightsNo;
|
||||
$add_data->fromstationame = $data['train']->DepartAirport_cn;
|
||||
$add_data->fromstationcode = $data['train']->DepartAirport;
|
||||
$add_data->tostationame = $data['train']->ArrivalAirport_cn;
|
||||
$add_data->tostationcode = $data['train']->ArrivalAirport;
|
||||
$add_data->startdate = date('Y-m-d',strtotime($data['train']->DepartureDate));
|
||||
$add_data->startime = date('H:i',strtotime($data['train']->DepartureTime));
|
||||
$add_data->endtime = date('H:i',strtotime($data['train']->ArrivalTime));
|
||||
$add_data->runtime = (strtotime($data['train']->ArrivalTime) - strtotime($data['train']->DepartureTime)) / 60;
|
||||
$add_data->channel = 'ctrip';
|
||||
$add_data->isauto = 0;
|
||||
|
||||
|
||||
//存储到数据库
|
||||
$this->ctrip_train_model->add_orders($add_data);
|
||||
|
||||
$Url = 'http://m.ctrip.com/restapi/soa2/11009/json/PartnerAddOrder';
|
||||
$ResponseJson = GetPost_http($Url,json_encode($PostData),'POST');
|
||||
$ResponseData = json_decode($ResponseJson);
|
||||
|
||||
//echo '预定';
|
||||
//print_r($ResponseData);
|
||||
|
||||
//预定请求成功后执行支付
|
||||
if($ResponseData->Status == 'SUCCESS'){
|
||||
//计算订单总价,进行支付
|
||||
$total_price = $AdultNum * $data['train']->adultcost + $ChildNum * $data['train']->childcost;
|
||||
$this->payorders($OrderNumber,$total_price);
|
||||
$rebakc["status"] = 1;
|
||||
$rebakc["order"] = $OrderNumber;
|
||||
$rebakc["mes"] = "订单提交成功,等待回调";
|
||||
echo json_encode($rebakc);
|
||||
}
|
||||
}
|
||||
|
||||
//取消订单
|
||||
public function cancelorders(){
|
||||
$CtripOrder = $this->input->post('CtripOrder');
|
||||
|
||||
$CtripOrder = '488110485_1543999756';
|
||||
|
||||
//生成报文
|
||||
$PostData = array();
|
||||
$TimeStamp = time();
|
||||
$time = date('Y-m-d H:i:s',$TimeStamp);
|
||||
$PostData['Authentication']->TimeStamp = $time;
|
||||
$PostData['Authentication']->ServiceName = 'order.PartnerPayOrder';
|
||||
$PostData['Authentication']->PartnerName = ORDERUSER;
|
||||
$MessageIdentity = md5($time.'order.PartnerPayOrder'.ORDERKEY);
|
||||
$PostData['Authentication']->MessageIdentity = $MessageIdentity;
|
||||
|
||||
$PostData['TrainOrderService']->PartnerName = ORDERUSER;
|
||||
$PostData['TrainOrderService']->OrderNumber = $CtripOrder;
|
||||
$PostData['TrainOrderService']->CancelTime = date('Y-m-d H:s:i',time());
|
||||
|
||||
$Url = 'http://ws-ordercenter-train.fat.ctripqa.com/orderCore/api/json/PartnerCancelOrder';
|
||||
|
||||
$ResponseData = GetPost_http($Url,json_encode($PostData),'POST');
|
||||
|
||||
print_r($ResponseData);
|
||||
}
|
||||
|
||||
//请求支付
|
||||
public function payorders($CtripOrder,$Price){
|
||||
if(empty($CtripOrder) && !is_numeric($Price)){
|
||||
exit('传参错误!');
|
||||
}
|
||||
|
||||
//生成报文
|
||||
$PostData = array();
|
||||
$TimeStamp = time();
|
||||
$time = date('Y-m-d H:i:s',$TimeStamp);
|
||||
$PostData['Authentication']->TimeStamp = $time;
|
||||
$PostData['Authentication']->ServiceName = 'order.PartnerPayOrder';
|
||||
$PostData['Authentication']->PartnerName = ORDERUSER;
|
||||
$MessageIdentity = md5($time.'order.PartnerPayOrder'.ORDERKEY);
|
||||
$PostData['Authentication']->MessageIdentity = $MessageIdentity;
|
||||
|
||||
$PostData['TrainOrderService']->PartnerName = ORDERUSER;
|
||||
$PostData['TrainOrderService']->OrderNumber = $CtripOrder;
|
||||
$PostData['TrainOrderService']->PayedPrice = $Price;
|
||||
//$PostData['TrainOrderService']->PayType = $time;
|
||||
//$PostData['TrainOrderService']->TradeNumber = $time;
|
||||
|
||||
$Url = 'http://m.ctrip.com/restapi/soa2/11009/json/PartnerPayOrder';
|
||||
|
||||
$ResponseJson = GetPost_http($Url,json_encode($PostData),'POST');
|
||||
$ResponseData = json_decode($ResponseJson);
|
||||
|
||||
//echo '支付';
|
||||
//print_r($ResponseData);
|
||||
//支付同步回调信息 {"Status":"SUCCESS","PartnerName":"guilintravel","OrderNumber":"guilintravel1546071576","OperationDateTime":"2018-12-29 16:19:37","RetCode":0,"ResponseStatus":{"Timestamp":"\/Date(1546071577236+0800)\/","Ack":"Success","Errors":[],"Extension":[]}}
|
||||
}
|
||||
|
||||
//退票接口
|
||||
public function returnticket(){
|
||||
//接收数据
|
||||
$CtripOrder = $this->input->get_post('CtripOrder');
|
||||
$PassagerId = $this->input->get_post('PassagerId');
|
||||
|
||||
//根据获取到的订单号获取信息
|
||||
if(empty($CtripOrder)){
|
||||
exit('订单号为空');
|
||||
}
|
||||
|
||||
$ReturnObj = $this->ctrip_train_model->get_passager_info($CtripOrder,$PassagerId);
|
||||
if(empty($ReturnObj)){
|
||||
exit('订单详情为空');
|
||||
}
|
||||
|
||||
$PostData = array();
|
||||
$TimeStamp = time();
|
||||
$time = date('Y-m-d H:i:s',$TimeStamp);
|
||||
$PostData['Authentication']->TimeStamp = $time;
|
||||
$PostData['Authentication']->ServiceName = 'order.ticketReturn';
|
||||
$PostData['Authentication']->PartnerName = ORDERUSER;
|
||||
$MessageIdentity = md5($time.'order.ticketReturn'.ORDERKEY);
|
||||
$PostData['Authentication']->MessageIdentity = $MessageIdentity;
|
||||
|
||||
$PostData['TrainOrderService']->contactName = '陈宇超';
|
||||
$PostData['TrainOrderService']->contactMobile = '18877381547';
|
||||
$PostData['TrainOrderService']->OrderNumber = $CtripOrder;
|
||||
$PostData['TrainOrderService']->OperatorType = '0';
|
||||
$PostData['TrainOrderService']->TicketInfo = '';
|
||||
$PostData['TrainOrderService']->TicketInfo = array();
|
||||
|
||||
$i = 0;
|
||||
foreach($ReturnObj as $items){
|
||||
$PostData['TrainOrderService']->TicketInfo[$i]['eOrderNumber'] = $items->ts_elecnumber;
|
||||
if($items->tst_ticketype == '儿童票'){
|
||||
$PostData['TrainOrderService']->TicketInfo[$i]['eOrderType'] = '2';
|
||||
}else{
|
||||
$PostData['TrainOrderService']->TicketInfo[$i]['eOrderType'] = '1';
|
||||
}
|
||||
$PostData['TrainOrderService']->TicketInfo[$i]['seatNumber'] = $items->tst_seatdetail;
|
||||
$PostData['TrainOrderService']->TicketInfo[$i]['passportName'] = $items->tst_realname;
|
||||
$PostData['TrainOrderService']->TicketInfo[$i]['passport'] = $items->tst_numberid;
|
||||
$PostData['TrainOrderService']->TicketInfo[$i]['realName'] = $items->tst_realname;
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
//发起退票请求
|
||||
$Url = 'http://m.ctrip.com/restapi/soa2/11009/json/PartnerReturnTicket';
|
||||
$ResponseJson = GetPost_http($Url,json_encode($PostData),'POST');
|
||||
$ResponseData = json_decode($ResponseJson);
|
||||
|
||||
//请求结束后,将乘客状态更改为出票状态
|
||||
/*$ResponseData = new stdClass();
|
||||
$ResponseData->Status = '';
|
||||
$ResponseData->Status = 'SUCCESS';*/
|
||||
|
||||
if($ResponseData->Status == 'SUCCESS'){
|
||||
echo "<script>alert('请求成功,正在处理退票...');location.href='".site_url("/apps/trainsystem/pages/refund?order=$CtripOrder")."';</script>";
|
||||
}
|
||||
//print_r($ResponseJson);
|
||||
}
|
||||
|
||||
//火车票改签
|
||||
public function rescheduleticket(){
|
||||
//订单号
|
||||
$CtripOrder = $this->input->get_post('CtripOrder');
|
||||
//改签车次
|
||||
$RescheduleTrainNumber = $this->input->get_post('RescheduleTrainNumber');
|
||||
//改签出发站
|
||||
$DepartStationName = $this->input->get_post('DepartStationName');
|
||||
//改签到达站
|
||||
$ArriveStationName = $this->input->get_post('ArriveStationName');
|
||||
//改签车次票价
|
||||
$RescheduleTicketPrice = $this->input->get_post('RescheduleTicketPrice');
|
||||
//改签坐席
|
||||
$RescheduleSeatName = $this->input->get_post('RescheduleSeatName');
|
||||
//改签出发时间
|
||||
$RescheduleDepartTime = $this->input->get_post('RescheduleDepartTime');
|
||||
//改签到达时间
|
||||
$RescheduleArriveTime = $this->input->get_post('RescheduleArriveTime');
|
||||
|
||||
//赋值测试
|
||||
$CtripOrder = '488111988_1544754322';
|
||||
$RescheduleTrainNumber = 'D8205';
|
||||
$DepartStationName = '桂林';
|
||||
$ArriveStationName = '南宁东';
|
||||
$RescheduleTicketPrice = '128.5';
|
||||
$RescheduleSeatName = '二等座';
|
||||
$RescheduleDepartTime = '2019/01/01 10:38';
|
||||
$RescheduleArriveTime = '2019/01/01 13:03';
|
||||
|
||||
$PostData = array();
|
||||
$TimeStamp = time();
|
||||
$time = date('Y-m-d H:i:s',$TimeStamp);
|
||||
$PostData['Authentication']->TimeStamp = $time;
|
||||
$PostData['Authentication']->ServiceName = 'order.partnerreschedule';
|
||||
$PostData['Authentication']->PartnerName = ORDERUSER;
|
||||
$MessageIdentity = md5($time.'order.partnerreschedule'.ORDERKEY);
|
||||
$PostData['Authentication']->MessageIdentity = $MessageIdentity;
|
||||
|
||||
$PostData['TrainOrderService']->OrderNumber = $CtripOrder;
|
||||
$PostData['TrainOrderService']->Operator = '陈宇超';
|
||||
$PostData['TrainOrderService']->RescheduleTrainNumber = $RescheduleTrainNumber;
|
||||
$PostData['TrainOrderService']->DepartStationName = $DepartStationName;
|
||||
$PostData['TrainOrderService']->ArriveStationName = $ArriveStationName;
|
||||
$PostData['TrainOrderService']->RescheduleDepartTime = $ArriveStationName;
|
||||
$PostData['TrainOrderService']->RescheduleArriveTime = $ArriveStationName;
|
||||
$PostData['TrainOrderService']->RescheduleTicketPrice = $RescheduleTicketPrice;
|
||||
$PostData['TrainOrderService']->RescheduleSeatName = $RescheduleSeatName;
|
||||
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos = array();
|
||||
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['0']['eOrderNumber'] = 'E1317265149';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['0']['eOrderType'] = '1';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['0']['realName'] = 'LISI';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['0']['CarriageNo'] = '12';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['0']['seatNumber'] = '877号';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['0']['passportName'] = 'LISI';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['0']['passport'] = '123456789';
|
||||
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['1']['eOrderNumber'] = 'E1317265149';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['1']['eOrderType'] = '1';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['1']['realName'] = 'WANGWU';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['1']['CarriageNo'] = '13';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['1']['seatNumber'] = '878号';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['1']['passportName'] = 'WANGWU';
|
||||
$PostData['TrainOrderService']->RescheduleTicketPassengerInfos['1']['passport'] = '123456789';
|
||||
|
||||
//print_r(json_encode($PostData));die();
|
||||
$Url = 'http://ws-ordercenter-train.fat.ctripqa.com/orderCore/api/json/PartnerReschedule';
|
||||
$ResponseData = GetPost_http($Url,json_encode($PostData),'POST');
|
||||
print_r($ResponseData);
|
||||
}
|
||||
|
||||
//回调函数
|
||||
public function ctrip_callback(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
log_message('error','携程回调信息:'.$back_json);
|
||||
/*$back_json = '{"Authentication":{"ServiceName":"web.order.returnTicketNotice","PartnerName":"tieyou","TimeStamp":"2019-1-18 11:35:22","MessageIdentity":"93F2BA3253829E8FAD29B5DEB7646A59"},"TrainOrderService":{"contactName":{},"contactMobile":{},"OrderNumber":"guilintravel1547778269","refundTicket":{"childBillId":{},"orderId":"8360041214","eOrderNumber":"EB59937931","eOrderType":"1","seatNumber":"01D\u53f7","passport":"544712454","passportName":"YANGFRANCISCHENG","realName":"YANGFRANCISCHENG","status":"1","reason":"\u9000\u7968\u6210\u529f\uff0c\u9000\u6b3e\u91d1\u989d:218.50\u5143"}}}';*/
|
||||
$ctrip_backdata = json_decode($back_json);
|
||||
//print_r($ctrip_backdata);
|
||||
if(!empty($ctrip_backdata)){
|
||||
$update_data = new stdClass();
|
||||
$update_data->ServiceName = $ctrip_backdata->Authentication->ServiceName;
|
||||
$update_data->ordernumber = '';
|
||||
$update_data->seatsinfo = '';
|
||||
$update_data->TicketCheck = '';
|
||||
$update_data->bookcallback = '';
|
||||
$update_data->confirmcallback = '';
|
||||
$update_data->returncallback = '';
|
||||
$update_data->OrderTotleFee = 0;
|
||||
$update_data->ElectronicOrderNumber = '';
|
||||
$update_data->reschedulecallback = '';
|
||||
|
||||
if($update_data->ServiceName == 'web.order.notifyTicket'){
|
||||
$update_data->OrderStatus = '4';
|
||||
$update_data->ErrorMsg = '出票成功';
|
||||
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
|
||||
$update_data->OrderTotleFee = $ctrip_backdata->TrainOrderService->OrderInfo->OrderTotleFee;
|
||||
$update_data->ElectronicOrderNumber = $ctrip_backdata->TrainOrderService->OrderInfo->ElectronicOrderNumber;
|
||||
|
||||
//新添加检票口信息
|
||||
if(isset($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->TicketCheck)){
|
||||
if(!is_object($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->TicketCheck)){
|
||||
$update_data->TicketCheck = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->TicketCheck;
|
||||
}
|
||||
}
|
||||
|
||||
//获取总票数,由于携程接口单人和多人返回的数据结构不一致
|
||||
$person_num = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->TicketCount;
|
||||
|
||||
//存储座位信息 转换为英文
|
||||
$coach_arr = array();
|
||||
$seats_arr = array();
|
||||
$data_passager = new stdClass();
|
||||
$string = '';
|
||||
$i = 0;
|
||||
if($person_num > 1){
|
||||
foreach ($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo as $items){
|
||||
if(strpos($items->SeatNo,'车厢')){
|
||||
$coach = mb_substr($items->SeatNo,0,strpos($items->SeatNo,'车厢'));
|
||||
array_push($coach_arr,$coach);
|
||||
$seat = mb_substr($items->SeatNo,strpos($items->SeatNo,'车厢')+2,mb_strlen($items->SeatNo,'UTF8'));
|
||||
$find = array('号');
|
||||
$replace = array('');
|
||||
$seat = str_replace($find,$replace,$seat);
|
||||
array_push($seats_arr,$seat);
|
||||
}
|
||||
|
||||
//对订票乘客进行存储
|
||||
$data_passager->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
|
||||
$data_passager->realname = $items->PassengerName;
|
||||
$data_passager->identitytype = $items->IdentityType;
|
||||
$data_passager->numberid = $items->NumberID;
|
||||
$data_passager->ticketype = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->TicketType;
|
||||
$data_passager->ticketprice = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->OrderTicketPrice;
|
||||
$data_passager->seatype = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->OrderTicketSeat;
|
||||
$data_passager->seatdetail = $items->SeatNo;
|
||||
$this->ctrip_train_model->add_passagers($data_passager);
|
||||
$i++;
|
||||
}
|
||||
|
||||
}else{
|
||||
$seatinfo_html = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo->SeatNo;
|
||||
if(strpos($seatinfo_html,'车厢')){
|
||||
$coach = mb_substr($seatinfo_html,0,strpos($seatinfo_html,'车厢'));
|
||||
array_push($coach_arr,$coach);
|
||||
$seat = mb_substr($seatinfo_html,strpos($seatinfo_html,'车厢')+2,mb_strlen($seatinfo_html,'UTF8'));
|
||||
$find = array('号');
|
||||
$replace = array('');
|
||||
$seat = str_replace($find,$replace,$seat);
|
||||
array_push($seats_arr,$seat);
|
||||
}
|
||||
|
||||
//对订票乘客进行存储
|
||||
$data_passager->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
|
||||
$data_passager->realname = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo->PassengerName;
|
||||
$data_passager->identitytype = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo->IdentityType;
|
||||
$data_passager->numberid = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo->NumberID;
|
||||
$data_passager->ticketype = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->TicketType;
|
||||
$data_passager->ticketprice = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->OrderTicketPrice;
|
||||
$data_passager->seatype = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->OrderTicketSeat;
|
||||
$data_passager->seatdetail = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo->SeatNo;
|
||||
$this->ctrip_train_model->add_passagers($data_passager);
|
||||
}
|
||||
|
||||
if(count(array_unique($coach_arr)) == 1){
|
||||
$onlycoach = array_unique($coach_arr);
|
||||
$update_data->seatsinfo .= 'Coach '.$onlycoach[0].',';
|
||||
}else{
|
||||
foreach (array_unique($coach_arr) as $item_coach){
|
||||
$update_data->seatsinfo .= 'Coach '.$item_coach.',';
|
||||
}
|
||||
}
|
||||
|
||||
$update_data->seatsinfo .= 'Seat ';
|
||||
foreach($seats_arr as $item_seat){
|
||||
$update_data->seatsinfo .= $item_seat.',';
|
||||
}
|
||||
|
||||
$update_data->seatsinfo = substr($update_data->seatsinfo,0,strlen($update_data->seatsinfo)-1);
|
||||
|
||||
$update_data->bookcallback = $back_json;
|
||||
|
||||
//添加支付记录
|
||||
$add_train_payment_data->TOC_Memo = $update_data->ordernumber;
|
||||
//根据订单号获取cold_sn
|
||||
$order_info = $this->ctrip_train_model->get_order_info($update_data->ordernumber);
|
||||
$cold_sn = $order_info->ts_cold_sn;
|
||||
$add_train_payment_data->TOC_COLD_SN = $cold_sn;
|
||||
$add_train_payment_data->TOC_TrainNumber = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfo->OrderTicketCheci;
|
||||
$add_train_payment_data->TOC_DepartureDate = date('Y-m-d',strtotime($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfo->OrderTicketYMD));
|
||||
$add_train_payment_data->TOC_TicketCost = $update_data->OrderTotleFee;
|
||||
$add_train_payment_data->poundage = ($person_num*5)."";//手续费,每人五块,转换成字符串
|
||||
$add_train_payment_data->FOI_TrainNetOrderNo = $update_data->ElectronicOrderNumber;
|
||||
//print_r($add_train_order_data);die();
|
||||
$this->ctrip_train_model->add_train_payment($add_train_payment_data);
|
||||
//记录供应商(瀚特)
|
||||
$this->ctrip_train_model->update_cold_planvei_sn($cold_sn);
|
||||
}else if($update_data->ServiceName == 'web.order.notifyNoTicket'){
|
||||
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
|
||||
$update_data->OrderStatus = '1';
|
||||
$update_data->ErrorMsg = $ctrip_backdata->TrainOrderService->OrderInfo->NoTicketReasons;
|
||||
$update_data->confirmcallback = $back_json;
|
||||
}else if($update_data->ServiceName == 'web.order.returnTicketNotice'){
|
||||
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber;
|
||||
$update_data->OrderStatus = '7';
|
||||
$update_data->ErrorMsg = $ctrip_backdata->TrainOrderService->refundTicket->reason;
|
||||
$update_data->returncallback = $back_json;
|
||||
|
||||
//退票时还需要单独对对每个乘客存储回调信息
|
||||
$passpager_info = new stdClass();
|
||||
$passpager_info->returncallback = $back_json;
|
||||
$passpager_info->status = '7';
|
||||
$passpager_info->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber;
|
||||
$passpager_info->realname = $ctrip_backdata->TrainOrderService->refundTicket->realName;
|
||||
$passpager_info->numberid = $ctrip_backdata->TrainOrderService->refundTicket->passport;
|
||||
$this->ctrip_train_model->update_passpager_info($passpager_info);
|
||||
}else if($update_data->ServiceName == 'web.order.requestRefund'){
|
||||
$return_order = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
|
||||
$return_money = $ctrip_backdata->TrainOrderService->TotalRefundAmount;
|
||||
|
||||
//根据订单号获取cold_sn
|
||||
$order_info = $this->ctrip_train_model->get_order_info($return_order);
|
||||
$cold_sn = $order_info->ts_cold_sn;
|
||||
//print_r($order_info);
|
||||
|
||||
$add_train_payment_data->TOC_Memo = $return_order.'_'.$ctrip_backdata->TrainOrderService->OrderInfo->OrderTid;
|
||||
$add_train_payment_data->TOC_COLD_SN = $cold_sn;
|
||||
$add_train_payment_data->TOC_TrainNumber = $order_info->ts_checi;
|
||||
$add_train_payment_data->TOC_DepartureDate = $order_info->ts_startdate;
|
||||
$add_train_payment_data->TOC_TicketCost = -$ctrip_backdata->TrainOrderService->TotalRefundAmount;
|
||||
$add_train_payment_data->FOI_TrainNetOrderNo=null;
|
||||
//print_r($add_train_payment_data);die();
|
||||
$this->ctrip_train_model->add_train_payment($add_train_payment_data);
|
||||
return false;
|
||||
}
|
||||
|
||||
//更新订单信息(出票系统)
|
||||
$this->ctrip_train_model->update_orders($update_data);
|
||||
}
|
||||
//print_r($update_data);
|
||||
//print_r(json_decode($back_xml));
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,366 @@
|
||||
<?php
|
||||
/**
|
||||
junjun.php
|
||||
用于测试自动出票中出现的问题。
|
||||
查询coli_sn来测试。
|
||||
*/
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
class junjun extends CI_Controller{
|
||||
|
||||
public function __construct() {
|
||||
header("Content-Type: text/html;charset=utf-8");
|
||||
parent::__construct();
|
||||
$this->config->load('config');
|
||||
$this->order_status_msg=$this->config->item('train_order_status_msg');
|
||||
$this->key=JUHE_TRAIN_API_KEY;
|
||||
$this->cx_api=JUHE_TRAIN_CX_API;
|
||||
$this->dp_api=JUHE_TRAIN_DP_API;
|
||||
$this->qxdd_api=JUHE_TRAIN_CANCEL_API;
|
||||
$this->pay_api=JUHE_TRAIN_PAY_API;
|
||||
$this->refund_api=JUHE_TRAIN_REFUND_API;
|
||||
$this->status_api=JUHE_TRAIN_STATUS_API;
|
||||
$this->code_zw=$this->config->item('train_zw');
|
||||
$this->piaotype=$this->config->item('train_piaotype');
|
||||
$this->passportty=$this->config->item('train_passportty');
|
||||
$this->balance_api = "http://op.juhe.cn/trainTickets/balance.php";//余额
|
||||
$this->load->model("BIZ_train_model");//加载模型
|
||||
}
|
||||
|
||||
public function test(){
|
||||
$arr = array('','');
|
||||
print_r($arr);
|
||||
echo count($arr);
|
||||
if(!empty($arr)){
|
||||
echo '123';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function index(){
|
||||
$this->ticketype = 1;
|
||||
//筛选出能自动出票的订单
|
||||
$auto_pool = $this->BIZ_train_model->auto_check_ticket();
|
||||
//print_r($auto_pool);
|
||||
$auto_pool = array('0'=>(object)array('COLD_SN'=>'488096935','coli_id'=>'180824444','COLI_State'=>'13'));
|
||||
//print_r($auto_pool);
|
||||
//创建一个不允许自动出票的国际火车票数组
|
||||
$nation_train = array('K19', 'K23', 'Z8701', 'Z8702', 'Z97', 'Z98', 'Z99', 'Z100', 'K9795');
|
||||
|
||||
//创建黑名单
|
||||
$black_list = $this->config->item('black_list');
|
||||
$string = '';
|
||||
foreach($auto_pool as $item){
|
||||
$this->ticketype = 1;
|
||||
$back_message = '';
|
||||
$cold_sn = $item->COLD_SN;
|
||||
$coli_id = $item->coli_id;
|
||||
$back_data = 1;
|
||||
|
||||
$people_arr = $this->BIZ_train_model->biz_people($cold_sn);
|
||||
$train_info = $this->BIZ_train_model->get_biz_foi($cold_sn);
|
||||
/*
|
||||
if($item->COLD_SPFS > 1){
|
||||
//寄送票
|
||||
$back_data = 0;
|
||||
$back_message .= '-邮寄不自动出票';
|
||||
}
|
||||
*/
|
||||
//乘客人数大于5人不出票
|
||||
if(count($people_arr) > 5){
|
||||
$back_data = 0;
|
||||
$back_message .= '-乘客人数大于5不自动出票';
|
||||
}
|
||||
|
||||
//护照号如果在黑名单的就不自动出票
|
||||
foreach($people_arr as $people_info){
|
||||
if(in_array($people_info->BPE_Passport,$black_list)){
|
||||
$back_data = 0;
|
||||
$back_message .= '-此用户为黑名单用户,不自动出票';
|
||||
}
|
||||
|
||||
if(strlen($people_info->BPE_Passport) >= 18){
|
||||
$back_data = 0;
|
||||
$back_message .= '-护照位数大于18不自动出票';
|
||||
}
|
||||
}
|
||||
|
||||
//单张票价不能大于1000人民币
|
||||
if($train_info[0]->adultcost > 1000){
|
||||
$back_data = 0;
|
||||
$back_message .= '-单价大于1000不自动出票';
|
||||
}
|
||||
|
||||
//如果为国际火车票就不出票
|
||||
if(in_array($train_info[0]->FlightsNo, $nation_train)){
|
||||
$back_data = 0;
|
||||
$back_message .= '-国际火车票不自动出票';
|
||||
}
|
||||
|
||||
//无座的订单不做出票
|
||||
if($train_info[0]->Aircraft == 'WZ'){
|
||||
$back_data = 0;
|
||||
$back_message .= '-无座不自动出票';
|
||||
}
|
||||
|
||||
//香港火车不自动出票
|
||||
if($train_info[0]->ArrivalAirport == 'XJA' || $train_info[0]->DepartAirport == 'XJA'){
|
||||
$back_data = 0;
|
||||
$back_message .= '-香港火车不自动出票';
|
||||
}
|
||||
//print_r($train_info);
|
||||
|
||||
//如果刚好是第三十天的订单
|
||||
if(($item->COLI_State == '8' || $item->COLI_State == '63')){
|
||||
$this->ticketype = 3;
|
||||
$time_obj = $this->BIZ_train_model->get_saletime($train_info['0']->DepartAirport_cn);
|
||||
if(!empty($time_obj)){
|
||||
$saletime = strtotime($time_obj->TST_saletime);
|
||||
$now_time = time();
|
||||
$sale_diff = (time() - $saletime) / 3600;
|
||||
if($sale_diff > 1){
|
||||
$back_data = 0;
|
||||
$back_message .= '-超过抢票时间';
|
||||
}else if($sale_diff <0){
|
||||
$back_data = 0;
|
||||
$back_message .= '-未到抢票时间';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($back_data == 0){
|
||||
$string .= '<tr><td>汉特订单号:'.$coli_id.'('.$cold_sn.')'.$back_message.'</td></tr>';
|
||||
}else{
|
||||
//单个订单提交
|
||||
//$this->submit_juhe_order($cold_sn,$coli_id);
|
||||
$string .= '<tr><td>汉特订单号:'.$coli_id.'('.$cold_sn.')可以自动出票</td></tr>';
|
||||
}
|
||||
}
|
||||
print_r('<table border="1">'.$string.'</table>');
|
||||
}
|
||||
|
||||
|
||||
public function submit_juhe_order($cold_sn,$coli_id) {
|
||||
$this->load->model("BIZ_train_model");
|
||||
$cold_sn='488079918';//488084043
|
||||
//$cold_sn=$this->input->get("order");
|
||||
//$bpe_sn=$this->input->get("people");
|
||||
//$selectseat=$this->input->get("selectseat");
|
||||
//$bpe_sn = '(473118360);
|
||||
$data = array();
|
||||
$rebakc=array();//返回数据
|
||||
$rebakc["status"]=0;
|
||||
$rebakc["mes"]="";
|
||||
if(!is_numeric($cold_sn)){
|
||||
$rebakc["mes"]="订单号是数字";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
if(empty($bpe_sn)){
|
||||
$rebakc["mes"]="请选择乘客";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
|
||||
$data['train'] = $this->BIZ_train_model->biz_order_detail($cold_sn);
|
||||
$data['people_list']=$this->BIZ_train_model->in_bpesn_people_info($bpe_sn);
|
||||
if (empty($data['train'])) {
|
||||
//显示错误,找不到车次
|
||||
$rebakc["mes"]="找不到车次";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
|
||||
}
|
||||
if (empty($data['people_list'])) {
|
||||
//显示错误,找不到用户信息
|
||||
$rebakc["mes"]="找不到乘客信息";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (count($data['people_list']) > 5) {
|
||||
//显示错误,用户超过五个
|
||||
$rebakc["mes"]="乘客不能超过五个";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
$db_train_zw = $this->config->item('db_train_zw');
|
||||
$train_zw = $this->config->item('train_zw');
|
||||
$zwcode = $db_train_zw[$data['train']->Aircraft]; //座位简码
|
||||
$zwname = $train_zw[$db_train_zw[$data['train']->Aircraft]]; //座位名称
|
||||
$black_list = $this->config->item('black_list');
|
||||
|
||||
$passengers="";
|
||||
foreach ($data['people_list'] as $key => $item) {
|
||||
|
||||
//乘客姓名
|
||||
$passengersename = $item->BPE_FirstName.$item->BPE_MiddleName.$item->BPE_LastName;
|
||||
//将特殊字符转换为正常字符以便于出票
|
||||
$passengersename = $this->chk_sp_name($passengersename);
|
||||
//乘客类型
|
||||
switch ($item->BPE_GuestType) {
|
||||
case 1:
|
||||
$piaotype = 1;
|
||||
$piaotypename = "成人票";
|
||||
break;
|
||||
case 2:
|
||||
$piaotype = 2;
|
||||
$piaotypename = "儿童票";
|
||||
break;
|
||||
default://外国人应该就两种票吧
|
||||
$piaotype = 1;
|
||||
$piaotypename = "成人票";
|
||||
break;
|
||||
}
|
||||
|
||||
switch ($item->BPE_PassportType){
|
||||
case 'Chinese ID':
|
||||
$passporttypeseid = "1";
|
||||
$passporttypeseidname = "二代身份证";
|
||||
break;
|
||||
case 'Travel Permit from Hong Kong / Macau':
|
||||
$passporttypeseid = "C";
|
||||
$passporttypeseidname = "港澳通行证";
|
||||
break;
|
||||
case 'Travel Permit from Taiwan':
|
||||
$passporttypeseid = "G";
|
||||
$passporttypeseidname = "台湾通行证";
|
||||
break;
|
||||
default :
|
||||
$passporttypeseid = "B";
|
||||
$passporttypeseidname = "护照";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
$passportseno = str_replace(' ','',$item->BPE_Passport);
|
||||
|
||||
//添加一个判断护照号是否在黑名单
|
||||
if(in_array($passportseno,$black_list)){
|
||||
$rebakc["mes"]="乘客为黑名单用户";
|
||||
echo json_encode($rebakc);
|
||||
return false;
|
||||
}
|
||||
|
||||
$passengers.=',{"passengerid":' . ( ++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"1","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '"}';
|
||||
}
|
||||
$passengers.="]";
|
||||
$passengers = substr($passengers, 1);
|
||||
$passengers = "[" . $passengers;
|
||||
$url=$this->dp_api;
|
||||
if(empty($selectseat)){
|
||||
$post_data=array(
|
||||
"key"=>$this->key,
|
||||
"user_orderid"=>$cold_sn,//自定义订单号
|
||||
"train_date"=>substr($data["train"]->DepartureDate, 0, 10),
|
||||
"is_accept_standing"=>"no",
|
||||
"from_station_name"=>$data["train"]->DepartAirport_cn,
|
||||
"from_station_code"=>$data["train"]->DepartAirport,
|
||||
"to_station_code"=>$data["train"]->ArrivalAirport,
|
||||
"to_station_name"=>$data["train"]->ArrivalAirport_cn,
|
||||
"passengers"=>$passengers,
|
||||
"checi"=>$data["train"]->FlightsNo
|
||||
);
|
||||
}else{
|
||||
$post_data=array(
|
||||
"key"=>$this->key,
|
||||
"user_orderid"=>$cold_sn,//自定义订单号
|
||||
"train_date"=>substr($data["train"]->DepartureDate, 0, 10),
|
||||
"is_accept_standing"=>"no",
|
||||
"choose_seats"=>$selectseat,
|
||||
"from_station_name"=>$data["train"]->DepartAirport_cn,
|
||||
"from_station_code"=>$data["train"]->DepartAirport,
|
||||
"to_station_code"=>$data["train"]->ArrivalAirport,
|
||||
"to_station_name"=>$data["train"]->ArrivalAirport_cn,
|
||||
"passengers"=>$passengers,
|
||||
"checi"=>$data["train"]->FlightsNo
|
||||
);
|
||||
}
|
||||
|
||||
return $coli_id.'('.$cold_sn.')可以自动出票';
|
||||
}
|
||||
|
||||
//
|
||||
public function count_select(){
|
||||
$obj = $this->BIZ_train_model->get_juhe_select();
|
||||
//print_r($obj);
|
||||
$html = '';
|
||||
$html .= '<table border="1">';
|
||||
$html .= '<tr><th>序号</th><th>聚合订单号</th><th>出票后信息</th><th>订单原信息</th><th>是否自动出票</th></tr>';
|
||||
$i = 1;
|
||||
foreach($obj as $item){
|
||||
$html .= '<tr><td>'.$i.'</td><td>'.$item->JOL_JuheOrder.'</td>';
|
||||
if(isset(json_decode($item->JOL_BackTxt)->passengers)){
|
||||
$passengers = json_decode($item->JOL_BackTxt)->passengers;
|
||||
}else{
|
||||
$passengers = '';
|
||||
}
|
||||
$ex_obj = '';
|
||||
if(!empty($passengers)){
|
||||
foreach($passengers as $pass_tiem){
|
||||
$ex_obj .= $pass_tiem->cxin;
|
||||
}
|
||||
}
|
||||
if($item->JOL_IsAuto == '1'){
|
||||
$item->JOL_IsAuto ='是';
|
||||
}else{
|
||||
$item->JOL_IsAuto ='否';
|
||||
}
|
||||
$html .= '<td>'.$ex_obj.'</td><td>'.$item->FOI_SelectedSeat.'</td><td>'.$item->JOL_IsAuto.'</td></tr>';
|
||||
$i++;
|
||||
}
|
||||
$html .= '</table>';
|
||||
echo $html;
|
||||
}
|
||||
|
||||
public function update_juheorder(){
|
||||
print_r($this->BIZ_train_model->test());
|
||||
}
|
||||
|
||||
public function update_state($cold_sn){
|
||||
//先更新当前订单
|
||||
$flag = $this->BIZ_train_model->update_cold_state($cold_sn);
|
||||
if(!$flag){
|
||||
log_message('error','状态更新失败:'.$cold_sn);
|
||||
}else{
|
||||
$coli_sn = $this->BIZ_train_model->cold_sn_get_coli_sn($cold_sn);
|
||||
$coli_sn = $coli_sn[0]->COLD_COLI_SN;
|
||||
$all_train = $this->BIZ_train_model->get_alltrain($coli_sn);
|
||||
$all_count = count($all_train);
|
||||
$success_count = 0;
|
||||
foreach($all_train as $value){
|
||||
if($value->COLD_State == '61'){
|
||||
$success_count++;
|
||||
}
|
||||
}
|
||||
if($all_count == $success_count){
|
||||
$this->BIZ_train_model->update_coli_state('61',$coli_sn);
|
||||
}else{
|
||||
$this->BIZ_train_model->update_coli_state('62',$coli_sn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//测试发送邮件
|
||||
public function test_send(){
|
||||
$phone = '18677367018';
|
||||
$name = 'sw';
|
||||
$coli_id = '780258';
|
||||
$email = 'sw@hainatravel.com';
|
||||
|
||||
$mail_data = array();
|
||||
$mail_data['name'] = $name;
|
||||
$mail_data['phone'] = $phone;
|
||||
$mailtitle = 'Signup successfully on China Highlights Customer Center';
|
||||
$mail_body = $this->load->view('train_help',$mail_data,true);
|
||||
$fromName = 'China Highlights Customer Center';
|
||||
$fromEmail = 'sharon@chinahighlights.net';
|
||||
$toName = $name;
|
||||
$toEmail = $email;
|
||||
$this->load->model("Sendmail_model");
|
||||
$this->Sendmail_model->SendMailToTable($fromName, $fromEmail, $toName, $toEmail, $mailtitle, $mail_body);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
@ -0,0 +1,251 @@
|
||||
<?php
|
||||
if (!defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
|
||||
class Tuniu_callback extends CI_Controller{
|
||||
public function __construct(){
|
||||
// header("Content-Type: text/html;charset=utf-8");
|
||||
parent::__construct();
|
||||
$this->load->library('Des');
|
||||
$this->load->model("BIZ_train_model");
|
||||
$this->load->model("tuniu_model");
|
||||
}
|
||||
/*
|
||||
接收占位回调
|
||||
*/
|
||||
public function book(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
log_message('error','预定占座回调:'.$back_json);
|
||||
$back_data_one = json_decode(base64_decode($back_json));
|
||||
$back_data = array();
|
||||
$crypt = new DES();
|
||||
$mstr = $crypt->decrypt($back_data_one->data,TUNIU_KEY);
|
||||
$back_data_two = json_decode($mstr);
|
||||
|
||||
$back_data['errorMsg'] = $back_data_one->errorMsg;
|
||||
$back_data['returnCode'] = $back_data_one->returnCode;
|
||||
$back_data['retailOrderId'] = $back_data_two->retailOrderId;
|
||||
$back_data['orderId'] = $back_data_two->orderId;
|
||||
$back_data['orderAmount'] = $back_data_two->orderAmount;
|
||||
$back_data['fromStationCode'] = $back_data_two->fromStationCode;
|
||||
$back_data['fromStationName'] = $back_data_two->fromStationName;
|
||||
$back_data['toStationCode'] = $back_data_two->toStationCode;
|
||||
$back_data['toStationName'] = $back_data_two->toStationName;
|
||||
$back_data['cheCi'] = $back_data_two->cheCi;
|
||||
$back_data['backtxt'] = $mstr;
|
||||
$back_data['status'] = '2';
|
||||
//更新预定异步回调信息
|
||||
$this->tuniu_model->book_tuniu_order($back_data);
|
||||
if($back_data['returnCode'] == '231000'){
|
||||
$url = 'http://www.mycht.cn/info.php/apps/train/tuniu_train/confirm_ticket/'.$back_data['retailOrderId'].'/'.$back_data['orderId'];
|
||||
echo $url;
|
||||
$this->get_http($url,'GET');
|
||||
}
|
||||
}
|
||||
|
||||
public function test(){
|
||||
$back_json = "eyJlcnJvck1zZyI6IuihjOeoi+WGsueqgSIsInJldHVybkNvZGUiOjMwMywiZGF0YSI6IjBwZE4zaWlUWE1ISzFPRndGL2Evei9vZzc1dVZsSVpwVzBKTFdnS3dybUlaYWRUSnhEVmNZeW5ib1BZWFBNaWhJazVEVzBhYlBQbDhcbitXdWFCUUVsbmlzcWhBN1ZJSndEZEVvN0JCR0t4RXZ2K0wya090cEkvV01aK0JGTEFJc1hyYi9ZMWM5MTZnUjhIOUROYTdYdXpUV29cbkpzdmI0eTF6aUI5U3BIYWFPM2pQWXZyRHAvMUJCZndPanRuQVNVK2plcGNyMkZoekVJRDRMOHpRV0hMSFNRc2ZoVzVDeHpoQ1J0VUhcbmNFc0tpL212ZEVRcGFEb0diZE1JOWxlWUp4TFZWT0xrNUdCbEh0cGVSNTVBNTNtckVJbExiYU9TNGlRMURCQjUrUjAydzNDYldreHpcblcwWXFFT2U0Znc4R2U2QksyczFlVlYwc1VMSU90YzBZTU00TU4xeUpITHFMdGxieHFKclhjZTJjNi9WYTNjMnJDSk5DN1ltZ004NWVcbi9wYTk2VHNhaytoYUtSNUFncUQ4OXd4aUhETkNlQmEzRHpXMlh2NUZiYVRUc3RJcHRYbTZEaHo5U1Q3ZkJkcTlzYkhSMHdqMlY1Z25cbkV0VWVSR1F5a1hadTJqUDBaZjc5YTFHaCJ9";
|
||||
//print_r(base64_encode($back_json));
|
||||
$back_data = $this->tuniu_strdecrypt($back_json);
|
||||
print_r($back_data);
|
||||
//echo (count($back_data->data->passengers)*5);
|
||||
}
|
||||
|
||||
/*
|
||||
接收取消占位回调
|
||||
*/
|
||||
public function cancelbook(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
$sn = 5830;
|
||||
log_message('error','取消站位'.$back_json);
|
||||
}
|
||||
|
||||
/*
|
||||
接收确认出票回调
|
||||
*/
|
||||
public function confirm(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
//$back_json = 'eyJlcnJvck1zZyI6IuWkhOeQhuaIluaTjeS9nOaIkOWKnyIsInJldHVybkNvZGUiOjIzMTAwMCwiZGF0YSI6eyJyZXRhaWxPcmRlcklkIjoiNDg4MDkzNDQ4XzE1MzM3OTQwMDIiLCJvcmRlcklkIjoiMTE4NDUxMjM5NyJ9fQ==';
|
||||
$back_data = json_decode(base64_decode($back_json));
|
||||
//print_r($back_data);
|
||||
//die();
|
||||
log_message('error','确认出票回调:'.$back_json);
|
||||
$data = array();
|
||||
$data['errorMsg'] = $back_data->errorMsg;
|
||||
$data['returnCode'] = $back_data->returnCode;
|
||||
$data['retailOrderId'] = $back_data->data->retailOrderId;
|
||||
$data['orderId'] = $back_data->data->orderId;
|
||||
$data['confirmtxt'] = $back_json;
|
||||
|
||||
if($back_data->returnCode != '231000'){
|
||||
$data['status'] = '1';
|
||||
}else{
|
||||
$data['status'] = '4';
|
||||
//通过订单号去获取预定时返回的信息
|
||||
$bookobj = $this->tuniu_model->get_tuniuorder_info($data['retailOrderId'],$data['orderId']);
|
||||
$bookinfo = json_decode($bookobj[0]->tol_booktxt);
|
||||
$obj = explode('_',$back_data->data->retailOrderId);
|
||||
$add_train_order_data->TOC_COLD_SN = $obj[0];
|
||||
$add_train_order_data->TOC_Memo = $back_data->data->orderId;
|
||||
$add_train_order_data->TOC_TrainNumber = $bookinfo->cheCi;
|
||||
$add_train_order_data->TOC_DepartureDate = $bookinfo->trainDate;
|
||||
$add_train_order_data->TOC_TicketCost = $bookinfo->orderAmount;
|
||||
$add_train_order_data->FOI_TrainNetOrderNo = $bookinfo->orderNumber;
|
||||
$add_train_order_data->poundage = (count($bookinfo->passengers)*3)."";
|
||||
$this->tuniu_model->add_grab_order($add_train_order_data);
|
||||
}
|
||||
$this->tuniu_model->confirm_tuniu_order($data);
|
||||
}
|
||||
|
||||
/*
|
||||
接收退票回调
|
||||
*/
|
||||
public function return_ticket(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
log_message('error','退票回调:'.$back_json);
|
||||
$back_data = $this->tuniu_strdecrypt($back_json);
|
||||
//更新途牛订单列表信息
|
||||
$updata_data = array();
|
||||
$updata_data['retailOrderId'] = $back_data->data->retailOrderId;
|
||||
$updata_data['returnCode'] = $back_data->returnCode;
|
||||
$updata_data['errorMsg'] = $back_data->errorMsg;
|
||||
$updata_data['returntxt'] = json_encode($back_data);
|
||||
$this->tuniu_model->return_tuniu_order($updata_data);
|
||||
|
||||
//添加瀚特信息(有问题)
|
||||
/*$add_train_order_data = new stdClass();
|
||||
$obj = explode('_',$back_data->data->retailOrderId);
|
||||
$add_train_order_data->TOC_COLD_SN = $obj[0];
|
||||
$add_train_order_data->TOC_Memo = $back_data->data->orderId." ".$back_data->data->returnTickets->passportNo;
|
||||
$add_train_order_data->TOC_TrainNumber = $back_data->data->cheCi;
|
||||
$add_train_order_data->TOC_TicketCost = $back_data->data->returnMoney;
|
||||
$add_train_order_data->FOI_TrainNetOrderNo = null;
|
||||
$this->tuniu_model->add_return_order($add_train_order_data);*/
|
||||
}
|
||||
|
||||
/*
|
||||
接收线下退款回调
|
||||
*/
|
||||
public function return_cash(){
|
||||
echo '回调接收线下退款数据';
|
||||
}
|
||||
|
||||
/*
|
||||
接收抢票预定(占位)
|
||||
*/
|
||||
public function grabTicketBook(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
$back_data = $this->tuniu_strdecrypt($back_json);
|
||||
log_message('error','抢票预定:'.$back_json);
|
||||
$update_data = array();
|
||||
if($back_data->returnCode == '231000'){
|
||||
$update_data['errorMsg'] = $back_data->errorMsg;
|
||||
$update_data['returnCode'] = $back_data->returnCode;
|
||||
$update_data['retailOrderId'] = $back_data->data->retailOrderId;
|
||||
$update_data['orderId'] = $back_data->data->orderId;
|
||||
$update_data['fromStationCode'] = $back_data->data->fromStationCode;
|
||||
$update_data['fromStationName'] = $back_data->data->fromStationName;
|
||||
$update_data['toStationCode'] = $back_data->data->toStationCode;
|
||||
$update_data['toStationName'] = $back_data->data->toStationName;
|
||||
$update_data['cheCi'] = $back_data->data->cheCi;
|
||||
$update_data['orderAmount'] = $back_data->data->orderAmount;
|
||||
$update_data['booktxt'] = json_encode($back_data);
|
||||
//更新数据库信息
|
||||
$this->tuniu_model->grab_tuniu_order($update_data);
|
||||
|
||||
//添加瀚特信息
|
||||
$add_train_order_data = new stdClass();
|
||||
$obj = explode('_',$back_data->data->retailOrderId);
|
||||
$add_train_order_data->TOC_COLD_SN = $obj[0];
|
||||
$add_train_order_data->TOC_Memo = $back_data->data->orderId;
|
||||
$add_train_order_data->TOC_TrainNumber = $back_data->data->cheCi;
|
||||
$add_train_order_data->TOC_DepartureDate = $back_data->data->trainDate;
|
||||
$add_train_order_data->TOC_TicketCost = $back_data->data->orderAmount;
|
||||
$add_train_order_data->FOI_TrainNetOrderNo = $back_data->data->orderNumber;
|
||||
$add_train_order_data->poundage = (count($back_data->data->passengers)*5)."";
|
||||
$this->tuniu_model->add_grab_order($add_train_order_data);
|
||||
//print_r($update_data['booktxt']);
|
||||
}else{
|
||||
$update_data['retailOrderId'] = $back_data->data->retailOrderId;
|
||||
$update_data['errorMsg'] = $back_data->errorMsg;
|
||||
$update_data['returnCode'] = $back_data->returnCode;
|
||||
$this->tuniu_model->update_status($update_data);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
接收取消抢票
|
||||
*/
|
||||
public function cancelTicketBook(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
log_message('error','取消抢票:'.$back_json);
|
||||
$back_data = json_decode(base64_decode($back_json));
|
||||
$update_data = array();
|
||||
$update_data['errorMsg'] = $back_data->errorMsg;
|
||||
$update_data['returnCode'] = $back_data->returnCode;
|
||||
$update_data['orderId'] = $back_data->data->orderId;
|
||||
$update_data['retailOrderId'] = $back_data->data->retailOrderId;
|
||||
$this->tuniu_model->cancelgragticket($update_data);
|
||||
}
|
||||
|
||||
/*
|
||||
接收改签预定
|
||||
*/
|
||||
public function change_occupy(){
|
||||
echo '回调接收改签预定数据';
|
||||
}
|
||||
|
||||
/*
|
||||
接收改签确认
|
||||
*/
|
||||
public function change_confirm(){
|
||||
echo '回调接收改签确认数据';
|
||||
}
|
||||
|
||||
/*
|
||||
接收改签预定
|
||||
*/
|
||||
public function change_cancel(){
|
||||
echo '回调接收改签取消数据';
|
||||
}
|
||||
|
||||
//解密方法
|
||||
public function tuniu_strdecrypt($str){
|
||||
$back_data_one = json_decode(base64_decode($str));
|
||||
$back_data = array();
|
||||
$crypt = new DES();
|
||||
$mstr = $crypt->decrypt($back_data_one->data,TUNIU_KEY);
|
||||
$back_data_one->data = json_decode($mstr);
|
||||
return $back_data_one;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//发送请求函数
|
||||
public function get_http($url, $data = '', $method = 'GET') {
|
||||
$curl = curl_init(); // 启动一个CURL会话
|
||||
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
|
||||
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
|
||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
|
||||
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
|
||||
if ($method == 'POST' && !empty($data)) {
|
||||
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
|
||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
|
||||
}
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 45); // 设置超时限制防止死循环
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
|
||||
$tmpInfo = curl_exec($curl); // 执行操作
|
||||
$errno = curl_errno($curl);
|
||||
if ($errno !== 0) {
|
||||
return false;
|
||||
echo $errno . curl_error($curl); //记录错误日志
|
||||
}
|
||||
curl_close($curl); //关闭CURL会话
|
||||
return $tmpInfo; //返回数据
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
//特殊字符转换
|
||||
function chk_sp_name($name){
|
||||
$name = str_replace(
|
||||
array('á', 'é', 'í', 'ó', 'ú', '?', 'á', 'é', 'í', 'ó', 'ú', '?',' ','/',' ',','),
|
||||
array('a', 'e', 'i', 'o', 'u', 'n', 'A', 'E', 'I', 'O', 'U', 'N','','','',''),
|
||||
$name
|
||||
);
|
||||
return substr(strtoupper($name),0,30);
|
||||
}
|
||||
|
||||
//发送请求函数
|
||||
function GetPost_http($url, $data = '', $method = 'GET') {
|
||||
$curl = curl_init(); // 启动一个CURL会话
|
||||
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
|
||||
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
|
||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
|
||||
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
|
||||
if ($method == 'POST' && !empty($data)) {
|
||||
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
|
||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
|
||||
}
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 40); // 设置超时限制防止死循环
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT_MS, 40000); // 设置超时限制防止死循环
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
|
||||
$tmpInfo = curl_exec($curl); // 执行操作
|
||||
$errno = curl_errno($curl);
|
||||
if ($errno !== 0) {
|
||||
log_message('error', 'ctripost'.$errno.curl_error($curl));
|
||||
}
|
||||
curl_close($curl); //关闭CURL会话
|
||||
return $tmpInfo; //返回数据
|
||||
}
|
||||
|
||||
?>
|
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
class Des
|
||||
{
|
||||
|
||||
function encrypt($string,$key)
|
||||
{
|
||||
$size = mcrypt_get_block_size('des','ecb');
|
||||
//$string = mb_convert_encoding($string, 'GBK', 'UTF-8');
|
||||
$string = $this->pkcs5_pad($string, $size);
|
||||
$td = mcrypt_module_open('des', '', 'ecb', '');
|
||||
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
|
||||
@mcrypt_generic_init($td, $key, $iv);
|
||||
$data = mcrypt_generic($td, $string);
|
||||
mcrypt_generic_deinit($td);
|
||||
mcrypt_module_close($td);
|
||||
$data = base64_encode($data);
|
||||
return $data;
|
||||
}
|
||||
|
||||
function decrypt($string,$key)
|
||||
{
|
||||
$string = base64_decode($string);
|
||||
$td = mcrypt_module_open('des', '', 'ecb', '');
|
||||
//使用MCRYPT_DES算法,cbc模式
|
||||
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
|
||||
$ks = mcrypt_enc_get_key_size($td);
|
||||
@mcrypt_generic_init($td, $key, $iv);
|
||||
//初始处理
|
||||
$decrypted = mdecrypt_generic($td, $string);
|
||||
//解密
|
||||
mcrypt_generic_deinit($td);
|
||||
//结束
|
||||
mcrypt_module_close($td);
|
||||
|
||||
$result = $this->pkcs5_unpad($decrypted);
|
||||
//$result = mb_convert_encoding($result, 'UTF-8', 'GBK');
|
||||
return $result;
|
||||
}
|
||||
|
||||
function pkcs5_pad($text, $blocksize)
|
||||
{
|
||||
$pad = $blocksize - (strlen($text) % $blocksize);
|
||||
return $text . str_repeat(chr($pad), $pad);
|
||||
}
|
||||
|
||||
function pkcs5_unpad($text)
|
||||
{
|
||||
$pad = ord($text{strlen($text) - 1});
|
||||
if ($pad > strlen($text)) {
|
||||
return false;
|
||||
}
|
||||
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
|
||||
return false;
|
||||
}
|
||||
return substr($text, 0, -1 * $pad);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
class tuniuprice_model extends CI_Model {
|
||||
|
||||
function __construct() {
|
||||
parent::__construct();
|
||||
$this->HT = $this->load->database('HT', TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">Dear <?php echo $toname?>,</p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;"> Thank you for your booking (order number <?php echo $coli_id?>), we have received your payment of USD<?php echo $price->GAI_SQJE?>. </p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;"> Due to the heavy traffic flow of data, the system failed to automatically issue your ticket(s).</p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">Your travel advisor will purchase your train ticket(s) manually. You will receive an email within half a working day (Our time now: <strong><?php echo date('H:i').' '.date('a');?></strong>, <?php echo date('D');?>,<?php echo date('F').' '.date('d').','.date('Y');?> GMT+8).Should you have any questions or concerns with regards to your train booking, please do not hesitate to contact me at <a href="mailto:<?php echo $emailarr[0]?>"><?php echo $emailarr[0]?></a>;<a href="mailto:<?php echo $emailarr[1]?>"><?php echo $emailarr[1]?></a> or telephone <?php echo $operator[0]->tel;?>. </p>
|
||||
<?php foreach($train_info as $item){
|
||||
echo '<table border="0" cellspacing="0" cellpadding="0" width="60%">';
|
||||
echo '<tr><th width="17%" style="font-family:Verdana, Geneva, sans-serif;font-size:14px; color:#a31022; background:#e6e6e6; text-align:left; padding:10px;">Train No. </th>';
|
||||
echo '<td width="83%" style="font-family:Verdana, Geneva, sans-serif;font-size:14px; text-align:left; padding:10px; border-bottom:1px solid #d1d1d1;">'.$item->FlightsNo.'</td></tr>';
|
||||
echo '<tr><th style="font-family:Verdana, Geneva, sans-serif; font-size:14px; color:#a31022; background:#e6e6e6; text-align:left; padding:10px;">Departure </th>';
|
||||
echo '<td style="font-family:Verdana, Geneva, sans-serif; font-size:14px; text-align:left; padding:10px; border-bottom:1px solid #d1d1d1;">'.$item->DepartureTime.', '.$item->DepartureCity.' Station(in Chinese '.$item->DepartAirport_cn.'火车站) </td></tr>';
|
||||
echo '<tr><th style="font-family:Verdana, Geneva, sans-serif; font-size:14px; color:#a31022; background:#e6e6e6; text-align:left; padding:10px;">Arrival </th><td style="font-family:Verdana, Geneva, sans-serif; font-size:14px; text-align:left; padding:10px; border-bottom:1px solid #d1d1d1;">'.$item->ArrivalTime.', '.$item->ArrivalCity.'(in Chinese'. $item->ArrivalAirport_cn.'火车站) </td></tr>';
|
||||
echo '<tr><th style="font-family:Verdana, Geneva, sans-serif; font-size:14px; color:#a31022; background:#e6e6e6; text-align:left; padding:10px;">Class </th><td style="font-family:Verdana, Geneva, sans-serif; font-size:14px; text-align:left; padding:10px; border-bottom:1px solid #d1d1d1;">'.$item->Cabin.'</td></tr>';
|
||||
echo '<tr><th style="font-family:Verdana, Geneva, sans-serif; font-size:14px; color:#a31022; background:#e6e6e6; text-align:left; padding:10px;">Passenger(s) </th>';
|
||||
echo '<td style="font-family:Verdana, Geneva, sans-serif; font-size:14px; text-align:left; padding:10px; border-bottom:1px solid #d1d1d1;">';
|
||||
if($adult>0){echo $adult.' adult(s)<br/> ';}
|
||||
if($chlid>0){echo $chlid.' chlid(s)<br/> ';}
|
||||
if($baby>0){echo $baby.' baby(s)<br/> ';}
|
||||
$i=0;
|
||||
foreach($allpeople as $item){
|
||||
echo ++$i.'.'.$item->BPE_FirstName.$item->BPE_MiddleName.$item->BPE_LastName.' , passport number '.$item->BPE_Passport.'<br>';
|
||||
}
|
||||
echo '</tr></table>';
|
||||
echo '<p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">Regards <br />';
|
||||
echo $operator[0]->Name.'<br/>Travel Advisor<br/>';
|
||||
echo 'Telephone: (Office)'.$operator[0]->tel.', M: '.$operator[0]->Mobile.',';
|
||||
echo 'Email: <a href="mailto:'.$emailarr[0].'">'.$emailarr[0].'</a>;<a href="mailto:'.$emailarr[1].'">'.$emailarr[1].'</a>; </p>';
|
||||
}?>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,23 @@
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">交易记录导出 <a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/train/index/ht_order_list');?>">订单列表>></a> </h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form style="width: 500px;float: left;" action="" method="post">
|
||||
<input type="text" name="from_date" class="date" value="">至
|
||||
<input type="text" name="to_date" class="date" value="">
|
||||
<button type="submit" id="sub" class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-download-alt"></span> 导出</button>
|
||||
</form>
|
||||
<p style="margin: 0 0 10px; width: 200px; float: left; line-height: 30px;">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(".date").datepicker({
|
||||
'format': 'yyyy-m-d',
|
||||
'autoclose': true
|
||||
});
|
||||
</script>
|
@ -0,0 +1,2 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">Dear <?php echo $name?>,</p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">Thank you for your interest in China Highlights.</p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">Your account has been created with your phone number : <?php echo $phone?></p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">If you have any questions, please don't hesitate to contact us : <a href="https://www.chinahighlights.com/contactus/">https://www.chinahighlights.com/contactus/</a></p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">Thanks,</p><p style="font-family:Verdana, Geneva, sans-serif; font-size:14px; line-height:24px; margin-bottom:12px;">The China Highlights Team</p>
|
||||
</body></html>
|
@ -0,0 +1,137 @@
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">翰特订单号 <a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/train/tuniu_train/ht_order_list');?>">订单列表>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/train/index/export');?>">导出交易记录>></a> <span style="margin-left:200px;">途牛抢票测试版</span></h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form style="width: 300px;float: left;" action="" method="post">
|
||||
<input type="text" name="ht_order" value="<?php echo isset($cols_id)?$cols_id:""; ?>">
|
||||
<button type="submit" id="sub" class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-download-alt"></span> 获取信息</button>
|
||||
</form>
|
||||
<p style="margin: 0 0 10px; width: 200px; float: left; line-height: 30px;">外联:<span><?php if(!empty($wl)){echo $wl[0]->OPI_Name;}?></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">火车订单信息</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php if(!empty($info)):?>
|
||||
<?php $num=1; foreach($info as $v):?>
|
||||
<table class="table table-bordered table-hover" style="text-align:center;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center;">序号</th>
|
||||
<th style="text-align:center;">车次</th>
|
||||
<th style="text-align:center;">座位</th>
|
||||
<th style="text-align:center;">出发城市</th>
|
||||
<th style="text-align:center;">抵达城市</th>
|
||||
<th style="text-align:center;">发车日期</th>
|
||||
<th style="text-align:center;">发车时间</th>
|
||||
<th style="text-align:center;">抵达时间</th>
|
||||
<th style="text-align:center;">票价</th>
|
||||
<th style="text-align:center;">是否提交过</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td><?php echo $num++;?></td>
|
||||
<td><?php echo $v->train[0]->FlightsNo;?></td>
|
||||
<td><?php echo $v->train[0]->Cabin;?></td>
|
||||
<td><?php echo $v->train[0]->DepartureCity;?></td>
|
||||
<td><?php echo $v->train[0]->ArrivalCity;?></td>
|
||||
<td><?php echo $v->train[0]->DepartureDate;?></td>
|
||||
<td><?php echo $v->train[0]->DepartureTime;?></td>
|
||||
<td><?php echo $v->train[0]->ArrivalTime;?></td>
|
||||
<td><?php echo $v->train[0]->adultcost;?></td>
|
||||
<td><?php echo !empty($v->status)?"否":"<span style='color:green;'>是</span>";?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="11">
|
||||
<table class="table table-condensed table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center;"><input class="check_people" type="checkbox" /></th>
|
||||
<th style="text-align:center;">序号</th>
|
||||
<th style="text-align:center;">姓名</th>
|
||||
<th style="text-align:center;">护照</th>
|
||||
<th style="text-align:center;">年龄类型</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($v->people as $key=>$p): ?>
|
||||
<tr>
|
||||
<td><input name="" type="checkbox" value="<?php echo $p->BPE_SN;?>" /></td>
|
||||
<td><?php echo $key+1;?></td>
|
||||
<td class="people_name"><?php echo $p->BPE_FirstName." ".$p->BPE_MiddleName." ".$p->BPE_LastName;?></td>
|
||||
<td><?php echo $p->BPE_Passport;?></td>
|
||||
<td><?php echo $p->BPE_GuestType==1?"成人":($p->BPE_GuestType==2?"儿童":"婴儿");?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr style="text-align:;">
|
||||
<td>
|
||||
<button type="button" class="btn btn-success checked_pay" data-order="<?php echo $v->train[0]->FOI_COLD_SN;?>">抢票</button>
|
||||
</td>
|
||||
<td colspan="4" class="biaoqian"><span class="back_mes" style="color:red;line-height: 30px;"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="back_<?php echo $v->train[0]->FOI_COLD_SN;?>" style="display:none;">
|
||||
<td colspan="5">
|
||||
快捷订票处理结果:<span style="color:red;"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endforeach;endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(".check_people").click(function(){
|
||||
if($(this).is(":checked")){
|
||||
$(this).parent().parent().parent().parent().find("input[type=checkbox]").attr("checked","checked");
|
||||
}else{
|
||||
$(this).parent().parent().parent().parent().find("input[type=checkbox]").removeAttr("checked");
|
||||
}
|
||||
});
|
||||
$(".checked_pay").click(function(){
|
||||
var url2="<?php echo site_url('apps/train/tuniu_train/grabTicketBook?').'order=';?>";
|
||||
var checkbox=$(this).parent().parent().parent().find(":checked");
|
||||
var people_sn="";
|
||||
checkbox.each(function(i){
|
||||
people_sn+=","+$(this).val();
|
||||
});
|
||||
people_sn=people_sn.substring(1);
|
||||
var coli_id = $('input[name="ht_order"]').val();
|
||||
url2+=$(this).attr("data-order")+"&people="+people_sn+"&coli_id="+coli_id;
|
||||
|
||||
var THIS=$(this);
|
||||
THIS.parent().parent().find(".back_mes").html(" ");//清空提示
|
||||
$.ajax({
|
||||
url:url2,
|
||||
beforeSend:function(data){
|
||||
//THIS.html("处理中...");
|
||||
//THIS.attr("disabled","disabled")
|
||||
},
|
||||
success:function(data){
|
||||
//THIS.removeAttr("disabled");
|
||||
//THIS.html("订票");
|
||||
//THIS.parent().parent().find(".back_mes").html(data.mes);
|
||||
|
||||
},
|
||||
dataType: "json",
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
</script>
|
@ -0,0 +1,82 @@
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">订单搜索</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<form style="" action="" method="get">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" placeholder="汉特订单号或聚合订单号" name="order" value="<?php echo !empty($order)?"$order":"";?>">
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<button type="submit" id="sub" class="btn btn-success btn-sm"><span class="glyphicon glyphicon-search"></span> 搜索</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">订单列表</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<table class="table table-striped" style="text-align:center;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center;">序号</th>
|
||||
<th style="text-align:center;">汉特订单号</th>
|
||||
<th style="text-align:center;">途牛订单号</th>
|
||||
<th style="text-align:center;">车次</th>
|
||||
<th style="text-align:center;">出发</th>
|
||||
<th style="text-align:center;">到达</th>
|
||||
<th style="text-align:center;">状态</th>
|
||||
<th style="text-align:center;">价格</th>
|
||||
<th style="text-align:center;">提交时间</th>
|
||||
<th style="text-align:center;">所属部门</th>
|
||||
<!--<th style="text-align:center;">自动出票</th>
|
||||
<th style="text-align:center;">是否发送邮件</th>
|
||||
<th style="text-align:center;">操作</th>-->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php $num=0; foreach($data as $v):?>
|
||||
<tr>
|
||||
<td><?php echo ++$num;?></td>
|
||||
<td><?php echo $v->COLI_ID;?></td>
|
||||
<td><?php echo $v->tol_orderId;?></td>
|
||||
<td><?php echo $v->tol_cheCi;?></td>
|
||||
<td><?php echo $v->tol_fromStationName;?></td>
|
||||
<td><?php echo $v->tol_toStationName;?></td>
|
||||
<td><?php echo $v->info;?></td>
|
||||
<td><?php echo $v->tol_orderAmount;?></td>
|
||||
<td><?php echo $v->tol_subtime;?></td>
|
||||
<td><?php echo $v->COLI_WebCode;?></td>
|
||||
|
||||
<?php
|
||||
if($v->tol_isauto){
|
||||
echo '<td>是</td>';
|
||||
}else{
|
||||
echo '<td>否</td>';
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($v->tol_sendmail == 1){
|
||||
if($v->JOL_M_SN){
|
||||
echo '<td><a target="_blank" href="http://www.mycht.cn/info.php/apps/train/index/get_mailinfo/'.$v->JOL_M_SN.'">是</a></td>';
|
||||
}else{
|
||||
echo '<td>是</td>';
|
||||
}
|
||||
}else{
|
||||
echo '<td>否</td>';
|
||||
}
|
||||
?>
|
||||
<td><a target="_blank" href="order?retailOrderId=<?php echo $v->tol_retailOrderId;?>&orderId=<?php echo $v->tol_orderId;?>">详情</a></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align:right;"><ul class="pagination"><?php echo $page_link;?></ul></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,392 @@
|
||||
<style>
|
||||
.clear {clear: both;}
|
||||
.train-summary{ font-size:12px; margin-bottom:10px;}
|
||||
.train-summary span{ color:#9a0918;}
|
||||
a:link.seat-a{background-image:url(/css/images/train/a-seat.jpg); background-repeat:no-repeat; width:131px; display:block; height:42px; float:left;}
|
||||
a:hover.seat-a{background-image:url(/css/images/train/a-seath.jpg);}
|
||||
.selected_seat-a{background-image:url(/css/images/train/a-seata.jpg)!important; background-repeat:no-repeat; width:55px; display:block; height:42px; float:left;}
|
||||
a:link.seat-b{background-image:url(/css/images/train/b-seat.jpg); background-repeat:no-repeat; text-decoration:none; width:55px; display:block; height:42px; float:left;}
|
||||
a:hover.seat-b{background-image:url(/css/images/train/b-seath.jpg);}
|
||||
.selected_seat-b{background-image:url(/css/images/train/b-seata.jpg)!important; background-repeat:no-repeat; width:55px; display:block; height:42px; float:left;}
|
||||
a:link.seat-c{background-image:url(/css/images/train/c-seat.jpg); background-repeat:no-repeat; width:131px; display:block; height:42px; float:left;}
|
||||
a:hover.seat-c{background-image:url(/css/images/train/c-seath.jpg);}
|
||||
.selected_seat-c{background-image:url(/css/images/train/c-seata.jpg)!important; background-repeat:no-repeat; width:55px; display:block; height:42px; float:left;}
|
||||
a:link.seat-d{background-image:url(/css/images/train/d-seat.jpg); background-repeat:no-repeat; width:55px; display:block; height:42px; float:left;}
|
||||
a:hover.seat-d{background-image:url(/css/images/train/d-seath.jpg);}
|
||||
.selected_seat-d{background-image:url(/css/images/train/d-seata.jpg)!important; background-repeat:no-repeat; width:136px; display:block; height:42px; float:left;}
|
||||
a:link.seat-f{background-image:url(/css/images/train/f-seat.jpg); background-repeat:no-repeat; width:136px; display:block; height:42px; float:left;}
|
||||
a:hover.seat-f{background-image:url(/css/images/train/f-seath.jpg);}
|
||||
.selected_seat-f{background-image:url(/css/images/train/f-seata.jpg)!important; background-repeat:no-repeat; width:136px; display:block; height:42px; float:left;}
|
||||
a:link.sleep-a {background-image:url(/css/images/train/l-up.jpg); background-repeat:no-repeat; width:163px; display:block; height:38px; float:left; }
|
||||
a:hover.sleep-a { background-image:url(/css/images/train/l-upa.jpg); }
|
||||
.selected_sleep-a { background-image:url(/css/images/train/l-upa.jpg)!important; width:163px; display:block; height:38px; float:left; }
|
||||
a:link.sleep-b {background-image:url(/css/images/train/r-up.jpg); background-repeat:no-repeat; width:104px; display:block; height:38px; float:left; }
|
||||
a:hover.sleep-b { background-image:url(/css/images/train/r-upa.jpg); }
|
||||
.selected_sleep-b { background-image:url(/css/images/train/r-upa.jpg)!important; width:163px; display:block; height:38px; float:left; }
|
||||
a:link.sleep-c {background-image:url(/css/images/train/l-mid.jpg); background-repeat:no-repeat; width:163px; display:block; height:38px; float:left; }
|
||||
a:hover.sleep-c { background-image:url(/css/images/train/l-mida.jpg); }
|
||||
.selected_sleep-c { background-image:url(/css/images/train/l-mida.jpg)!important; width:163px; display:block; height:38px; float:left; }
|
||||
a:link.sleep-d {background-image:url(/css/images/train/r-mid.jpg); background-repeat:no-repeat; width:104px; display:block; height:38px; float:left; }
|
||||
a:hover.sleep-d { background-image:url(/css/images/train/r-mida.jpg); }
|
||||
.selected_sleep-d { background-image:url(/css/images/train/r-mida.jpg)!important; width:163px; display:block; height:38px; float:left; }
|
||||
a:link.sleep-e {background-image:url(/css/images/train/l-low.jpg); background-repeat:no-repeat; width:163px; display:block; height:38px; float:left; }
|
||||
a:hover.sleep-e { background-image:url(/css/images/train/l-lowa.jpg); }
|
||||
.selected_sleep-e { background-image:url(/css/images/train/l-lowa.jpg)!important; width:163px; display:block; height:38px; float:left; }
|
||||
a:link.sleep-f {background-image:url(/css/images/train/r-low.jpg); background-repeat:no-repeat; width:104px; display:block; height:38px; float:left; }
|
||||
a:hover.sleep-f { background-image:url(/css/images/train/r-lowa.jpg); }
|
||||
.selected_sleep-f { background-image:url(/css/images/train/r-lowa.jpg)!important; width:104px; display:block; height:38px; float:left; }
|
||||
</style>
|
||||
<script>
|
||||
$(function(){
|
||||
//var selected = $('.selectticket').find('.selected').length;
|
||||
//$('.selected_People').html(selected);
|
||||
});
|
||||
|
||||
function selseat(seat){
|
||||
var type = $(seat).attr('type');
|
||||
var total = $(seat).parent().parent().find('.train-summary .seat_TotalPeople').html();
|
||||
if(total>=5){
|
||||
total = 5;
|
||||
$('.seat_TotalPeople').html(total);
|
||||
}
|
||||
var count = $(seat).parent().parent().find('.selected').length;
|
||||
console.log('执行之前的数量'+count);
|
||||
//处理选座事件
|
||||
|
||||
if($(seat).hasClass('selected_'+type)){
|
||||
$(seat).removeClass('selected');
|
||||
$(seat).removeClass('selected_'+type);
|
||||
count = $(seat).parent().parent().find('.selected').length;
|
||||
$('.selected_People').html(count);
|
||||
console.log('减掉之后'+count);
|
||||
}else{
|
||||
if(count >= total){
|
||||
alert('You already chose seats for all the passengers.');
|
||||
}else{
|
||||
$(seat).addClass('selected_'+type);
|
||||
$(seat).addClass('selected');
|
||||
count = $(seat).parent().parent().find('.selected').length;
|
||||
$('.selected_People').html(count);
|
||||
console.log('增加之后'+count);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">翰特订单号 <a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/train/tuniu_train/ht_order_list');?>">订单列表>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/train/index/export');?>">导出交易记录>></a> <span style="margin-left:200px;">途牛出票测试版</span></h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form style="width: 300px;float: left;" action="" method="post">
|
||||
<input type="text" name="ht_order" value="<?php echo isset($cols_id)?$cols_id:""; ?>">
|
||||
<button type="submit" id="sub" class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-download-alt"></span> 获取信息</button>
|
||||
</form>
|
||||
<p style="margin: 0 0 10px; width: 200px; float: left; line-height: 30px;">外联:<span><?php if(!empty($wl)){echo $wl[0]->OPI_Name;}?></span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">火车订单信息</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php if(!empty($info)):?>
|
||||
<?php $num=1; foreach($info as $v):?>
|
||||
<table class="table table-bordered table-hover" style="text-align:center;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center;">序号</th>
|
||||
<th style="text-align:center;">车次</th>
|
||||
<th style="text-align:center;">座位</th>
|
||||
<th style="text-align:center;">出发城市</th>
|
||||
<th style="text-align:center;">抵达城市</th>
|
||||
<th style="text-align:center;">发车日期</th>
|
||||
<th style="text-align:center;">发车时间</th>
|
||||
<th style="text-align:center;">抵达时间</th>
|
||||
<th style="text-align:center;">票价</th>
|
||||
<th style="text-align:center;">是否提交过</th>
|
||||
<th style="text-align:center;">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td><?php echo $num++;?></td>
|
||||
<td><?php echo $v->train[0]->FlightsNo;?></td>
|
||||
<td><?php echo $v->train[0]->Cabin;?></td>
|
||||
<td><?php echo $v->train[0]->DepartureCity;?></td>
|
||||
<td><?php echo $v->train[0]->ArrivalCity;?></td>
|
||||
<td><?php echo $v->train[0]->DepartureDate;?></td>
|
||||
<td><?php echo $v->train[0]->DepartureTime;?></td>
|
||||
<td><?php echo $v->train[0]->ArrivalTime;?></td>
|
||||
<td><?php echo $v->train[0]->adultcost;?></td>
|
||||
<td><?php echo !empty($v->status)?"否":"<span style='color:green;'>是</span>";?></td>
|
||||
<td><button type="button" class="btn btn-success pay_api" data-order="<?php echo $v->train[0]->FOI_COLD_SN;?>" title="超过五个乘客不可用" >快捷订票</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="11">
|
||||
<table class="table table-condensed table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center;"><input class="check_people" type="checkbox" /></th>
|
||||
<th style="text-align:center;">序号</th>
|
||||
<th style="text-align:center;">姓名</th>
|
||||
<th style="text-align:center;">护照</th>
|
||||
<th style="text-align:center;">年龄类型</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($v->people as $key=>$p): ?>
|
||||
<tr>
|
||||
<td><input name="" type="checkbox" value="<?php echo $p->BPE_SN;?>" /></td>
|
||||
<td><?php echo $key+1;?></td>
|
||||
<td class="people_name"><?php echo $p->BPE_FirstName." ".$p->BPE_MiddleName." ".$p->BPE_LastName;?></td>
|
||||
<td><?php echo $p->BPE_Passport;?></td>
|
||||
<td><?php echo $p->BPE_GuestType==1?"成人":($p->BPE_GuestType==2?"儿童":"婴儿");?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr style="text-align:;">
|
||||
<td colspan="11" class="selectticket">
|
||||
<?php
|
||||
$traintype = substr($v->train[0]->FlightsNo,0,1);
|
||||
$arr = array('C','D','G');
|
||||
$sel_count = 0;
|
||||
if(in_array($traintype,$arr)){
|
||||
$selectseat = '';
|
||||
$train_select = $v->train[0]->FOI_SelectedSeat;
|
||||
$a1=$b1=$c1=$d1=$f1=$a2=$b2=$c2=$d2=$f2=false;
|
||||
if($train_select){
|
||||
$obj = explode(',',$train_select);
|
||||
foreach($obj as $value){
|
||||
switch($value){
|
||||
case '1A':
|
||||
$a1 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '1B':
|
||||
$b1 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '1C':
|
||||
$c1 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '1D':
|
||||
$d1 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '1F':
|
||||
$f1 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '2A':
|
||||
$a2 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '2B':
|
||||
$b2 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '2C':
|
||||
$c2 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '2D':
|
||||
$d2 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
case '2F':
|
||||
$f2 = true;
|
||||
$sel_count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$html = '';
|
||||
$html .= '<div class="train-summary">'.$v->train[0]->Cabin.' for '.$v->train[0]->FlightsNo.' <span>(<span class="selected_People">'.$sel_count.'</span> of <span class="seat_TotalPeople">'.count($v->people).'</span> Seats)</span></div>';
|
||||
$html .= '<div class="seatPick">';
|
||||
if($a1){
|
||||
$html .= '<a class="seat-a selected_seat-a selected" type="seat-a" href="javascript:void(0);" data="1A" onclick ="selseat(this)";></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-a" type="seat-a" href="javascript:void(0);" data="1A" onclick ="selseat(this)";></a>';
|
||||
}
|
||||
|
||||
if($v->train[0]->Aircraft == 'O' || $v->train[0]->Aircraft == '8'){
|
||||
if($b1){
|
||||
$html .= '<a class="seat-b selected_seat-b selected" type="seat-b" href="javascript:void(0);" data="1B" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-b" type="seat-b" href="javascript:void(0);" data="1B" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
}
|
||||
if($c1){
|
||||
$html .= '<a class="seat-c selected_seat-c selected" type="seat-c" href="javascript:void(0);" data="1C" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-c" type="seat-c" href="javascript:void(0);" data="1C" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
if($v->train[0]->Aircraft != '9'){
|
||||
if($d1){
|
||||
$html .= '<a class="seat-d selected_seat-d selected" type="seat-d" href="javascript:void(0);" data="1D" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-d" type="seat-d" href="javascript:void(0);" data="1D" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
}
|
||||
if($f1){
|
||||
$html .= '<a class="seat-f selected_seat-f selected" type="seat-f" href="javascript:void(0);" data="1F" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-f" type="seat-f" href="javascript:void(0);" data="1F" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
$html .= '<div class="clear"></div></div>';
|
||||
$html .= '<div class="seatPick">';
|
||||
if($a2){
|
||||
$html .= '<a class="seat-a selected_seat-a selected" type="seat-a" href="javascript:void(0);" data="2A" onclick ="selseat(this)";></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-a" type="seat-a" href="javascript:void(0);" data="2A" onclick ="selseat(this)";></a>';
|
||||
}
|
||||
|
||||
if($v->train[0]->Aircraft == 'O' || $v->train[0]->Aircraft == '8'){
|
||||
if($b2){
|
||||
$html .= '<a class="seat-b selected_seat-b selected" type="seat-b" href="javascript:void(0);" data="2B" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-b" type="seat-b" href="javascript:void(0);" data="2B" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
}
|
||||
if($c2){
|
||||
$html .= '<a class="seat-c selected_seat-c selected" type="seat-c" href="javascript:void(0);" data="2C" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-c" type="seat-c" href="javascript:void(0);" data="2C" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
if($v->train[0]->Aircraft != '9'){
|
||||
if($d2){
|
||||
$html .= '<a class="seat-d selected_seat-d selected" type="seat-d" href="javascript:void(0);" data="2D" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-d" type="seat-d" href="javascript:void(0);" data="2D" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
}
|
||||
if($f2){
|
||||
$html .= '<a class="seat-f selected_seat-f selected" type="seat-f" href="javascript:void(0);" data="2F" onclick ="selseat(this);"></a>';
|
||||
}else{
|
||||
$html .= '<a class="seat-f" type="seat-f" href="javascript:void(0);" data="2F" onclick ="selseat(this);"></a>';
|
||||
}
|
||||
|
||||
$html .= '<div class="clear"></div></div>';
|
||||
|
||||
if($v->train[0]->Aircraft != 'F'){
|
||||
echo $html;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="text-align:;">
|
||||
<td>
|
||||
<button type="button" class="btn btn-success checked_pay" data-order="<?php echo $v->train[0]->FOI_COLD_SN;?>">订票</button>
|
||||
</td>
|
||||
<td colspan="4" class="biaoqian"><span class="back_mes" style="color:red;line-height: 30px;"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="back_<?php echo $v->train[0]->FOI_COLD_SN;?>" style="display:none;">
|
||||
<td colspan="5">
|
||||
快捷订票处理结果:<span style="color:red;"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endforeach;endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url="<?php echo site_url('apps/train/index/submit_juhe_order?').'order=';?>";
|
||||
var order_ul="<?php echo site_url('apps/train/index/order?').'order=';?>";//订单详情页面
|
||||
|
||||
$(".pay_api").click(function(){
|
||||
// alert(url+$(this).attr("data-order"));
|
||||
var THIS=$(this);
|
||||
var order=$(this).attr("data-order");
|
||||
$.ajax({
|
||||
url:url+$(this).attr("data-order"),
|
||||
beforeSend:function(data){
|
||||
THIS.html("处理中...");
|
||||
THIS.attr("disabled","disabled")
|
||||
},
|
||||
success:function(data){
|
||||
THIS.removeAttr("disabled");
|
||||
THIS.html("快捷订票");
|
||||
if(data.status==1){
|
||||
THIS.parent().html("<a href='"+order_ul+data.order+"' target='_blank'>订单详情</a>");
|
||||
}
|
||||
|
||||
$("#back_"+order+" span").html(data.mes);
|
||||
$("#back_"+order).show();
|
||||
|
||||
},
|
||||
dataType: "json",
|
||||
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".check_people").click(function(){
|
||||
if($(this).is(":checked")){
|
||||
$(this).parent().parent().parent().parent().find("input[type=checkbox]").attr("checked","checked");
|
||||
}else{
|
||||
$(this).parent().parent().parent().parent().find("input[type=checkbox]").removeAttr("checked");
|
||||
}
|
||||
});
|
||||
$(".checked_pay").click(function(){
|
||||
var url2="<?php echo site_url('apps/train/tuniu_train/get_sn_submit_tuniu?').'order=';?>";
|
||||
var checkbox=$(this).parent().parent().parent().find(":checked");
|
||||
var people_sn="";
|
||||
checkbox.each(function(i){
|
||||
people_sn+=","+$(this).val();
|
||||
});
|
||||
|
||||
var selectseat = '';
|
||||
$(this).parent().parent().prev().find('.selected').each(function(){
|
||||
if($(this).hasClass('selected')){
|
||||
selectseat += $(this).attr('data');
|
||||
}
|
||||
});
|
||||
|
||||
people_sn=people_sn.substring(1);
|
||||
var coli_id = $('input[name="ht_order"]').val();
|
||||
url2+=$(this).attr("data-order")+"&people="+people_sn+"&coli_id="+coli_id+'&selectseat='+selectseat;
|
||||
|
||||
var THIS=$(this);
|
||||
THIS.parent().parent().find(".back_mes").html(" ");//清空提示
|
||||
$.ajax({
|
||||
url:url2,
|
||||
beforeSend:function(data){
|
||||
THIS.html("处理中...");
|
||||
THIS.attr("disabled","disabled")
|
||||
},
|
||||
success:function(data){
|
||||
THIS.removeAttr("disabled");
|
||||
THIS.html("订票");
|
||||
THIS.parent().parent().find(".back_mes").html(data.mes);
|
||||
|
||||
},
|
||||
dataType: "json",
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
</script>
|
@ -0,0 +1,113 @@
|
||||
<script type="text/javascript" src="/js/StationInfo.js"></script>
|
||||
<!-- 调用接口查询订单信息 -->
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary" style="width:60%;margin:0 auto;">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">订单状态</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p>途牛订单号:<?php echo $data->orderId?> 途牛订单状态:<?php echo $data->orderStatus?></p>
|
||||
<p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
//调用订单异步返回的信息
|
||||
//途牛订单状态接口查询不返回订单详细信息,只能在异步返回中查看,非常蛋疼。
|
||||
$info = json_decode($grab_callback);
|
||||
//print_r($info);
|
||||
//print_r($data);
|
||||
if($data->orderStatus == '抢票中'){ ?>
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary" style="width:60%;margin:0 auto;">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">途牛操作</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p style="text-align:center;"><a href="#" tuniu_url="/cancelgrabTicket/<?php echo $data->retailOrderId.'/'.$data->orderId?>" style="padding:5px 15px;" class="btn btn-warning btn-sm cancelgrab">取消抢票 <span class="glyphicon glyphicon-forward"></span></a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php }else if($data->orderStatus == '出票成功'){ ?>
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary" style="width:60%;margin:0 auto;">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo $info->trainDate;?> <?php echo $info->cheCi;?> <?php echo isset($info->orderNumber)?$info->orderNumber:"";?></h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p style="display:inline-block"><?php echo $info->fromStationName;?><span class="from_station_en"> </span><br><span class="start_time"></span></p><span class="glyphicon glyphicon-arrow-right"> </span><p style="display:inline-block"> <?php echo $info->toStationName;?><span class="to_station_en"> </span><br><span class="arrive_time"></span></p>
|
||||
<?php foreach ($info->passengers as $value){
|
||||
echo '<p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p>';
|
||||
echo '<p>'.$value->passengerName.'('.$value->piaoTypeName.') '.$value->zwName.' '.$value->cxin.' 票价:¥'.$value->price.'<a href="#" tuniu_url="/cancel_ticket/'.$info->retailOrderId.'/'.$info->orderId.'/'.$value->ticketNo.'/" style="padding:5px 15px;" class="btn btn-warning btn-sm cancelticket pull-right">单人退票 <span class="glyphicon glyphicon-forward"></span></a></p>';
|
||||
}?>
|
||||
<p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p>
|
||||
<p style="text-align:center;"><a href="#" tuniu_url="/cancel_ticket/<?php echo $info->retailOrderId.'/'.$info->orderId?>" style="padding:5px 15px;" class="btn btn-warning btn-sm cancelticket">一键全退 <span class="glyphicon glyphicon-forward"></span></a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var StationInfoArr = StationInfo.split("@");
|
||||
var StationNameArr = new Array();
|
||||
var code_name = new Array();
|
||||
var station_cn_en = new Array();
|
||||
var form_data = {};
|
||||
for (var i = 0; i < StationInfoArr.length; ++i) {
|
||||
StationNameArr.push(StationInfoArr[i].split("|"));
|
||||
code_name[StationNameArr[i][1]] = [StationNameArr[i][2]];
|
||||
station_cn_en[StationNameArr[i][3]] = StationNameArr[i][2];
|
||||
}
|
||||
$(function(){
|
||||
var from_station_en = code_name['<?php echo $info->data->fromStationCode;?>'];
|
||||
var to_station_en = code_name['<?php echo $info->data->toStationCode;?>'];
|
||||
var start_time = '<?php echo $info->data->trainDate.' '.$info->data->startTime;?>';
|
||||
var arrive_time = '<?php echo $info->data->trainDate.' '.$info->data->arriveTime;?>';
|
||||
$('.from_station_en').html('('+from_station_en+') ');
|
||||
$('.to_station_en').html('('+to_station_en+')');
|
||||
$('.start_time').html('('+start_time.substring(0,start_time.length-3)+')');
|
||||
$('.arrive_time').html('('+arrive_time.substring(0,arrive_time.length-3)+')');
|
||||
});
|
||||
</script>
|
||||
<?php }?>
|
||||
<script>
|
||||
$(function(){
|
||||
$('.cancelgrab').click(function(){
|
||||
var cancel_url = $(this).attr('tuniu_url');
|
||||
var url = "<?php echo site_url('apps/train/tuniu_train')?>"+cancel_url;
|
||||
var THIS=$(this);
|
||||
$.ajax({
|
||||
url:url,
|
||||
beforeSend:function(data){
|
||||
THIS.html("处理中...");
|
||||
THIS.attr("disabled","disabled");
|
||||
},
|
||||
success:function(data){
|
||||
THIS.removeAttr("disabled");
|
||||
THIS.html("取消成功");
|
||||
},
|
||||
dataType: "json",
|
||||
});
|
||||
});
|
||||
|
||||
$('.cancelticket').click(function(){
|
||||
var cancel_url = $(this).attr('tuniu_url');
|
||||
var url = "<?php echo site_url('apps/train/tuniu_train')?>"+cancel_url;
|
||||
var THIS=$(this);
|
||||
$.ajax({
|
||||
url:url,
|
||||
beforeSend:function(data){
|
||||
THIS.html("处理中...");
|
||||
THIS.attr("disabled","disabled");
|
||||
},
|
||||
success:function(data){
|
||||
THIS.removeAttr("disabled");
|
||||
THIS.html("退票成功");
|
||||
},
|
||||
dataType: "json",
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -0,0 +1,53 @@
|
||||
TOC_ID 自增ID
|
||||
TOC_COLI_SN 商务主表COLI_SN
|
||||
TOC_GroupName 团名
|
||||
TOC_COLD_SN 商务明细表COLD_SN
|
||||
TOC_TrainNumber 火车车次
|
||||
TOC_DepartureDate 出发日期
|
||||
TOC_TicketCost 价格
|
||||
TOC_OtherCost 其它成本标识
|
||||
TOC_NBBZ 是否内部报账标识
|
||||
TOC_BCM_Bill 交通银行账单标识
|
||||
TOC_WL 外联
|
||||
TOC_SFBZ 是否已报账标识
|
||||
TOC_Order 排序号
|
||||
TOC_Memo 备注
|
||||
TOC_PicName 上传图片名称(已不用)
|
||||
TOC_Creator 创建者
|
||||
TOC_CreateDate 创建日期
|
||||
TOC_LastEditor 最后修改者
|
||||
TOC_LastEditDate 最后修改日期
|
||||
TOC_DeleteFlag 删除标识
|
||||
TOC_ListOrder 查询排序字段
|
||||
TOC_MoveFlag 是否移动标识
|
||||
TOC_GetTicket 是否已取票
|
||||
TOC_Billing 是否已做账标识
|
||||
TOC_BZDate 报账日期
|
||||
TOC_NeedTicketFee 是否寄送状态
|
||||
|
||||
|
||||
|
||||
https://open-sbox.sf-express.com/rest/v1.0/route/query/access_token/15D008266E5E90964EC3C2F7B98C0A9F/sf_appid/00000111/sf_appkey/B21FA8B875514EBCEFEC7285A33E3000
|
||||
|
||||
|
||||
//令牌
|
||||
https://open-sbox.sf-express.com/public/v1.0/security/access_token/sf_appid/00021240/sf_appkey/2458B56F2B5C3E24B9C1AF1823458DDC
|
||||
|
||||
|
||||
//查询
|
||||
https://open-sbox.sf-express.com/public/v1.1.2/security/access_token/query/sf_appid/00021240/sf_appkey/2458B56F2B5C3E24B9C1AF1823458DDC
|
||||
{"from_station_name":"桂林","from_station_code":"GLZ","to_station_name":"桂林北","to_station_code":"GBZ","train_date":"2016-11-30","orderid":"1476686669783H","user_orderid":"488015272","orderamount":"5.50","ordernumber":"E903359160","checi":"D8238","msg":"有乘客退票成功,相关款项已退还至您的账户","status":"7","passengers":[{"passengerid":1,"passengersename":"CSK","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E127233","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E903359160107001A","cxin":"07车厢,01A座","reason":0,"returntickets":{"ticket_no":"E903359160107001A","passengername":"CSK","passporttypeseid":"B","passportseno":"E127233","refund_apply_time":"2016-10-17 14:49:17","returnsuccess":true,"returnmoney":"5.5","returntime":"2016-10-17 14:52:05","returnfailid":"","returnfailmsg":"","returntype":"1"},"refundTimeline":[{"time":"2016-10-17 14:49:17","msg":"线上申请退票"},{"time":"2016-10-17 14:52:05","msg":"线上退票成功","detail":{"returnsuccess":true,"returnmoney":"5.5","returntime":"2016-10-17 14:52:05","returnfailid":"","returnfailmsg":"","returntype":"1","ticket_no":"E903359160107001A","passengername":"CSK","passporttypeseid":"B","passportseno":"E127233"}}]}],"refund_money":"5.50","sign":"49121a3cada0af88b2ce64746dc7b13f"}
|
||||
|
||||
{"from_station_name":"桂林","from_station_code":"GLZ","to_station_name":"桂林北","to_station_code":"GBZ","train_date":"2016-11-30","orderid":"1476935104693H","user_orderid":"488015272","orderamount":"8.50","ordernumber":"E974154132","checi":"D8238","msg":"有乘客退票成功,相关款项已退还至您的账户","status":"7","passengers":[{"passengerid":1,"passengersename":"CSK","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E127233","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E974154132107001A","cxin":"07车厢,01A座","reason":0,"returntickets":{"ticket_no":"E974154132107001A","passengername":"CSK","passporttypeseid":"B","passportseno":"E127233","refund_apply_time":"2016-10-21 14:51:00","returnsuccess":true,"returnmoney":"5.5","returntime":"2016-10-21 14:52:06","returnfailid":"","returnfailmsg":"","returntype":"1"},"refundTimeline":[{"time":"2016-10-21 14:51:00","msg":"线上申请退票"},{"time":"2016-10-21 14:52:06","msg":"线上退票成功","detail":{"returnsuccess":true,"returnmoney":"5.5","returntime":"2016-10-21 14:52:06","returnfailid":"","returnfailmsg":"","returntype":"1","ticket_no":"E974154132107001A","passengername":"CSK","passporttypeseid":"B","passportseno":"E127233"}}]},{"passengerid":2,"passengersename":"test k","piaotype":"2","piaotypename":"儿童票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E127234","price":"3.0","zwcode":"O","zwname":"二等座","ticket_no":"E974154132107001D","cxin":"07车厢,01D座","reason":0,"returntickets":{"ticket_no":"E974154132107001D","passengername":"test k","passporttypeseid":"B","passportseno":"E127234","refund_apply_time":"2016-10-21 14:51:04"},"refundTimeline":[{"time":"2016-10-21 14:51:04","msg":"线上申请退票"}]}],"refund_money":"5.50","sign":"9671aa6b0bf8378403473d3a6452ac94"}
|
||||
|
||||
$data_post["data"]='{"from_station_name":"桂林","from_station_code":"GLZ","to_station_name":"桂林北","to_station_code":"GBZ","train_date":"2016-11-30","orderid":"1476343928878H","user_orderid":"488015272","orderamount":"5.50","ordernumber":"E098614072","checi":"D8888","msg":"出票成功","status":"4","passengers":[{"passengerid":1,"passengersename":"csk","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E11021322","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E098614072107001C","cxin":"07车厢,01C座","reason":0}],"refund_money":null,"sign":"9cd116f3c333a43e396c0acb115adc3f"}'
|
||||
|
||||
1、出票成功
|
||||
{"from_station_name":"桂林","from_station_code":"GLZ","to_station_name":"桂林北","to_station_code":"GBZ","train_date":"2017-01-22","orderid":"1482737845760H","user_orderid":"488020631","orderamount":"11.00","ordernumber":"E179703891","checi":"D8238","msg":"出票成功","status":"4","passengers":[{"passengerid":1,"passengersename":"CSK","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E132124","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E179703891106014C","cxin":"06车厢,14C座","reason":0},{"passengerid":2,"passengersename":"TW","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E02030609","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E179703891106014D","cxin":"06车厢,14D座","reason":0}],"refund_money":null,"sign":"a38d8ac11d00f800ae5b5753a693becd"}
|
||||
|
||||
2、CSK退票
|
||||
{"from_station_name":"桂林","from_station_code":"GLZ","to_station_name":"桂林北","to_station_code":"GBZ","train_date":"2017-01-22","orderid":"1482737845760H","user_orderid":"488020631","orderamount":"11.00","ordernumber":"E179703891","checi":"D8238","msg":"有乘客退票成功,相关款项已退还至您的账户","status":"7","passengers":[{"passengerid":1,"passengersename":"CSK","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E132124","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E179703891106014C","cxin":"06车厢,14C座","reason":0,"returntickets":{"ticket_no":"E179703891106014C","passengername":"CSK","passporttypeseid":"B","passportseno":"E132124","refund_apply_time":"2016-12-26 15:50:11","returnsuccess":true,"returnmoney":"5.5","returntime":"2016-12-26 15:52:06","returnfailid":"","returnfailmsg":"","returntype":"1"},"refundTimeline":[{"time":"2016-12-26 15:50:11","msg":"线上申请退票"},{"time":"2016-12-26 15:52:06","msg":"线上退票成功","detail":{"returnsuccess":true,"returnmoney":"5.5","returntime":"2016-12-26 15:52:06","returnfailid":"","returnfailmsg":"","returntype":"1","ticket_no":"E179703891106014C","passengername":"CSK","passporttypeseid":"B","passportseno":"E132124"}}]},{"passengerid":2,"passengersename":"TW","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E02030609","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E179703891106014D","cxin":"06车厢,14D座","reason":0}],"refund_money":"5.50","sign":"a38d8ac11d00f800ae5b5753a693becd"}
|
||||
|
||||
|
||||
|
||||
{"from_station_name":"桂林","from_station_code":"GLZ","to_station_name":"桂林北","to_station_code":"GBZ","train_date":"2017-01-22","orderid":"1482737845760H","user_orderid":"488020631","orderamount":"11.00","ordernumber":"E179703891","checi":"D8238","msg":"有乘客退票成功,相关款项已退还至您的账户","status":"7","passengers":[{"passengerid":1,"passengersename":"CSK","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E132124","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E179703891106014C","cxin":"06车厢,14C座","reason":0,"returntickets":{"ticket_no":"E179703891106014C","passengername":"CSK","passporttypeseid":"B","passportseno":"E132124","refund_apply_time":"2016-12-26 15:50:11","returnsuccess":true,"returnmoney":"5.5","returntime":"2016-12-26 15:52:06","returnfailid":"","returnfailmsg":"","returntype":"1"},"refundTimeline":[{"time":"2016-12-26 15:50:11","msg":"线上申请退票"},{"time":"2016-12-26 15:52:06","msg":"线上退票成功","detail":{"returnsuccess":true,"returnmoney":"5.5","returntime":"2016-12-26 15:52:06","returnfailid":"","returnfailmsg":"","returntype":"1","ticket_no":"E179703891106014C","passengername":"CSK","passporttypeseid":"B","passportseno":"E132124"}}]},{"passengerid":2,"passengersename":"TW","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E02030609","price":"5.5","zwcode":"O","zwname":"二等座","ticket_no":"E179703891106014D","cxin":"06车厢,14D座","reason":0}],"refund_money":"5.50","sign":"a38d8ac11d00f800ae5b5753a693becd"}
|
Loading…
Reference in New Issue