From 9ad1c0a29235d99e2077417a168dfb15f701025e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=B9=8F?= Date: Wed, 19 Apr 2023 10:46:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=BA=E9=80=94=E8=87=AA=E5=8A=A8=E5=87=BA?= =?UTF-8?q?=E7=A5=A81.0=E6=B5=8B=E8=AF=95=E7=89=88=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third_party/trainsystem/config/config.php | 27 +- .../trainsystem/controllers/addorders.php | 327 +++++++++++++----- .../trainsystem/controllers/callback.php | 301 ++++++++-------- .../controllers/innerTrainSearch.php | 14 +- .../trainsystem/controllers/pages.php | 27 +- .../trainsystem/helpers/train_helper.php | 52 +++ .../trainsystem/models/BIZ_train_model.php | 10 +- .../trainsystem/models/train_system_model.php | 23 +- .../trainsystem/views/homepage.php | 4 + 9 files changed, 515 insertions(+), 270 deletions(-) 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;?>