diff --git a/application/third_party/trainsystem/controllers/addorders.php b/application/third_party/trainsystem/controllers/addorders.php index 47854de2..9dab2bf4 100644 --- a/application/third_party/trainsystem/controllers/addorders.php +++ b/application/third_party/trainsystem/controllers/addorders.php @@ -737,6 +737,7 @@ class addorders extends CI_Controller{ $total_price = $ResponseData->returnData->orderPayDetail->orderAmount; if ($total_price>0){ + log_message('error','下单成功返回信息:'.$ResponseJson); //执行支付 $this->payorders($OrderNumber,$total_price); $reback["status"] = 1; @@ -776,12 +777,12 @@ class addorders extends CI_Controller{ //生成接口请求头参数 $TimeStamp = date("Y-m-d H:i:s"); $serviceName = "train.companyPayOrder"; //每个接口都有自己名称 - // $companyId = COMPANYID; - // $key = CTRIPKEY; + $companyId = COMPANYID; + $key = CTRIPKEY; - /** 测试服务器 */ - $companyId = "1503141150"; - $key = "hajkrtba"; + // /** 测试服务器 */ + // $companyId = "1503141150"; + // $key = "hajkrtba"; $strSign = $TimeStamp.$serviceName.$companyId.$key; //加密前的令牌 $Sign = md5($strSign); diff --git a/application/third_party/trainsystem/controllers/callback.php b/application/third_party/trainsystem/controllers/callback.php index 8871b39c..ffdf714c 100644 --- a/application/third_party/trainsystem/controllers/callback.php +++ b/application/third_party/trainsystem/controllers/callback.php @@ -367,19 +367,47 @@ class callback extends CI_Controller{ $this->BIZ_train_model->refund_train_payment($refund_train_payment); }else if($update_data->ServiceName == 'notice.returnresult'){ //退票 - $update_data->ordernumber = $ctrip_backdata->refundResult->companyOrderId; - $update_data->OrderStatus = '7'; - $update_data->ErrorMsg = $ctrip_backdata->refundResult->reason; - $update_data->returncallback = $back_json; + $update_data->ordernumber = $ctrip_backdata->returnResult->companyOrderId; + $resultCode = $ctrip_backdata->returnResult->resultCode; + $update_data->ErrorMsg = $ctrip_backdata->returnResult->resultMsg; + $longElecNo = $ctrip_backdata->returnResult->longElecNo; + $returnSuccTime = $ctrip_backdata->returnResult->returnSuccTime; //退票成功时间 yyyy-MM-dd hh:mm:ss + $printStatus = $ctrip_backdata->returnResult->printStatus; //1 已取票 2未取票 0未知 + $preRefundAmount = $ctrip_backdata->returnResult->preRefundAmount; // 预计退票退款 + $sxfAmount= $ctrip_backdata->returnResult->sxfAmount; //退票手续费 + $operateTradeNo = $ctrip_backdata->returnResult->operateTradeNo; //操作流水号 退款通知里会有相同的操作流水号做对应。 + $update_data->operateTradeNo=$operateTradeNo; + + $passpager_info = new stdClass(); + $passpager_info->returncallback = $back_json; + $passpager_info->ordernumber = $ctrip_backdata->returnResult->companyOrderId; + $passpager_info->longElecNo = $longElecNo; + if ($resultCode=="1"){ + //退票成功 + $update_data->OrderStatus = '7'; + //退票时还需要单独对对每个乘客存储回调信息 + $passpager_info->status = '7'; + //保存退票成功信息到trainsystem + if ($printStatus==1){ + $pintmsg="已取票"; + }else if($printStatus==2){ + $pintmsg="未取票"; + }else{ + $pintmsg=""; + } + $msg = "退票成功:".$ctrip_backdata->returnResult->resultMsg."(".$returnSuccTime.",".$pintmsg.",预计退票退款:".$preRefundAmount.",手续费:".$sxfAmount.")"; + $update_data->ErrorMsg=$msg; + }else{ + //退票失败 + $update_data->OrderStatus = '8'; + //失败也保存下信息 + $passpager_info->status = '8'; + + } + $this->train_system_model->return_update_passpager_info($passpager_info); + $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); }elseif($update_data->ServiceName == 'web.order.returnRescheduleResult'){ $update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber; $update_data->OrderStatus = '7'; diff --git a/application/third_party/trainsystem/controllers/pages.php b/application/third_party/trainsystem/controllers/pages.php index a5276531..b9a91a6b 100644 --- a/application/third_party/trainsystem/controllers/pages.php +++ b/application/third_party/trainsystem/controllers/pages.php @@ -114,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)){ diff --git a/application/third_party/trainsystem/controllers/returnorders.php b/application/third_party/trainsystem/controllers/returnorders.php index c8f23786..2cd8732d 100644 --- a/application/third_party/trainsystem/controllers/returnorders.php +++ b/application/third_party/trainsystem/controllers/returnorders.php @@ -36,7 +36,7 @@ class returnorders extends CI_Controller{ header("HTTP/1.1 404 Not Found"); exit('{"reason":"传参错误","status":"404"}'); } - + //网前提交的姓名没有做处理 $passportname = chk_sp_name($passportname); @@ -46,6 +46,7 @@ class returnorders extends CI_Controller{ if(empty($passenger_data)){ header("HTTP/1.1 404 Not Found"); exit('{"reason":"乘客信息为空无法退票","status":"404"}'); + //exit('{"reason":"'.$ordernumber.",".$passportname.",".$passportno.'","status":"404"}'); exit(''); } @@ -129,31 +130,55 @@ class returnorders extends CI_Controller{ } function ctripModel($ticket_data,$passenger_data){ - $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.ticketReturn'; - $PostData['Authentication']->PartnerName = ORDERUSER; - $MessageIdentity = md5($time.'order.ticketReturn'.ORDERKEY); - $PostData['Authentication']->MessageIdentity = $MessageIdentity; - $PostData['TrainOrderService'] = new stdClass(); - $PostData['TrainOrderService']->contactName = '陈宇超'; - $PostData['TrainOrderService']->contactMobile = '18877381547'; - $PostData['TrainOrderService']->OrderNumber = $ticket_data->ts_ordernumber; - $PostData['TrainOrderService']->OperatorType = '0'; - $PostData['TrainOrderService']->LongElecNums = array(); - $PostData['TrainOrderService']->LongElecNums['0'] = $passenger_data->tst_LongTrainNo; + //生成接口请求头参数 + $TimeStamp = date("Y-m-d H:i:s"); + $serviceName = "train.artificialTicketReturn"; //每个接口都有自己名称 + $companyId = COMPANYID; + $key = CTRIPKEY; + $strSign = $TimeStamp.$serviceName.$companyId.$key; //加密前的令牌 + $Sign = md5($strSign); + $url = CTRIPURL."/artificialTicketReturn"; + + + $PostData = new stdClass(); + $PostData->authentication = new stdClass(); + $PostData->authentication->timeStamp = $TimeStamp; + $PostData->authentication->serviceName = $serviceName; + $PostData->authentication->companyId = $companyId; + $PostData->authentication->messageIdentity = $Sign; + + + $PostData->companyOrderId = $ticket_data->ts_ordernumber; + $PostData->operator = "vivi"; + $PostData->returnServiceFee = "15"; //退票服务费 + $PostData->returnTicketList['0'] = new stdClass(); + $PostData->returnTicketList['0']->trainNo = $passenger_data->ts_checi; + //车厢及座位分解 + $tst_seatdetail = $passenger_data->tst_seatdetail; + $carriageNo = ""; + $seatNo = ""; + if (strpos($tst_seatdetail,"车厢")!=false){ + $arrSeat = explode("车厢",$tst_seatdetail); + $carriageNo = $arrSeat[0]; + $seatNo = $arrSeat[1]; + } + + $PostData->returnTicketList['0']->carriageNo = $carriageNo; + $PostData->returnTicketList['0']->seatNo = $seatNo; + $PostData->returnTicketList['0']->longElecNo = $passenger_data->tst_LongTrainNo; + $PostData->returnTicketList['0']->cardFirstImage = ""; + $PostData->returnTicketList['0']->cardSecondImage =""; + + // print_r(json_encode($PostData)); + // die(); //发起退票请求 - $Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerReturnTicket'; - $ResponseJson = GetPost_http($Url,json_encode($PostData),'json'); + $ResponseJson = GetPost_http($url,json_encode($PostData),'json'); + log_message('error','退票返回信息:'.$ResponseJson); $ResponseData = json_decode($ResponseJson); - if($ResponseData->Status == 'SUCCESS'){ + if($ResponseData->returnCode == 1){ echo '{"reason":"退票成功","status":"200"}'; }else{ header("HTTP/1.1 404 Not Found"); diff --git a/application/third_party/trainsystem/models/train_system_model.php b/application/third_party/trainsystem/models/train_system_model.php index 0d9d2531..535ae299 100644 --- a/application/third_party/trainsystem/models/train_system_model.php +++ b/application/third_party/trainsystem/models/train_system_model.php @@ -199,6 +199,9 @@ class train_system_model extends CI_Model { $where .= "ts_confirmcallback = '{$data->confirmcallback}',"; }else if(!empty($data->returncallback)){ $where .= "ts_returncallback = '{$data->returncallback}',"; + if (!empty($data->operateTradeNo)){ + $where .= "ts_operateTradeNo = '{$data->operateTradeNo}',"; + } }else if(!empty($data->reschedulecallback)){ $where .= "ts_reschedulecallback = '{$data->reschedulecallback}',"; } @@ -217,7 +220,16 @@ class train_system_model extends CI_Model { //更新订单信息,下订单和支付保存状态 public function update_orders_msg($data){ - $where = " ts_bookcallback = '{$data->bookcallback}',"; + $where = ''; + if(!empty($data->bookcallback)){ + $where .= " ts_bookcallback = '{$data->bookcallback}',"; + }else if(!empty($data->confirmcallback)){ + $where .= "ts_confirmcallback = '{$data->confirmcallback}',"; + }else if(!empty($data->returncallback)){ + $where .= "ts_returncallback = '{$data->returncallback}',"; + }else if(!empty($data->reschedulecallback)){ + $where .= "ts_reschedulecallback = '{$data->reschedulecallback}',"; + } $sql =" update trainsystem @@ -250,6 +262,23 @@ class train_system_model extends CI_Model { "; $query = $this->INFO->query($sql); } + + + //更新乘客表信息,顺途新退票不再返回用户姓名及证件号码,用longElecNo长电子订单号来判断 2023-4-28 zp + public function return_update_passpager_info($data){ + $sql = "update + trainsystem_tickets + set + tst_status = '{$data->status}', + tst_returncallback = '{$data->returncallback}', + tst_lasteditdate = getdate() + where + tst_ordernumber = '{$data->ordernumber}' + and + tst_LongTrainNo = '{$data->longElecNo}' + "; + $query = $this->INFO->query($sql); + } //获取订单出票状态 public function get_tickets_info($cold_sn){ diff --git a/application/third_party/trainsystem/views/refund.php b/application/third_party/trainsystem/views/refund.php index 3792b14b..18cbb570 100644 --- a/application/third_party/trainsystem/views/refund.php +++ b/application/third_party/trainsystem/views/refund.php @@ -31,7 +31,7 @@ $(function(){ //正常退票 $('.returnticket').click(function(){ - var url = ; + var url = ; var return_ticket = $(this); name = $(this).attr('name'); passid = $(this).attr('passid'); @@ -40,11 +40,12 @@ $(function(){ $.ajax({ url:url, success:function(json){ - alert('请求成功,正在处理退票...'); - return_ticket.html('退票成功'); + alert('请求成功,正在处理退票...'); + return_ticket.html('退票成功'); + }, error:function(json){ - alert('请求失败,请重新请求...'); + alert('请求失败,请重新请求,如果还有错误请联系管理员'); return_ticket.html('退票失败'); } });