Merge branch 'master' of github.com:hainatravel/information-system

hotfix/paypal-note
LMR 3 years ago
commit b7509b2dc1

@ -19,12 +19,20 @@ define("DATAKEY","0dbf1652763c2289533e27437a971854");
//携程接口地址
define("JSONRETURN","http://m.ctrip.com/restapi/soa2/12976/json/");
//新携程接口顺途用的企业ID
define("COMPANYID","4003171843");
//新携程接口顺途用的Key
define("CTRIPKEY","hajkrtbc");
// //新携程接口顺途用的企业ID
// define("COMPANYID","4003171843");
// //新携程接口顺途用的Key
// define("CTRIPKEY","hajkrtbc");
//新携程接口顺途用的企业ID --- 测试用
define("COMPANYID","1503141150");
//新携程接口顺途用的Key ----- 测试用
define("CTRIPKEY","hajkrtba");
//新携程接口(顺途)的地址
define("CTRIPURL","https://apiproxy.ctrip.com/apiproxy/soa2/19946");
//新携程接口(顺途)的订单号前缀
define("SHUNTU_ORDERUSER","HN");
//聚合火车订票API key
define("JUHE_TRAIN_API_KEY","79f03107b921ef31310bd40a1415c1cb");
@ -118,6 +126,17 @@ $config["train_passportty"]=array(
"C"=>"港澳通行证",
"G"=>"台湾通行证"
);
//顺途证件类型身份证传1、护照2、回乡证7、台胞证8、外国人永久居留身份证28、港澳台居民居住证32
$config["train_certificateType"]=array(
"2"=>"护照",
"1"=>"身份证",
"7"=>"回乡证",
"8"=>"台胞证",
"28"=>"外国人永久居留身份证2",
"32"=>"港澳台居民居住证"
);
//黑名单用户
$config['black_list'] = array('209582910','539152642','506157109','E66735489','E66735492','E80377215','G23001338','E95287649','345276546','PA4286015','G09382769','G26113116','G25996274','572309763','506620366','505897939','E71156367','E21961674','v716898','561669436','EL657289','533300106','482225223','514815909','592108236','370682199509218814','130924199003161572','410728199011287038','372324199503253215','ED6234008','E69411908','EF1981503');

