diff --git a/application/third_party/trainsystem/config/config.php b/application/third_party/trainsystem/config/config.php
index 8fe0fae8..0e60a2c6 100644
--- a/application/third_party/trainsystem/config/config.php
+++ b/application/third_party/trainsystem/config/config.php
@@ -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');
diff --git a/application/third_party/trainsystem/controllers/addorders.php b/application/third_party/trainsystem/controllers/addorders.php
index a0551232..e6893862 100644
--- a/application/third_party/trainsystem/controllers/addorders.php
+++ b/application/third_party/trainsystem/controllers/addorders.php
@@ -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("
");
+ // echo($selectseat);
+ // echo("
");
+ // 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":[]}}
}
-}
\ No newline at end of file
+}
+
+
+//订单提交返回数据
+/*
+{
+ "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"
+ }
+ ]
+ }
+}
+
+*/
\ No newline at end of file
diff --git a/application/third_party/trainsystem/controllers/callback.php b/application/third_party/trainsystem/controllers/callback.php
index cf535712..e6b51db2 100644
--- a/application/third_party/trainsystem/controllers/callback.php
+++ b/application/third_party/trainsystem/controllers/callback.php
@@ -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;$iseatsinfo .= '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));
}
}
}
\ No newline at end of file
diff --git a/application/third_party/trainsystem/controllers/innerTrainSearch.php b/application/third_party/trainsystem/controllers/innerTrainSearch.php
index cb34d55d..31669b11 100644
--- a/application/third_party/trainsystem/controllers/innerTrainSearch.php
+++ b/application/third_party/trainsystem/controllers/innerTrainSearch.php
@@ -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 . "
");
echo($sign. "
");
echo($E_sign. "
");
- $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;
diff --git a/application/third_party/trainsystem/controllers/pages.php b/application/third_party/trainsystem/controllers/pages.php
index c6cc9850..32c7f3a7 100644
--- a/application/third_party/trainsystem/controllers/pages.php
+++ b/application/third_party/trainsystem/controllers/pages.php
@@ -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'] = '';
$config['cur_tag_close'] = '';
$config['first_tag_open']=$config['last_tag_open']=$config['next_tag_open']=$config['prev_tag_open']=$config['num_tag_open']="";
- $config['first_tag_close']=$config['last_tag_close']=$config['next_tag_close']=$config['prev_tag_close']=$config['num_tag_close']="";
+ $config['first_tag_close']=$config['lasbt_tag_close']=$config['next_tag_close']=$config['prev_tag_close']=$config['num_tag_close']="";
$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');
}
-}
\ No newline at end of file
+}
diff --git a/application/third_party/trainsystem/helpers/train_helper.php b/application/third_party/trainsystem/helpers/train_helper.php
index b1f876bf..499740ff 100644
--- a/application/third_party/trainsystem/helpers/train_helper.php
+++ b/application/third_party/trainsystem/helpers/train_helper.php
@@ -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);
+}
+
+
+
+
+
+
?>
\ No newline at end of file
diff --git a/application/third_party/trainsystem/models/BIZ_train_model.php b/application/third_party/trainsystem/models/BIZ_train_model.php
index 416ec613..0294a8d6 100644
--- a/application/third_party/trainsystem/models/BIZ_train_model.php
+++ b/application/third_party/trainsystem/models/BIZ_train_model.php
@@ -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
diff --git a/application/third_party/trainsystem/models/train_system_model.php b/application/third_party/trainsystem/models/train_system_model.php
index 44eda170..9792d401 100644
--- a/application/third_party/trainsystem/models/train_system_model.php
+++ b/application/third_party/trainsystem/models/train_system_model.php
@@ -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){
diff --git a/application/third_party/trainsystem/views/homepage.php b/application/third_party/trainsystem/views/homepage.php
index 953517bf..364ad023 100644
--- a/application/third_party/trainsystem/views/homepage.php
+++ b/application/third_party/trainsystem/views/homepage.php
@@ -135,6 +135,8 @@ function selseat(seat){
姓名 |
护照 |
年龄类型 |
+ 出生年月 |
+ 证件有效期 |
@@ -149,6 +151,8 @@ function selseat(seat){
BPE_FirstName." ".$p->BPE_MiddleName." ".$p->BPE_LastName;?> |
BPE_Passport;?> |
BPE_GuestType==1?"成人":($p->BPE_GuestType==2?"儿童":"婴儿");?> |
+ BPE_BirthDate;?> |
+ BPE_PassExpdate;?> |