@ -204,7 +204,7 @@ class addorders extends CI_Controller{
$coli_id = $this->BIZ_train_model->cold_sn_get_coli_id($cold_sn)['0']->COLI_ID;
if(empty($this->BIZ_train_model->get_operatorInfo($coli_id))){
$data['email'] = 'jason@hainatravel.com';
$data['email'] = 'vivi@hainatravel.com';
}else{
$data['email'] = $this->BIZ_train_model->get_operatorInfo($coli_id)['0']->OPI_Email;
}
@ -238,6 +238,13 @@ class addorders extends CI_Controller{
echo json_encode($reback);
return false;
}
// print_r(json_encode($data));
// echo("<hr/>");
// echo($selectseat);
// echo("<hr/>");
// echo($cold_sn);
// die();
switch ($type){
case 'juhe':
@ -573,37 +580,57 @@ class addorders extends CI_Controller{
$zwcode = $this->db_train_zw[$data['train']->Aircraft]; //座位简码
$zwname = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]]; //座位名称
$microtime = get_microtime();
$OrderNumber = ORDERUSER.$microtime;
$OrderNumber = SHUNTU_ORDERUSER.$microtime; //自生成订单号
//生成接口请求头参数
$TimeStamp = date("Y-m-d H:i:s");
$serviceName = "train.addTrainOrder"; //每个接口都有自己名称
// $companyId = "4003171843";
// $key = "hajkrtbc";
/** 测试服务器 */
$companyId = "1503141150";
$key = "hajkrtba";
$strSign = $TimeStamp.$serviceName.$companyId.$key; //加密前的令牌
$Sign = md5($strSign);
$url = CTRIPURL."/addTrainOrder";
//拼接发送的报文
$PostData = array();
$time = date('Y-m-d H:i:s',time());
$PostData['Authentication'] = new stdClass();
$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'] = new stdClass();
$PostData['TrainOrderService']->PartnerName = ORDERUSER;
$PostData['TrainOrderService']->Operation = 'add';
$PostData['TrainOrderService']->OrderType = '电子';
$PostData['TrainOrderService']->OrderTicketType = '0';
$PostData['TrainOrderService']->OrderNumber = $OrderNumber;
$PostData['TrainOrderService']->ChannelName = ORDERUSER;
$PostData['TrainOrderService']->Order = new stdClass();
$PostData['TrainOrderService']->Order->OrderTime = $time;
$PostData['TrainOrderService']->Order->OrderMedia = 'pc';
$PostData['TrainOrderService']->Order->TicketItem['0'] = new stdClass();
$PostData['TrainOrderService']->Order->TicketItem['0']->FromStationName = $data['train']->DepartAirport_cn;
$PostData['TrainOrderService']->Order->TicketItem['0']->ToStationName = $data['train']->ArrivalAirport_cn;
$PostData['TrainOrderService']->Order->TicketItem['0']->TicketTime = date('Y-m-d H:i:s',strtotime($data['train']->DepartureTime));
$PostData['TrainOrderService']->Order->TicketItem['0']->TrainNumber = $data['train']->FlightsNo;
$PostData['TrainOrderService']->Order->TicketItem['0']->ArrivalDateTime = date('Y-m-d H:i:s',strtotime($data['train']->ArrivalTime));
$PostData['TrainOrderService']->Order->TicketItem['0']->TicketPrice = $data['train']->adultcost;
$PostData['TrainOrderService']->Order->TicketItem['0']->TicketCount = count($data['people_list']);
$PostData = new stdClass();
$PostData->authentication = new stdClass();
$PostData->authentication->timeStamp = $TimeStamp;
$PostData->authentication->serviceName = $serviceName;
$PostData->authentication->companyId = $companyId;
$PostData->authentication->messageIdentity = $Sign;
$PostData->trainOrderInfo = new stdClass();
$PostData->trainOrderInfo->companyId = $companyId;
$PostData->trainOrderInfo->orderType = 2;
$PostData->trainOrderInfo->orderTicketType = 0;
$PostData->trainOrderInfo->companyOrderId = $OrderNumber;
$PostData->trainOrderInfo->isReservationOrder = null;
$PostData->trainOrderInfo->leakCutOffTime = null;
$PostData->trainOrderInfo->orderInfo = new stdClass();
$PostData->trainOrderInfo->orderInfo->orderTime = $TimeStamp;
$PostData->trainOrderInfo->orderInfo->ticketList['0'] = new stdClass();
$PostData->trainOrderInfo->orderInfo->ticketList['0']->fromStationName = $data['train']->DepartAirport_cn;
$PostData->trainOrderInfo->orderInfo->ticketList['0']->toStationName = $data['train']->ArrivalAirport_cn;
$PostData->trainOrderInfo->orderInfo->ticketList['0']->ticketTime = date('Y-m-d H:i',strtotime($data['train']->DepartureTime));
$PostData->trainOrderInfo->orderInfo->ticketList['0']->trainNo = $data['train']->FlightsNo;
$PostData->trainOrderInfo->orderInfo->ticketList['0']->allAcceptTrainNo = ''; //备选车次,抢票时必传
$PostData->trainOrderInfo->orderInfo->ticketList['0']->acceptDepartDates = ''; //备选日期,抢票时必传
$PostData->trainOrderInfo->orderInfo->ticketList['0']->arrivalDateTime = date('Y-m-d H:i',strtotime($data['train']->ArrivalTime));
$PostData->trainOrderInfo->orderInfo->ticketList['0']->ticketPrice = $data['train']->adultcost;
$PostData->trainOrderInfo->orderInfo->ticketList['0']->seatName = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]];
$PostData->trainOrderInfo->orderInfo->ticketList['0']->selectedSeat = $selectseat;
$is_accept_standing = '';
if($this->istanding == 'true'){
$is_accept_standing = '无座';
}
$PostData->trainOrderInfo->orderInfo->ticketList['0']->acceptSeat = $is_accept_standing;
$AdultNum = 0;
$ChildNum = 0;
@ -631,51 +658,53 @@ class addorders extends CI_Controller{
//证件类型
switch ($PassagerInfo->BPE_PassportType){
case 'Chinese ID':
$PassportTypeseId = "1";
$PassportTypeseId = 1;
$PassportTypeseidName = "二代身份证";
break;
case 'MainlandTravel Permit from Hong Kong and Macau':
$PassportTypeseId = 32;
$PassportTypeseidName = "港澳通行证";
break;
case 'Travel Permit from Taiwan':
$PassportTypeseId = "G";
$PassportTypeseId = 8;
$PassportTypeseidName = "台湾通行证";
break;
default :
$PassportTypeseId = "B";
$PassportTypeseId = 2;
$PassportTypeseidName = "护照";
break;
}
$passagersdata[$i] = new stdClass();
$passagersdata[$i]->PassengerType = $PiaoTypeName;
$passagersdata[$i]->PassportType = $PassportTypeseidName;
$passagersdata[$i]->PassportNumber = $PassagerInfo->BPE_Passport;
$passagersdata[$i]->PassportName = chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName);
$passagersdata[$i]->RealName = chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName);
$passagersdata[$i]->ContactEmail = $data['email'];
$passagersdata[$i]->passengerType = $PiaoType;
$passagersdata[$i]->certificateType = $PassportTypeseId;
$passagersdata[$i]->certificateNo = des_encrypt($PassagerInfo->BPE_Passport,$key);;
$passagersdata[$i]->certificateName = chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName);
$passagersdata[$i]->birthday =$PassagerInfo->BPE_BirthDate;
$passagersdata[$i]->realName = chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName);
$passagersdata[$i]->identityLimitDate = $PassagerInfo->BPE_PassExpdate;;
$passagersdata[$i]->countryCode = "";
$passagersdata[$i]->contactMobile = "";
$passagersdata[$i]->contactEmail = "";
$i++;
}
$PostData['TrainOrderService']->Order->TicketItem['0']->AuditTicketCount = $AdultNum;
$PostData['TrainOrderService']->Order->TicketItem['0']->ChildTicketCount = $ChildNum;
$PostData['TrainOrderService']->Order->TicketItem['0']->SeatName = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]];
$PostData['TrainOrderService']->Order->TicketItem['0']->SelectedSeat = $selectseat;
$is_accept_standing = '';
if($this->istanding == 'true'){
$is_accept_standing = '无座';
}
$PostData['TrainOrderService']->Order->TicketItem['0']->AcceptSeat = $is_accept_standing;
//乘客人信息
$PostData['TrainOrderService']->Order->TicketItem['0']->Passengers = $passagersdata;
$PostData['TrainOrderService']->Order->TicketItem['0']->OrderPrice = $data['train']->adultcost * $AdultNum + $data['train']->childcost * $ChildNum;
$PostData['TrainOrderService']->User = new stdClass();
$PostData['TrainOrderService']->User->UserID = '';
$PostData['TrainOrderService']->User->UserName = 'guilintravel';
$PostData['TrainOrderService']->User->userLoginName = 'guilintravel';
$PostData['TrainOrderService']->User->UserMobile = '18877381547';
$PostData->trainOrderInfo->orderInfo->ticketList['0']->passengerList = $passagersdata;
$PostData->trainOrderInfo->orderInfo->frontSeatFlag = 0;
$PostData->trainOrderInfo->orderInfo->orderRemark = "";
$PostData->trainOrderInfo->contactUser = new stdClass();
$PostData->trainOrderInfo->contactUser->contactUserId = '';
$PostData->trainOrderInfo->contactUser->contactName = 'vivi';
$PostData->trainOrderInfo->contactUser->companyId = $companyId;
$PostData->trainOrderInfo->contactUser->countryCode = "86";
$PostData->trainOrderInfo->contactUser->contactMobile = des_encrypt('18877331805',$key) ;
$PostData->trainOrderInfo->extraService = new stdClass();
$PostData->trainOrderInfo->extraService->noVerifyFlag = 1;
$PostData->trainOrderInfo->extraService->lowerBerthFlag = 0;
$PostData->trainOrderInfo->extraService->lowerBerthCount = 0;
$PostData->trainOrderInfo->extraService->grabTicketRate = 1;
//本地添加记录
$add_data = new stdClass();
@ -694,27 +723,51 @@ class addorders extends CI_Controller{
$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 = $this->isauto;
$add_data->isauto = $this->isauto;
//存储到数据库
$this->train_system_model->add_orders($add_data);
$Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerAddOrder';
$ResponseJson = GetPost_http($Url,json_encode($PostData),'json');
$this->train_system_model->add_orders($add_data);
$ResponseJson = GetPost_http($url,json_encode($PostData,JSON_UNESCAPED_UNICODE),'json');
$ResponseData = json_decode($ResponseJson);
//预定请求成功后执行支付
if($ResponseData->Status == 'SUCCESS'){
//计算订单总价,进行支付
$total_price = $AdultNum * $data['train']->adultcost + $ChildNum * $data['train']->childcost;
$this->payorders($OrderNumber,$total_price);
$reback["status"] = 1;
$reback["order"] = $OrderNumber;
$reback["mes"] = "订单提交成功,等待回调";
if($ResponseData->returnCode == 1){
//直接获取返回的需要支付的总价,不再计算订单总价
//$total_price = $AdultNum * $data['train']->adultcost + $ChildNum * $data['train']->childcost;
$total_price = $ResponseData->returnData->orderPayDetail->orderAmount;
if ($total_price>0){
//执行支付
$this->payorders($OrderNumber,$total_price);
$reback["status"] = 1;
$reback["order"] = $OrderNumber;
$reback["mes"] = "订单提交成功,等待回调";
}else{
$reback["status"] = 1;
$reback["returndata"] = $ResponseData;
$reback["mes"] = "订单提交成功,但是返回的订单总价错误。无法完成支付";
}
}else{
$reback["mes"] = $ResponseJson;
$add_data->status = "e";
//更新订单
$msgData = new stdClass();
$msgData->bookcallback = $ResponseJson;
$msgData->OrderStatus = "1";
$msgData->ErrorMsg = $ResponseData->returnMessage;
$msgData->ordernumber = $OrderNumber;
$this->train_system_model->update_orders_msg($msgData);
}
echo json_encode($reback);
echo json_encode($reback,JSON_UNESCAPED_UNICODE);
}
//请求支付
@ -722,32 +775,114 @@ class addorders extends CI_Controller{
if(empty($CtripOrder) && !is_numeric($Price)){
exit('传参错误!');
}
//生成接口请求头参数
$TimeStamp = date("Y-m-d H:i:s");
$serviceName = "train.companyPayOrder"; //每个接口都有自己名称
// $companyId = COMPANYID;
// $key = CTRIPKEY;
/** 测试服务器 */
$companyId = "1503141150";
$key = "hajkrtba";
$strSign = $TimeStamp.$serviceName.$companyId.$key; //加密前的令牌
$Sign = md5($strSign);
$url = CTRIPURL."/companyPayOrder";
//生成报文
$PostData = array();
$TimeStamp = time();
$time = date('Y-m-d H:i:s',$TimeStamp);
$PostData['Authentication'] = new stdClass();
$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'] = new stdClass();
$PostData['TrainOrderService']->PartnerName = ORDERUSER;
$PostData['TrainOrderService']->OrderNumber = $CtripOrder;
$PostData['TrainOrderService']->PayedPrice = $Price;
$PostData['TrainOrderService']->PayTime = $time;
$PostData['TrainOrderService']->TradeNumber = $CtripOrder;
$Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerPayOrder';
$ResponseJson = GetPost_http($Url,json_encode($PostData),'json');
$PostData = new stdClass();
$PostData->authentication = new stdClass();
$PostData->authentication->timeStamp = $TimeStamp;
$PostData->authentication->serviceName = $serviceName;
$PostData->authentication->companyId = $companyId;
$PostData->authentication->messageIdentity = $Sign;
$PostData->orderPayInfo= new stdClass();
$PostData->orderPayInfo->companyId = $companyId;
$PostData->orderPayInfo->companyOrderId = $CtripOrder;
$PostData->orderPayInfo->payedPrice = $Price;
$PostData->orderPayInfo->payTime = $TimeStamp;
$PostData->orderPayInfo->tradeNumber = $CtripOrder;
//$Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerPayOrder';
// print_r(json_encode($PostData) );
// die();
$ResponseJson = GetPost_http($url,json_encode($PostData),'json');
$ResponseData = json_decode($ResponseJson);
$msgData = new stdClass();
$msgData-> bookcallback = $ResponseJson;
$msgData->ordernumber = $CtripOrder;
if ($ResponseData->returnCode==1){
$msgData->OrderStatus = "3";
$msgData->ErrorMsg = $ResponseData->returnMessage;
}else{
$msgData->OrderStatus = "1";
$msgData->ErrorMsg = $ResponseData->returnMessage;
}
//更新订单
$this->train_system_model->update_orders_msg($msgData);
// $reback["mes"] = $ResponseJson;
// print_r(json_encode($reback,JSON_UNESCAPED_UNICODE)) ;
//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":[]}}
}
}
}
//订单提交返回数据
/*
{
"returnCode": 1,
"returnMessage": "SUCCESS",
"returnData": {
"serviceName": "train.addTrainOrder",
"companyId": "1503141150",
"companyOrderId": "HN1681460139569",
"operationDateTime": "2023-04-14 16:15:56",
"orderPayDetail": {
"orderAmount": 12.00,
"ticketAmount": 6,
"serveAmount": 0,
"extraServeFees": [
{
"feeAmount": 6.00,
"feeType": 141
}
]
}
},
"ResponseStatus": {
"Timestamp": "/Date(1681460156763+0800)/",
"Ack": "Success",
"Errors": [],
"Build": null,
"Version": null,
"Extension": [
{
"Id": "CLOGGING_TRACE_ID",
"Version": null,
"ContentType": null,
"Value": "7715658886832531034"
},
{
"Id": "RootMessageId",
"Version": null,
"ContentType": null,
"Value": "100031671-0a6d18d7-467072-1571193"
}
]
}
}
*/

@ -166,17 +166,40 @@ class callback extends CI_Controller{
$this->train_system_model->update_orders($update_data);
}
public function ctripcallback(){
public function shuntucallback(){
$back_json = file_get_contents('php://input');
log_message('error','携程回调信息:'.$back_json);
//$back_json = '{"@attributes":{"xsi":"http:\/\/www.w3.org\/2001\/XMLSchema-instance"},"Authentication":{"TimeStamp":"2019-11-13 10:31:00","ServiceName":"web.order.rescheduleResult","MessageIdentity":"31C01C2EC57C9B1D45C0727918B493AE","PartnerName":"tieyou"},"TrainOrderService":{"OrderInfo":{"OrderNumber":"guilintravel1573543590265","contactName":{},"contactMobile":{},"RescheduleTicketInfo":{"SubOrderId":"0","EOrderNumber":"EG59266341","ResFromStation":"\u6842\u6797","ResToStation":"\u6842\u6797\u5317","ResDepartTime":"2019-12-03 13:50:00","ResArriveTime":"2019-12-03 14:01:00","ResTrainNumber":"D2986","RescheduleTickets":{"RescheduleTicket":{"childBillId":{},"ResCarriageNo":"08","ResSeatNumber":"13F\u53f7","ResSeatName":"\u4e8c\u7b49\u5ea7","ResRealTicketPrice":"5.5","RescheduleLongTrainNum":"EG59266341208013F","eOrderType":"1","passport":"450302199208131039","passportName":"\u9648\u5b87\u8d85","realName":"\u9648\u5b87\u8d85","status":"1","ResFailReasons":{}}}}}}}';
log_message('error','携程顺途回调信息:'.$back_json);
$ctrip_backdata = json_decode($back_json);
//print_r($ctrip_backdata);
// print_r($ctrip_backdata);
// die();
if(!empty($ctrip_backdata)){
//判断回调信息是否正确,主要判断是否是本企业的回调信息
$TimeStamp = $ctrip_backdata->timeStamp;
$serviceName = $ctrip_backdata->authentication->serviceName; //每个接口都有自己名称
$companyId = COMPANYID;
$key = CTRIPKEY;
/** 测试服务器 */
$strSign = $TimeStamp.$serviceName.$companyId.$key; //加密前的令牌
$Sign = md5($strSign);
$messageIdentity = $ctrip_backdata->authentication->messageIdentity;
$ResultNoticeResponse = new stdClass();
if ($Sign == $messageIdentity){
$ResultNoticeResponse->returnCode = 1;
$ResultNoticeResponse->returnMsg = "success";
}else {
$ResultNoticeResponse->returnCode = 0;
$ResultNoticeResponse->returnMsg = "messageIdentity is error!";
}
echo json_encode($ResultNoticeResponse);
//处理回调的内容,保存到本地及翰特
$update_data = new stdClass();
$update_data->ServiceName = $ctrip_backdata->Authentication->ServiceName;
$update_data->ServiceName = $ctrip_backdata->authentication->serviceName;
$update_data->ordernumber = '';
$update_data->seatsinfo = '';
$update_data->TicketCheck = '';
@ -187,131 +210,105 @@ class callback extends CI_Controller{
$update_data->ElectronicOrderNumber = '';
$update_data->reschedulecallback = '';
$update_data->OrderTicketTime = '';
//新字段
$update_data->operateTradeNo ="";
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;
$update_data->bookcallback = $back_json;
$update_data->OrderTicketTime = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfo->OrderTicketTime;
//新添加检票口信息
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->TicketInfo->AuditTicketCount + $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfo->ChildTicketCount;
//存储座位信息 转换为英文
$coach_arr = array();
$seats_arr = array();
$seatsinfo_arr = array();
$find = array('车厢','号','上铺','中铺','下铺');
$replace = array('coach','',' upper',' middle',' lower');
$seatsinfo = str_replace($find,$replace,$ctrip_backdata->TrainOrderService->OrderInfo->TicketInfo->SeatNumber);
$seatsinfo = mb_substr($seatsinfo,0,mb_strlen($seatsinfo,'UTF8')-1);
$seatsinfo_arr = explode(',',$seatsinfo);
foreach($seatsinfo_arr as $item){
$coach = mb_substr($item,0,strpos($item,'coach'));
array_push($coach_arr,$coach);
$seat = mb_substr($item,strpos($item,'coach')+5,mb_strlen($item,'UTF8'));
array_push($seats_arr,$seat);
}
$update_data->seatsinfo = '';
if(count(array_unique($coach_arr)) == 1){
$onlycoach = array_unique($coach_arr);
$update_data->seatsinfo .= 'Coach '.$onlycoach[0].',seat ';
foreach ($seats_arr as $seat_items){
$update_data->seatsinfo .= $seat_items .',';
if($update_data->ServiceName == 'notice.ticketresult'){
if ( $ctrip_backdata->ticketResult->resultCode == 1){
$update_data->OrderStatus = '4';
if (isset($ctrip_backdata->ticketResult->resultMsg)){
$update_data->ErrorMsg = $ctrip_backdata->ticketResult->resultMsg;
} else {
$update_data->ErrorMsg = '出票成功';
}
}else{
for($i=0;$i<count($coach_arr);$i++){
if($i == 0){
$update_data->seatsinfo .= 'Coach '.$coach_arr[$i].',Seat '.$seats_arr[$i].',';
}else{
if($coach_arr[$i] == $coach_arr[$i-1]){
$update_data->seatsinfo .= $seats_arr[$i].',';
}else{
$update_data->seatsinfo .= 'Coach '.$coach_arr[$i].',Seat '.$seats_arr[$i].',';
}
}
$update_data->OrderStatus = '5';
if (isset($ctrip_backdata->ticketResult->resultMsg)){
$update_data->ErrorMsg = $ctrip_backdata->ticketResult->resultMsg;
}else{
$update_data->ErrorMsg = '出票失败';
}
}
}
$update_data->ordernumber = $ctrip_backdata->ticketResult->companyOrderId;
if (isset($ctrip_backdata->ticketResult->orderMasterInfo->totalPayAmount)){
$update_data->OrderTotleFee = $ctrip_backdata->ticketResult->orderMasterInfo->totalPayAmount; //总价
}
if (isset($ctrip_backdata->ticketResult->operateTradeNo)) {
$update_data->operateTradeNo = $ctrip_backdata->ticketResult->operateTradeNo; //操作流水号 如产生差额退款或者无票退款,退款通知里会有相同的操作流水号做对应。
}
$update_data->seatsinfo = substr($update_data->seatsinfo,0,strlen($update_data->seatsinfo)-1);
$update_data->bookcallback = $back_json;
//$update_data->OrderTicketTime = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfo->OrderTicketTime;
//新接口数据,不一定保存到数据库里面,原订单已有,做个记录
if (isset( $ctrip_backdata->ticketResult->ticketSuccTime)){
$update_data->ticketSuccTime = $ctrip_backdata->ticketResult->ticketSuccTime; //出票成功时间
}
$update_data->orderType = $ctrip_backdata->ticketResult->orderMasterInfo->orderType; //订单类型 0电子票 1配送票 2人工客票 3抢票订单
$update_data->contactName = $ctrip_backdata->ticketResult->orderMasterInfo->contactName; //联系人
$update_data->mobileNo = $ctrip_backdata->ticketResult->orderMasterInfo->mobileNo; //联系电话 (DES加密
//人员及车票
$data_passager = new stdClass();
if($person_num > 1){
//对订票乘客进行存储
foreach ( $ctrip_backdata->ticketResult->passengerInfoList as $pItems) {
//人员列表
$data_passager->status = '4';
$data_passager->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
if(is_array($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket)){
foreach($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket as $tickets_item){
if(is_array($tickets_item->DetailInfos->DetailInfo)){
foreach($tickets_item->DetailInfos->DetailInfo as $ticket_item2){
$data_passager->realname = $ticket_item2->PassengerName;
$data_passager->identitytype = $ticket_item2->IdentityType;
$data_passager->numberid = $ticket_item2->NumberID;
$data_passager->ticketype = $tickets_item->TicketType;
$data_passager->ticketprice = $tickets_item->OrderTicketPrice;
$data_passager->seatype = $tickets_item->OrderTicketSeat;
$data_passager->seatdetail = $ticket_item2->SeatNo;
$data_passager->longtrainno = $ticket_item2->LongTrainNo;
$data_passager->TOC_VEI_SN = 28209;
$this->train_system_model->add_passagers($data_passager);
$data_passager->identitytype = $pItems->certificateType;
$data_passager->realname = $pItems->certificateName;
$data_passager->numberid = des_decrypt($pItems->certificateNo,$key) ; //证件号码 (DES加密
$data_passager->birthday = $pItems->birthday;
if ($pItems->passengerType==2){
$passengerType = "儿童";
}else{
$passengerType = "成人";
}
$data_passager->ticketype = $passengerType; //乘客类型 1成人 2儿童
$passengerId = $pItems->passengerId;
foreach ( $ctrip_backdata->ticketResult->orderRouteInfoList as $rItems ){
//行程,目前我们都是单程提交,所以这里应该只有单程
$routeId = $rItems->routeId;
if (isset($rItems->elecNo)){
$elecNo = $rItems->elecNo; //电子订单号即12306取票号
$update_data->ElectronicOrderNumber = $elecNo ;
}
if (isset($rItems->checkWindow)){
$checkWindow = $rItems->checkWindow; //检票口
$update_data->TicketCheck = $checkWindow;
}
$data_passager->seatype = $rItems->ticketSeat;
$update_data->trainNo = $rItems->trainNo; //车次
$update_data->departTime = $rItems->departTime; //车次出发时间
foreach ($ctrip_backdata->ticketResult->orderTicketInfoList as $tItems) {
//对应的车票列表
if ($passengerId == $tItems->passengerId && $routeId==$tItems->routeId){
$data_passager->ticketprice = $tItems->realTicketPrice;
$SeatNo = "";
if (isset($tItems->carriageNo)){
$SeatNo.=$tItems->carriageNo;
}
}else{
$data_passager->realname = $tickets_item->DetailInfos->DetailInfo->PassengerName;
$data_passager->identitytype = $tickets_item->DetailInfos->DetailInfo->IdentityType;
$data_passager->numberid = $tickets_item->DetailInfos->DetailInfo->NumberID;
$data_passager->ticketype = $tickets_item->TicketType;
$data_passager->ticketprice = $tickets_item->OrderTicketPrice;
$data_passager->seatype = $tickets_item->OrderTicketSeat;
$data_passager->seatdetail = $tickets_item->DetailInfos->DetailInfo->SeatNo;
$data_passager->longtrainno = $tickets_item->DetailInfos->DetailInfo->LongTrainNo;
$data_passager->TOC_VEI_SN = 28209;
if (isset($tItems->seatNo)){
$SeatNo.=$tItems->seatNo;
}
$data_passager->seatdetail = $SeatNo;
$data_passager->longtrainno = $tItems->longElecNo;
//入库
$this->train_system_model->add_passagers($data_passager);
}
}
}else{
foreach($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo as $items){
//对订票乘客进行存储
$data_passager->status = '4';
$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;
$data_passager->longtrainno = $items->LongTrainNo;
$data_passager->TOC_VEI_SN = 28209;
$this->train_system_model->add_passagers($data_passager);
}
}
}else{
//对订票乘客进行存储
$data_passager->status = '4';
$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;
$data_passager->longtrainno = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo->LongTrainNo;
$data_passager->TOC_VEI_SN = 28209;
$this->train_system_model->add_passagers($data_passager);
}
/****************************************************************************************/
//添加支付记录
$add_train_payment_data = new stdClass();
@ -321,34 +318,34 @@ class callback extends CI_Controller{
$order_info = $this->train_system_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_TrainNumber = $update_data->trainNo;
$add_train_payment_data->TOC_DepartureDate = date('Y-m-d',strtotime($update_data->departTime ));
$add_train_payment_data->TOC_TicketCost = $update_data->OrderTotleFee;
$add_train_payment_data->poundage = ($person_num*5)."";//手续费,每人五块,转换成字符串
$add_train_payment_data->poundage = "";
$add_train_payment_data->FOI_TrainNetOrderNo = $update_data->ElectronicOrderNumber;
//print_r($add_train_order_data);die();
$this->BIZ_train_model->add_train_payment($add_train_payment_data);
//记录供应商(瀚特)
$this->BIZ_train_model->update_cold_planvei_sn($cold_sn,'28209');
}else if($update_data->ServiceName == 'web.order.notifyNoTicket'){
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
}else if($update_data->ServiceName == 'notice.ordercancel'){ //订单取消
$update_data->ordernumber = $ctrip_backdata->cancelResult->companyOrderId;
$update_data->OrderStatus = '1';
$update_data->ErrorMsg = $ctrip_backdata->TrainOrderService->OrderInfo->NoTicketReasons;
$update_data->ErrorMsg = $ctrip_backdata->cancelResult->cancelTime;
$update_data->confirmcallback = $back_json;
}else if($update_data->ServiceName == 'web.order.returnTicketNotice'){
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber;
}else if($update_data->ServiceName == 'notice.refundresult'){ //退票
$update_data->ordernumber = $ctrip_backdata->refundResult->companyOrderId;
$update_data->OrderStatus = '7';
$update_data->ErrorMsg = $ctrip_backdata->TrainOrderService->refundTicket->reason;
$update_data->ErrorMsg = $ctrip_backdata->refundResult->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->train_system_model->update_passpager_info($passpager_info);
// //退票时还需要单独对对每个乘客存储回调信息
// $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->train_system_model->update_passpager_info($passpager_info);
}elseif($update_data->ServiceName == 'web.order.returnRescheduleResult'){
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber;
$update_data->OrderStatus = '7';
@ -363,23 +360,23 @@ class callback extends CI_Controller{
$passpager_info->numberid = $ctrip_backdata->TrainOrderService->refundRescheduleTicket->passport;
$this->train_system_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;
// $return_order = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
// $return_money = $ctrip_backdata->TrainOrderService->TotalRefundAmount;
//根据订单号获取cold_sn
$order_info = $this->train_system_model->get_order_info($return_order);
$cold_sn = $order_info->ts_cold_sn;
//print_r($order_info);
// //根据订单号获取cold_sn
// $order_info = $this->train_system_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->BIZ_train_model->add_train_payment($add_train_payment_data);
return false;
// $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->BIZ_train_model->add_train_payment($add_train_payment_data);
// return false;
}else if ($update_data->ServiceName == 'web.order.rescheduleResult'){
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
$reschedule_status = $ctrip_backdata->TrainOrderService->OrderInfo->RescheduleTicketInfo->RescheduleTickets->RescheduleTicket->status;
@ -402,6 +399,12 @@ class callback extends CI_Controller{
}
//更新订单信息(出票系统)
$this->train_system_model->update_orders($update_data);
// //返回结果
// $returnResult = new stdClass();
// $returnResult->returnCode = 1;
// $returnResult->returnMsg = "";
// echo(json_encode($returnResult));
}
}
}

@ -572,16 +572,22 @@ class innerTrainSearch extends CI_Controller{
$TimeStamp = date("Y-m-d H:i:s");
//$TimeStamp = time();
$serviceName = "train.getAllStations";
$companyId = "4003171843";
$key = "hajkrtbc";
// $companyId = "4003171843";
// $key = "hajkrtbc";
/** 测试服务器 */
$companyId = "1503141150";
$key = "hajkrtbcc";
$strSign = $TimeStamp.$serviceName.$companyId.$key;
$sign = md5($strSign);
$E_sign = md5(urlencode($strSign));
//echo($strSign . "<hr/>");
echo($sign. "<hr/>");
echo($E_sign. "<hr/>");
$JSONRETURN = "http://apiproxy-uat.ctripqa.com/apiproxy/soa2/19946";
//$JSONRETURN = "https://apiproxy.ctrip.com/apiproxy/soa2/19946";
//$JSONRETURN = "http://apiproxy-uat.ctripqa.com/apiproxy/soa2/19946";
$JSONRETURN = "https://apiproxy.ctrip.com/apiproxy/soa2/19946";
$data["TimeStamp"] = $TimeStamp;
$data["serviceName"] = $serviceName;
$data["companyId"] = $companyId;

@ -15,9 +15,9 @@ class pages extends CI_Controller{
//首页
public function index($coli_id = null){
if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){
redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/');
}
// if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){
// redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/');
// }
if($coli_id == null){
$cols_id = $this->input->post("ht_order");
@ -49,7 +49,7 @@ class pages extends CI_Controller{
}else{
$list->balance = "NULL";
}
//print_r($list);
// print_r(json_encode($list));
$this->load->view('common/header');
$this->load->view('homepage',$list);
$this->load->view('common/footer');
@ -57,9 +57,10 @@ class pages extends CI_Controller{
//系统列表页面
public function order_list(){
if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){
redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/');
}
// if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){
// redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/');
// }
$page_size = 10;
$page = $this->input->get("page");
$order = $this->input->get("order");
@ -82,7 +83,7 @@ class pages extends CI_Controller{
//获取订单数据
$data = $this->train_system_model->get_order($page_size,$page,$where);
//print_r($data);die();
// print_r(json_encode($data));die();
$list["data"]=$data->list;
$this->load->library('pagination');
@ -95,7 +96,7 @@ class pages extends CI_Controller{
$config['cur_tag_open'] = '<li class="active"><a href="#">';
$config['cur_tag_close'] = '</a></li>';
$config['first_tag_open']=$config['last_tag_open']=$config['next_tag_open']=$config['prev_tag_open']=$config['num_tag_open']="<li>";
$config['first_tag_close']=$config['last_tag_close']=$config['next_tag_close']=$config['prev_tag_close']=$config['num_tag_close']="</li>";
$config['first_tag_close']=$config['lasbt_tag_close']=$config['next_tag_close']=$config['prev_tag_close']=$config['num_tag_close']="</li>";
$this->pagination->initialize($config);
@ -113,9 +114,9 @@ class pages extends CI_Controller{
//订单详情页面
public function order(){
if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){
redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/');
}
// if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){
// redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/');
// }
$ordernumber = $order=$this->input->get("order");
if(empty($ordernumber)){
@ -228,4 +229,4 @@ class pages extends CI_Controller{
$this->load->view('export');
$this->load->view('footer');
}
}
}

@ -372,5 +372,57 @@ function get_name_cn($seat_code){
}
/**
* 解密函数
* 算法des
* 加密模式ecb
* 补齐方法PKCS5
* @param unknown_type $input
*/
function des_encrypt($data, $key) {
$data = pkcs5_pad($data, 8); //确保数据长度是8的倍数并使用PKCS5填充
$iv = "\x01\x02\x03\x04\x05\x06\x07\x08"; //PHP版本的初始化向量可以自定义
$cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($cipher, $key, $iv);
$encrypted = mcrypt_generic($cipher, $data);
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
return base64_encode($encrypted); //将密文以base64编码输出
}
function des_decrypt($data, $key) {
$iv = "\x01\x02\x03\x04\x05\x06\x07\x08"; //PHP版本的初始化向量可以自定义
$cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($cipher, $key, $iv);
$decrypted = mdecrypt_generic($cipher, base64_decode($data)); //将密文先解码后解密
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
return pkcs5_unpad($decrypted); //移除PKCS5填充并输出明文
}
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);
}
?>

@ -19,8 +19,10 @@ class BIZ_train_model extends CI_Model {
,bbp.BPE_Passport
,bbp.BPE_PassportType
,bbp.BPE_SEX
,bbp.BPE_BirthDate
,bbp.BPE_PassExpdate
,CONVERT(VARCHAR(10),BPE_BirthDate,120) as BPE_BirthDate
,(case ISDATE(BPE_PassExpdate)
when 1 then CONVERT(VARCHAR(10),CONVERT(datetime,BPE_PassExpdate,120),120)
else null end) as BPE_PassExpdate
FROM BIZ_BookPeople bbp
WHERE BPE_SN in(".$bpe_sn.")
";
@ -49,6 +51,10 @@ class BIZ_train_model extends CI_Model {
,bbp.BPE_GuestType
,bbp.BPE_Passport
,bbp.BPE_PassportType
,CONVERT(VARCHAR(10),BPE_BirthDate,120) as BPE_BirthDate
,(case ISDATE(BPE_PassExpdate)
when 1 then CONVERT(VARCHAR(10),CONVERT(datetime,BPE_PassExpdate,120),120)
else null end) as BPE_PassExpdate
FROM BIZ_BookPeople bbp
WHERE EXISTS(
SELECT TOP 1 1

@ -190,8 +190,9 @@ class train_system_model extends CI_Model {
ts_checkdoor = '{$data->TicketCheck}',
ts_elecnumber = '{$data->ElectronicOrderNumber}',
ts_orderamount = '{$data->OrderTotleFee}',
ts_bookcallback = '{$data->bookcallback}',
ts_startime = '{$data->OrderTicketTime}',";
ts_operateTradeNo = '{$data->operateTradeNo}',
ts_bookcallback = '{$data->bookcallback}',";
//ts_startime = '{$data->OrderTicketTime}',
}else if(!empty($data->confirmcallback)){
$where .= "ts_confirmcallback = '{$data->confirmcallback}',";
}else if(!empty($data->returncallback)){
@ -211,6 +212,24 @@ class train_system_model extends CI_Model {
//echo $sql;die();
$query = $this->INFO->query($sql);
}
//更新订单信息,下订单和支付保存状态
public function update_orders_msg($data){
$where = " ts_bookcallback = '{$data->bookcallback}',";
$sql ="
update trainsystem
set
ts_status = '{$data->OrderStatus}',
ts_errormsg = '{$data->ErrorMsg}',
".substr($where,0,strlen($where)-1)."
where
ts_ordernumber = '{$data->ordernumber}'
";
//echo $sql;die();
$query = $this->INFO->query($sql);
}
//更新乘客表信息
public function update_passpager_info($data){

@ -135,6 +135,8 @@ function selseat(seat){
<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>
@ -149,6 +151,8 @@ function selseat(seat){
<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>
<td><?php echo $p->BPE_BirthDate;?></td>
<td><?php echo $p->BPE_PassExpdate;?></td>
</tr>
<?php endforeach;?>
<tr style="text-align:;">

@ -7,6 +7,7 @@
* @Description: In User Settings Edit
* @FilePath: \information-system\application\third_party\updatetrain\controllers\updatestation.php
* 本地运行地址http://202.103.68.144:65008/info.php/thirdparty/updatetrain/updatestation/
* 前台的接口也需要更新一次https://cht.mycht.cn/info.php/apps/trainsystem/innerTrainSearch/getallstation
*/

@ -58,46 +58,54 @@
<li class="dropdown"><a href="/japan/tours" class="p_topnavilink">Japan</a></li>
<li class="dropdown"><a href="/southeast-asia/tours/thailand-cambodia-and-vietnam"
class="p_topnavilink" id="thailand_vietnam_cambodia_pc">Thailand-Vietnam-Cambodia</a>
<div class=" dropdown-content">
<div class="inspirationinfo">
<div class="inspirationlist besttime">
<span class="inspirationtitle">Thailand-Vietnam-Cambodia:</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/southeast-asia/tours/highlights-of-thailand-cambodia-and-vietnam">3-Week Itinerary (In-depth)</a></li>
<li><a href="/southeast-asia/tours/best-of-thailand-cambodia-and-vietnam"> 2-Week Itinerary (Classic)</a></li>
<li><a href=" /southeast-asia/tours/from-south-vietnam-to-north-cambodia">1-Week Itinerary (Time-smart)</a></li>
</ul>
</div>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">Vietnam & Cambodia:</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/southeast-asia/tours/vietnam-cambodia-family-tour">2-Week Itinerary for Family</a></li>
<li><a href="/southeast-asia/tours/vietnam-cambodia-mekong-cruise">2-Week Itinerary for Retired Couple</a></li>
</ul>
</div>
</div>
<div class="inspirationlist vacationtype">
<span class="inspirationtitle">Vietnam & Thailand:</span>
<div class=" dropdown-content">
<div class="inspirationinfo">
<div class="inspirationlist besttime">
<span class="inspirationtitle">Thailand-Vietnam-Cambodia:</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/southeast-asia/tours/classic-vietnam-and-thailand">2-Week Itinerary (In-depth)</a></li>
<li><a
href="/southeast-asia/tours/highlights-of-thailand-cambodia-and-vietnam">3-Week
Itinerary (In-depth)</a></li>
<li><a href="/southeast-asia/tours/best-of-thailand-cambodia-and-vietnam">
2-Week Itinerary (Classic)</a></li>
<li><a href=" /southeast-asia/tours/from-south-vietnam-to-north-cambodia">1-Week
Itinerary (Time-smart)</a></li>
</ul>
</div>
<div class="inspirationlist festival">
<span class="inspirationtitle">Thailand & Cambodia:</span>
</div>
<div class="inspirationlist topthings">
<span class="inspirationtitle">Vietnam & Cambodia:</span>
<div class="listtour">
<ul class="inspiration">
<li><a href="/southeast-asia/tours/best-of-thailand-and-cambodia">2-Week Itinerary (In-depth)</a></li>
<li><a href="/southeast-asia/tours/vietnam-cambodia-family-tour">2-Week
Itinerary for Family</a></li>
<li><a href="/southeast-asia/tours/vietnam-cambodia-mekong-cruise">2-Week
Itinerary for Retired Couple</a></li>
</ul>
</div>
</div>
<div class="inspirationlist vacationtype">
<span class="inspirationtitle">Vietnam & Thailand:</span>
<ul class="inspiration">
<li><a href="/southeast-asia/tours/classic-vietnam-and-thailand">2-Week
Itinerary (In-depth)</a></li>
</ul>
</div>
<div class="inspirationlist festival">
<span class="inspirationtitle">Thailand & Cambodia:</span>
<ul class="inspiration">
<li><a href="/southeast-asia/tours/best-of-thailand-and-cambodia">2-Week
Itinerary (In-depth)</a></li>
</ul>
</div>
</div>
</li>
</div>
</li>
<li class="dropdown"><a class="p_topnavilink" href="/destinations">Destinations</a>
<div class=" dropdown-content">
@ -106,10 +114,12 @@
<ul class="inspiration" style="width:280px;">
<li><a href="/tours">Top Asia Tours</a></li>
<li><a href="/southeast-asia/tours">Southeast Asia</a></li>
<li><a href="/indian-continent/tours/india-nepal-sri-lanka-bhutan">India, Nepal, Sri Lanka, Bhutan</a></li>
<li><a href="/caucasus-central-asia/tours">Caucasus and Central Asia</a></li>
<li><a href="https://www.chinahighlights.com/tour/" target="_blank">China</a></li>
<li><a href="/southeast-asia/tours">Southeast Asia</a></li>
<li><a href="/indian-continent/tours/india-nepal-sri-lanka-bhutan">India, Nepal,
Sri Lanka, Bhutan</a></li>
<li><a href="/caucasus-central-asia/tours">Caucasus and Central Asia</a></li>
<li><a href="https://www.chinahighlights.com/tour/" target="_blank">China</a>
</li>
</ul>
<ul class="inspiration">
<li><a href="/thailand">Thailand</a></li>
@ -117,7 +127,7 @@
<li><a href="/cambodia">Cambodia</a></li>
<li><a href="/bali">Indonesia(Bali)</a></li>
</ul>
<ul class="inspiration">
<ul class="inspiration">
<li><a href="/japan">Japan</a></li>
<li><a href="/singapore">Singapore</a></li>
<li><a href="/laos">Laos</a></li>
@ -127,7 +137,7 @@
<li><a href="/india">India</a></li>
<li><a href="/nepal">Nepal</a></li>
<li><a href="/bhutan">Bhutan</a></li>
<li><a href="/srilanka">Sri Lanka</a></li>
<li><a href="/srilanka">Sri Lanka</a></li>
</ul>
</div>
@ -142,20 +152,21 @@
<div class="listtour">
<ul class="inspiration">
<li><a href="/japan/plan-a-trip">Japan</a></li>
<li><a href="/southeast-asia/plan-first-trip">Southeast Asia</a></li>
<li><a href="/southeast-asia/plan-first-trip">Southeast Asia</a></li>
<li><a href="/thailand/plan-your-trip">Thailand</a></li>
<li><a href="/vietnam/planning-a-vietnam-trip">Vietnam</a></li>
<li><a href="/indonesia/bali/trip-plan">Indonesia</a></li>
<li><a href="/india/plan-a-trip">India</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/plan-first-trip.htm" target="_blank">China</a></li>
<li><a href="/india/plan-a-trip">India</a></li>
<li><a href="https://www.chinahighlights.com/travelguide/plan-first-trip.htm"
target="_blank">China</a></li>
</ul>
<ul class="inspiration">
<li><a href="/nepal/plan-a-trip">Nepal</a></li>
<li><a href="/bhutan/plan-a-trip">Bhutan</a></li>
<li><a href="/cambodia/top-things-to-do-in-siem-reap">Cambodia</a></li>
<li><a href="/laos/trip-plan">Laos</a></li>
<li><a href="/myanmar/how-to-plan-a-trip">Myanmar</a></li>
<li><a href="/singapore/plan-your-trip">Singapore</a></li>
<li><a href="/myanmar/how-to-plan-a-trip">Myanmar</a></li>
<li><a href="/singapore/plan-your-trip">Singapore</a></li>
</ul>
</div>
</div>
@ -165,11 +176,12 @@
<div class="listtour">
<ul class="inspiration">
<li><a href="/japan/best-time-to-visit">Japan</a></li>
<li><a href="/southeast-asia/best-time-to-visit">Southeast Asia</a></li>
<li><a href="/thailand/best-time-to-visit"> Thailand</a></li>
<li><a href="/southeast-asia/best-time-to-visit">Southeast Asia</a></li>
<li><a href="/thailand/best-time-to-visit"> Thailand</a></li>
<li><a href="/vietnam/climate-and-weather">Vietnam</a></li>
<li><a href="/cambodia/best-time-to-visit">Cambodia</a></li>
<li><a href="https://www.chinahighlights.com/weather/china-best-times.htm" target="_blank">China</a></li>
<li><a href="https://www.chinahighlights.com/weather/china-best-times.htm"
target="_blank">China</a></li>
</ul>
<ul class="inspiration">
<li><a href="/india/best-time-to-visit">India</a></li>
@ -180,12 +192,13 @@
</ul>
</div>
</div>
<div class="inspirationlist vacationtype">
<span class="inspirationtitle">Vacation Type</span>
<ul class="inspiration">
<li><a href="/southeast-asia/multi-generational-family-trip-planner">Family Tours</a></li>
<li><a href="/southeast-asia/multi-generational-family-trip-planner">Family
Tours</a></li>
<li><a href="/asia/romantic-trip/how-to-plan">Anniversary/Honeymoon</a></li>
<li><a href="/southeast-asia/top-beaches">Beach Relaxation</a></li>
<li><a href="/thailand/trekking">Trekking Tours</a></li>
@ -202,7 +215,8 @@
<li><a href="/india/holi/date">Holi in India</a></li>
<li><a href="/thailand/songkran-festival">Thai New Year (Water Festival)</a>
</li>
<li><a href="https://www.chinahighlights.com/travelguide/special-report/chinese-new-year/" target="_blank">Chinese New Year</a>
<li><a href="https://www.chinahighlights.com/travelguide/special-report/chinese-new-year/"
target="_blank">Chinese New Year</a>
</li>
</ul>
</div>
@ -232,7 +246,8 @@
</div>
</div>
</header>
<div class="updated_news">How to Plan an Incredible Family Trip to Japan in 2023/2024. <a href="/japan/how-to-plan-a-family-trip-to-japan">Learn more.</a></div>
<div class="updated_news">How to Plan an Incredible Family Trip to Japan in 2023/2024. <a
href="/japan/how-to-plan-a-family-trip-to-japan">Learn more.</a></div>
<!--PC头部 结束-->
<!--@HEAD_1@-->
@ -251,7 +266,8 @@
<li class="worryfree"><strong>Worry-free planning: </strong>Your 1:1 travel consultant in Asia will
take all the uncertainty out of your planning, helping you navigate any travel restrictions. 
</li>
<li class="norisk"><strong>No-risk booking:</strong> 100% refund policy! (prior to 3 weeks before departure, <a href="/terms-of-use" target="blank">more details</a>)</li>
<li class="norisk"><strong>No-risk booking:</strong> 100% refund policy! (prior to 3 weeks before
departure, <a href="/terms-of-use" target="blank">more details</a>)</li>
</ul>
</div>
<!--@TIPS-RIGHT@-->
@ -267,7 +283,8 @@
<!--PC底部-->
<div class="infotailor">
<span class="infotailorword">We are here to help you...<br> Start planning your tailor-made tour with 1-1 help from our travel advisors.
<span class="infotailorword">We are here to help you...<br> Start planning your tailor-made tour with 1-1 help
from our travel advisors.
<span class="infotailormade"><a href="/forms/tailormade?product_code=">Create My Trip</a></span>
</span>
@ -328,6 +345,50 @@
</div>
</div>
<div class="bottom_destinations">
<div class="footerbox"> <div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/southeast-asia/tours">Southeast Asia Tours</a></li>
<li><a href="/japan/tours">Japan Tours</a></li>
<li><a href="/thailand/tours">Thailand Tours</a></li>
<li><a href="/vietnam/tours">Vietnam Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/cambodia/tours">Cambodia Tours</a></li>
<li><a href="/singapore">Singapore</a></li>
<li><a href="/indonesia/bali/tours">Bali Tours</a></li>
<li><a href="/laos/trip-plan">Laos</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/india/tours">India Tours</a></li>
<li><a href="/nepal">Nepal</a></li>
<li><a href="/bhutan">Bhutan</a></li>
<li><a href="/srilanka">Sri Lanka</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/myanmar/tours">Myanmar Tours</a></li>
<li><a href="/caucasus-central-asia/tours">Caucasus and Central Asia Tours</a></li>
<li><a href="https://www.chinahighlights.com/tour/" target="_blank">China Tours</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="infobottom">
<div class="footerbox">

@ -306,6 +306,43 @@
</div>
</div>
<div class="bottom_destinations">
<div class="footerbox">
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/southeast-asia/tours">Southeast Asia Tours</a></li>
<li><a href="/thailand/tours">Thailand Tours</a></li>
<li><a href="/cambodia/tours">Cambodia Tours</a></li>
<li><a href="/indonesia/bali/tours">Bali Tours</a></li>
<li><a href="/india/tours">India Tours</a></li>
<li><a href="/bhutan">Bhutan</a></li>
<li><a href="/myanmar/tours">Myanmar Tours</a></li>
<li><a href="/caucasus-central-asia/tours">Caucasus and Central Asia Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/japan/tours">Japan Tours</a></li>
<li><a href="/vietnam/tours">Vietnam Tours</a></li>
<li><a href="/singapore">Singapore</a></li>
<li><a href="/laos/trip-plan">Laos</a></li>
<li><a href="/nepal">Nepal</a></li>
<li><a href="/srilanka">Sri Lanka</a></li>
<li><a href="https://www.chinahighlights.com/tour/" target="_blank">China Tours</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="infobottom">
<div class="bottomlogoinfo">At Asia Highlights, we are committed to providing you an affordable, quality private
tour, whether it's a milestone trip, family trip, or bucketlist trip — your planning will be made easy with

@ -296,6 +296,87 @@
</table>
</div>
</div>
<div class="bottom_destinations">
<div class="list_content">
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/tour/top-china-tours/">Top 10 Tours</a></li>
<li><a href="/tour/china-panda-tours/">Panda Tours</a></li>
<li><a href="/tour/family-tours/">Family Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/tour/chinese-food-tours/">Food Tours</a></li>
<li><a href="/tour/china-nature-tours/">Nature Tours</a></li>
<li><a href="/tour/photo-tours/">Photography Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/tour/hassle-free-china-visas.htm">Visa-free Tours</a></li>
<li><a href="/tour/china-hiking-tours/">Hiking Tours</a></li>
<li><a href="/tour/china-biking-tours/">Biking Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/tour/china-festival-tours/">Festival Tours</a></li>
<li><a href="/tour/asia-tours/">Top Asia Tours</a></li>
</ul>
</div>
</div>
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/beijing/tours.htm">Beijing Tours</a></li>
<li><a href="/chengdu/tours.htm">Chengdu Tours</a></li>
<li><a href="/chongqing/tours.htm">Chongqing Tours</a></li>
<li><a href="/greatwall/tours/">Great Wall Tours</a></li>
<li><a href="/guilin/tours.htm">Guilin Tours</a></li>
<li><a href="/guizhou/tours.htm">Guizhou Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/harbin/tours.htm">Harbin Tours</a></li>
<li><a href="/hangzhou/tours.htm">Hangzhou Tours</a></li>
<li><a href="/huangshan/tours.htm">Huangshan Tours</a></li>
<li><a href="/hong-kong/tours.htm">Hong Kong Tours</a></li>
<li><a href="/inner-mongolia/tours/">Inner Mongolia Tours</a></li>
<li><a href="/jiuzhaigou/tours.htm">Jiuzhaigou Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/pingyao/tours.htm">Pingyao Tours</a></li>
<li><a href="/shanghai/tours.htm">Shanghai Tours</a></li>
<li><a href="/suzhou/tours.htm">Suzhou Tours</a></li>
<li><a href="/tour/silk-road-tours/">Silk Road Tours</a></li>
<li><a href="/tibet/tours.htm">Tibet Tours</a></li>
<li><a href="/taiwan/tours.htm">Taiwan Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/tour/top-china-tours-from-hongkong.htm">Tours from Hong Kong</a></li>
<li><a href="/tour/top-china-tours-from-shanghai.htm">Tours from Shanghai</a></li>
<li><a href="/xinjiang/tours/">Xinjiang Tours</a></li>
<li><a href="/xiamen/tours.htm">Xiamen Tours</a></li>
<li><a href="/yunnan/tours.htm">Yunnan Tours</a></li>
<li><a href="/tour/yangtze-river-tours/">Yangtze River Tours</a></li>
<li><a href="/zhangjiajie/tours.htm">Zhangjiajie Tours</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="footerbox">
<div class="list_content">
<div class="aboutusleft">

@ -2,11 +2,18 @@
<script src="https://data.chinahighlights.com/js/min.php?f=/js/flatpickr-4.6.1.min.js"></script>
<div class="tmbottom">
<h3 style="text-align: center; padding-top: 0;padding-bottom: 0;">Quick test: will my route qualify for China 72/144-Hour Visa-Free Transit?</h3>
<h3 style="text-align: center; padding-top: 0;padding-bottom: 0;">Quick Test: Will My Route Qualify for China 72/144-Hour Visa-Free Transit?</h3>
<div class="InquiryBox">
<form action="" method="post" novalidate="" id="qualification_tester_form">
<p >1. I will depart from:</p>
<select id="depart_from" name="depart_from" class="country_code" style="width: 100%;">
<p style="font-weight: 400;
font-size: 20px;
text-align: left;
clear: both !important;
padding-bottom: 10px;
margin-top: 20px;">1. I will depart from (only applies to direct or connected flight): </p>
<select id="depart_from" name="depart_from" class="country_code" style="width: 100%; margin-bottom: 10px;
border-radius: 6px;
height: 40px;">
<option value="United States ">United States</option>
<option value="United Kingdom ">United Kingdom</option>
<option value="Australia ">Australia</option>
@ -263,8 +270,15 @@
<option value="Zimbabwe ">Zimbabwe</option>
<option value="Åland Islands">Åland Islands</option>
</select>
<p >2. I will arrive in China at [city], [airport / railway station / port].</p>
<select id="arrive_at_city" name="arrive_at_city" class="country_code">
<p style="font-weight: 400;
font-size: 20px;
text-align: left;
clear: both !important;
padding-bottom: 10px;
margin-top: 20px;">2. I will arrive in China at [city], [airport / railway station / port].</p>
<select id="arrive_at_city" name="arrive_at_city" class="country_code" style=" margin-bottom: 10px;
border-radius: 6px;
height: 40px;">
<option value="Beijing">Beijing</option>
<option value="Shanghai">Shanghai</option>
<option value="Guangzhou">Guangzhou</option>
@ -289,19 +303,33 @@
<option value="Dalian">Dalian</option>
</select>
<select id="airport_or_railway_station" name="airport_or_railway_station" class="country_code">
<select id="airport_or_railway_station" name="airport_or_railway_station" class="country_code" style=" margin-bottom: 10px;
border-radius: 6px;
height: 40px;">
<option data-hour="144" value="Beijing Capital International Airport">Beijing Capital International Airport, PEK</option>
<option data-hour="144" value="Beijingxi Railway Station">Beijingxi Railway Station</option>
<option data-hour="144" value="Beijing Daxing International Airport">Beijing Daxing International Airport, PKX</option>
</select>
<p >3. My arrival date is...</p>
<input id="arrival_date" name="arrival_date" type="date" >
<p style="font-weight: 400;
font-size: 20px;
text-align: left;
clear: both !important;
padding-bottom: 10px;
margin-top: 20px;">3. My arrival date is...</p>
<input id="arrival_date" name="arrival_date" type="date" class="date_pick">
<span id="arrival_date_errmsg" style="display: none;">
<span class="requiredArea">Please select your arrival date.</span>
</span>
<p >4. I will leave for [country] from China.</p>
<select id="leave_for_country" name="leave_for_country" class="country_code" style="width: 100%;">
<p style="font-weight: 400;
font-size: 20px;
text-align: left;
clear: both !important;
padding-bottom: 10px;
margin-top: 20px;">4. I will leave for [country/region] from China (the bounding destination on the air ticket):</p>
<select id="leave_for_country" name="leave_for_country" class="country_code" style="width: 100%; margin-bottom: 10px;
border-radius: 6px;
height: 40px;">
<option value="United States ">United States</option>
<option value="United Kingdom ">United Kingdom</option>
<option value="Australia ">Australia</option>
@ -313,8 +341,6 @@
<option value="Netherlands ">Netherlands</option>
<option value="Singapore ">Singapore</option>
<option value="Hong Kong ">Hong Kong</option>
<option value="Afghanistan ">Afghanistan </option>
<option value="Albania ">Albania </option>
<option value="Algeria ">Algeria</option>
@ -560,13 +586,25 @@
<option value="Åland Islands">Åland Islands</option>
</select>
<p >5. My departure date is...</p>
<input id="departure_date" name="departure_date" type="date" >
<p style="font-weight: 400;
font-size: 20px;
text-align: left;
clear: both !important;
padding-bottom: 10px;
margin-top: 20px;">5. My departure date is...</p>
<input id="departure_date" name="departure_date" type="date" class="date_pick">
<span id="departure_date_errmsg" style="display: none;">
<span class="requiredArea">Please select your departure date.</span>
</span>
<p >6. My nationality is... <!--and my passport expiry date is--></p>
<select id="nationality" name="nationality" class="country_code" style="width: 100%;">
<p style="font-weight: 400;
font-size: 20px;
text-align: left;
clear: both !important;
padding-bottom: 10px;
margin-top: 20px;">6. My nationality is... <!--and my passport expiry date is--></p>
<select id="nationality" name="nationality" class="country_code" style="width: 100%; margin-bottom: 10px;
border-radius: 6px;
height: 40px;">
<option data-qualify="enable" value="United States ">United States</option>
<option data-qualify="enable" value="United Kingdom ">United Kingdom</option>
<option value="Australia ">Australia</option>
@ -838,23 +876,24 @@
<button class="sendButton" id="take_a_test_button" name="take_a_test_button" type="button" style="width: 100%; margin-top: 70px;">Take a Test</button>
</div>
</form>
<div id="result_box" style="display: none; padding: 0 20px; text-align: left;">
<div id="result_box" style="display: none; padding: 0 20px; text-align: left; font-size: 19px; ">
<h3 style="text-align: left; padding-bottom: 0;">Result:</h3>
<p id="qualify_72hours" style="display: none"><strong>You qualify to enjoy China's 72-hour visa-free policy.</strong></p>
<p id="qualify_144hours" style="display: none"><strong>You qualify to enjoy China's 144-hour visa-free policy.</strong></p>
<p id="qualify_no" style="display: none"><strong>You don't qualify to enjoy China's 72-hour or 144-hour visa-free policy.</strong></p>
</div>
<div id="reason_box" style="display: none; padding: 0 20px; text-align: left;">
<div id="reason_box" style="display: none; padding: 0 20px; text-align: left; font-size: 19px; font-weight: 400;">
<p>Reason you don't qualify:</p>
<ul class="infolist">
<li id="error_transit" style="display: none">You must be in transit to a third country or region.</li>
<li id="error_72hours" style="display: none">You must not leave the city area (prefecture or municipality) during the 72/144 hours (the 72/144-hour limit is calculated starting from 00:00 on the day after arrival, i.e. 24:00 on the arrival date).</li>
<li id="error_72hours" style="display: none">You must leave the city area (prefecture or municipality) after the 72/144 hours (the 72/144-hour limit is calculated starting from 00:00 on the day after arrival, i.e. 24:00 on the arrival date).</li>
<!--<li id="error_3months" style="display: none">Your passport must be valid for more than 3 months at the time of entry into China.</li>-->
<li id="error_eligible" style="display: none">Your passport nationality is not eligible for the 72/144-hour visa exemption program.</li>
<!-- <li id="error_refusal" style="display: none">You have Chinese visa refusal stamps in your passport.</li>-->
</ul>
</div><p id="tip_box" style="display: none; padding:0 20px;">
</div>
<p id="tip_box" style="display: none; padding:0 20px; text-align: left; font-weight: 400; font-size: 19px;">
<strong >Note:</strong> <br>
Your passport must be valid for more than 3 months at the time of entry into China. <br>
You dont't have Chinese visa refusal stamps in your passport.<br>
@ -1150,32 +1189,12 @@ ready(el => {
});
</script>
<style>
.tmbottom p {
font-weight: 400;
font-size: 20px;
text-align: left;
clear: both !important;
padding-bottom: 10px;
margin-top: 20px;
}
select.country_code {
margin-bottom: 10px;
border-radius: 6px;
height: 40px;
}
.InquiryBox input {
width: 92%;
.date_pick { width: 92% !important;
background: url(https://data.chinahighlights.com/pic/top10/tour-calendar.png) no-repeat 15px #fff;
padding-left: 50px;
border-radius: 6px;
height: 40px;
}
@media (max-width: 750px) {
.InquiryBox input {
width: 86%;
}
}
padding-left: 50px !important;
border-radius: 6px !important;
height: 40px !important;}
@media (max-width: 750px) {
.date_pick {width: 100% !important;}
}
</style>

@ -322,6 +322,71 @@
</div>
</div>
<div class="bottom_destinations">
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/tour/top-china-tours/">Top 10 Tours</a></li>
<li><a href="/tour/china-panda-tours/">Panda Tours</a></li>
<li><a href="/tour/family-tours/">Family Tours</a></li>
<li><a href="/tour/chinese-food-tours/">Food Tours</a></li>
<li><a href="/tour/china-nature-tours/">Nature Tours</a></li>
<li><a href="/tour/photo-tours/">Photography Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/tour/hassle-free-china-visas.htm">Visa-free Tours</a></li>
<li><a href="/tour/china-hiking-tours/">Hiking Tours</a></li>
<li><a href="/tour/china-biking-tours/">Biking Tours</a></li>
<li><a href="/tour/china-festival-tours/">Festival Tours</a></li>
<li><a href="/tour/asia-tours/">Top Asia Tours</a></li>
</ul>
</div>
</div>
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/beijing/tours.htm">Beijing Tours</a></li>
<li><a href="/chengdu/tours.htm">Chengdu Tours</a></li>
<li><a href="/chongqing/tours.htm">Chongqing Tours</a></li>
<li><a href="/greatwall/tours/">Great Wall Tours</a></li>
<li><a href="/guilin/tours.htm">Guilin Tours</a></li>
<li><a href="/guizhou/tours.htm">Guizhou Tours</a></li>
<li><a href="/harbin/tours.htm">Harbin Tours</a></li>
<li><a href="/hangzhou/tours.htm">Hangzhou Tours</a></li>
<li><a href="/huangshan/tours.htm">Huangshan Tours</a></li>
<li><a href="/hong-kong/tours.htm">Hong Kong Tours</a></li>
<li><a href="/inner-mongolia/tours/">Inner Mongolia Tours</a></li>
<li><a href="/jiuzhaigou/tours.htm">Jiuzhaigou Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/pingyao/tours.htm">Pingyao Tours</a></li>
<li><a href="/shanghai/tours.htm">Shanghai Tours</a></li>
<li><a href="/suzhou/tours.htm">Suzhou Tours</a></li>
<li><a href="/tour/silk-road-tours/">Silk Road Tours</a></li>
<li><a href="/tibet/tours.htm">Tibet Tours</a></li>
<li><a href="/taiwan/tours.htm">Taiwan Tours</a></li>
<li><a href="/tour/top-china-tours-from-hongkong.htm">Tours from Hong Kong</a></li>
<li><a href="/tour/top-china-tours-from-shanghai.htm">Tours from Shanghai</a></li>
<li><a href="/xinjiang/tours/">Xinjiang Tours</a></li>
<li><a href="/xiamen/tours.htm">Xiamen Tours</a></li>
<li><a href="/yunnan/tours.htm">Yunnan Tours</a></li>
<li><a href="/tour/yangtze-river-tours/">Yangtze River Tours</a></li>
<li><a href="/zhangjiajie/tours.htm">Zhangjiajie Tours</a></li>
</ul>
</div>
</div>
</div>
<div class="infobottom">
<img src="https://data.chinahighlights.com/pic/logo/bottom-logo-b.png" alt="China Highlights Logo" width="152px"

@ -697,6 +697,43 @@
</div>
<div class="clear"></div>
<div class="bottom_destinations">
<div class="footerbox">
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/egypt/tours">Egypt Tours</a></li>
<li><a href="/morocco/tours">Morocco Tours</a></li>
<li><a href="/turkey/tours">Turkey Tours</a></li>
</div>
</ul>
<div class="destination_links">
<ul>
<li><a href="/israel/holidays">Israel</a></li>
<li><a href="/peru/2-week-itinerary">Peru</a></li>
<li><a href="/japan/tours">Japan Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/china/tours">China Tours</a></li>
<li><a href="/thailand/tours">Thailan Tours</a></li>
<li><a href="/vietnam/tours">Vietnam Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/india/tours">India Tours</a></li>
<li><a href="/myanmar/tours">Myanmar Tours</a></li>
<li><a href="/morocco/tours/morocco-and-spain-tour">Spain Tour</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="bottomlogo">
<div class="footerbox">

@ -576,6 +576,34 @@ aria-label="festival">
</div>
<div class="bottom_destinations">
<div class="footerbox">
<div class="listtour">
<div class="destination_links">
<ul>
<li><a href="/egypt/tours">Egypt Tours</a></li>
<li><a href="/turkey/tours">Turkey Tours</a></li>
<li><a href="/peru/2-week-itinerary">Peru</a></li>
<li><a href="/china/tours">China Tours</a></li>
<li><a href="/vietnam/tours">Vietnam Tours</a></li>
<li><a href="/myanmar/tours">Myanmar Tours</a></li>
</ul>
</div>
<div class="destination_links">
<ul>
<li><a href="/morocco/tours">Morocco Tours</a></li>
<li><a href="/israel/holidays">Israel</a></li>
<li><a href="/japan/tours">Japan Tours</a></li>
<li><a href="/thailand/tours">Thailan Tours</a></li>
<li><a href="/india/tours">India Tours</a></li>
<li><a href="/morocco/tours/morocco-and-spain-tour">Spain Tour</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="bottomlogo">
© 2018-2023 Global Highlights <br>— Discovery Your Way!
</div>

Loading…
Cancel
Save