顺途自动出票1.0测试版。

hotfix/paypal-note
赵鹏 2 years ago
parent ff67a58093
commit 9ad1c0a292

@ -19,12 +19,20 @@ define("DATAKEY","0dbf1652763c2289533e27437a971854");
//携程接口地址 //携程接口地址
define("JSONRETURN","http://m.ctrip.com/restapi/soa2/12976/json/"); define("JSONRETURN","http://m.ctrip.com/restapi/soa2/12976/json/");
//新携程接口顺途用的企业ID // //新携程接口顺途用的企业ID
define("COMPANYID","4003171843"); // define("COMPANYID","4003171843");
//新携程接口顺途用的Key // //新携程接口顺途用的Key
define("CTRIPKEY","hajkrtbc"); // define("CTRIPKEY","hajkrtbc");
//新携程接口顺途用的企业ID --- 测试用
define("COMPANYID","1503141150");
//新携程接口顺途用的Key ----- 测试用
define("CTRIPKEY","hajkrtba");
//新携程接口(顺途)的地址 //新携程接口(顺途)的地址
define("CTRIPURL","https://apiproxy.ctrip.com/apiproxy/soa2/19946"); define("CTRIPURL","https://apiproxy.ctrip.com/apiproxy/soa2/19946");
//新携程接口(顺途)的订单号前缀
define("SHUNTU_ORDERUSER","HN");
//聚合火车订票API key //聚合火车订票API key
define("JUHE_TRAIN_API_KEY","79f03107b921ef31310bd40a1415c1cb"); define("JUHE_TRAIN_API_KEY","79f03107b921ef31310bd40a1415c1cb");
@ -119,6 +127,17 @@ $config["train_passportty"]=array(
"G"=>"台湾通行证" "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'); $config['black_list'] = array('209582910','539152642','506157109','E66735489','E66735492','E80377215','G23001338','E95287649','345276546','PA4286015','G09382769','G26113116','G25996274','572309763','506620366','505897939','E71156367','E21961674','v716898','561669436','EL657289','533300106','482225223','514815909','592108236','370682199509218814','130924199003161572','410728199011287038','372324199503253215','ED6234008','E69411908','EF1981503');

@ -204,7 +204,7 @@ class addorders extends CI_Controller{
$coli_id = $this->BIZ_train_model->cold_sn_get_coli_id($cold_sn)['0']->COLI_ID; $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))){ if(empty($this->BIZ_train_model->get_operatorInfo($coli_id))){
$data['email'] = 'jason@hainatravel.com'; $data['email'] = 'vivi@hainatravel.com';
}else{ }else{
$data['email'] = $this->BIZ_train_model->get_operatorInfo($coli_id)['0']->OPI_Email; $data['email'] = $this->BIZ_train_model->get_operatorInfo($coli_id)['0']->OPI_Email;
} }
@ -239,6 +239,13 @@ class addorders extends CI_Controller{
return false; return false;
} }
// print_r(json_encode($data));
// echo("<hr/>");
// echo($selectseat);
// echo("<hr/>");
// echo($cold_sn);
// die();
switch ($type){ switch ($type){
case 'juhe': case 'juhe':
$this->juheModel($data,$selectseat,$cold_sn); $this->juheModel($data,$selectseat,$cold_sn);
@ -573,37 +580,57 @@ class addorders extends CI_Controller{
$zwcode = $this->db_train_zw[$data['train']->Aircraft]; //座位简码 $zwcode = $this->db_train_zw[$data['train']->Aircraft]; //座位简码
$zwname = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]]; //座位名称 $zwname = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]]; //座位名称
$microtime = get_microtime(); $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(); $PostData = new stdClass();
$time = date('Y-m-d H:i:s',time());
$PostData['Authentication'] = new stdClass(); $PostData->authentication = new stdClass();
$PostData['Authentication']->TimeStamp = $time; $PostData->authentication->timeStamp = $TimeStamp;
$PostData['Authentication']->ServiceName = 'order.PartnerAddOrder'; $PostData->authentication->serviceName = $serviceName;
$PostData['Authentication']->PartnerName = ORDERUSER; $PostData->authentication->companyId = $companyId;
$MessageIdentity = md5($time.'order.PartnerAddOrder'.ORDERKEY); $PostData->authentication->messageIdentity = $Sign;
$PostData['Authentication']->MessageIdentity = $MessageIdentity;
$PostData->trainOrderInfo = new stdClass();
$PostData['TrainOrderService'] = new stdClass(); $PostData->trainOrderInfo->companyId = $companyId;
$PostData['TrainOrderService']->PartnerName = ORDERUSER; $PostData->trainOrderInfo->orderType = 2;
$PostData['TrainOrderService']->Operation = 'add'; $PostData->trainOrderInfo->orderTicketType = 0;
$PostData['TrainOrderService']->OrderType = '电子'; $PostData->trainOrderInfo->companyOrderId = $OrderNumber;
$PostData['TrainOrderService']->OrderTicketType = '0'; $PostData->trainOrderInfo->isReservationOrder = null;
$PostData['TrainOrderService']->OrderNumber = $OrderNumber; $PostData->trainOrderInfo->leakCutOffTime = null;
$PostData['TrainOrderService']->ChannelName = ORDERUSER;
$PostData->trainOrderInfo->orderInfo = new stdClass();
$PostData['TrainOrderService']->Order = new stdClass(); $PostData->trainOrderInfo->orderInfo->orderTime = $TimeStamp;
$PostData['TrainOrderService']->Order->OrderTime = $time; $PostData->trainOrderInfo->orderInfo->ticketList['0'] = new stdClass();
$PostData['TrainOrderService']->Order->OrderMedia = 'pc'; $PostData->trainOrderInfo->orderInfo->ticketList['0']->fromStationName = $data['train']->DepartAirport_cn;
$PostData->trainOrderInfo->orderInfo->ticketList['0']->toStationName = $data['train']->ArrivalAirport_cn;
$PostData['TrainOrderService']->Order->TicketItem['0'] = new stdClass(); $PostData->trainOrderInfo->orderInfo->ticketList['0']->ticketTime = date('Y-m-d H:i',strtotime($data['train']->DepartureTime));
$PostData['TrainOrderService']->Order->TicketItem['0']->FromStationName = $data['train']->DepartAirport_cn; $PostData->trainOrderInfo->orderInfo->ticketList['0']->trainNo = $data['train']->FlightsNo;
$PostData['TrainOrderService']->Order->TicketItem['0']->ToStationName = $data['train']->ArrivalAirport_cn; $PostData->trainOrderInfo->orderInfo->ticketList['0']->allAcceptTrainNo = ''; //备选车次,抢票时必传
$PostData['TrainOrderService']->Order->TicketItem['0']->TicketTime = date('Y-m-d H:i:s',strtotime($data['train']->DepartureTime)); $PostData->trainOrderInfo->orderInfo->ticketList['0']->acceptDepartDates = ''; //备选日期,抢票时必传
$PostData['TrainOrderService']->Order->TicketItem['0']->TrainNumber = $data['train']->FlightsNo; $PostData->trainOrderInfo->orderInfo->ticketList['0']->arrivalDateTime = date('Y-m-d H:i',strtotime($data['train']->ArrivalTime));
$PostData['TrainOrderService']->Order->TicketItem['0']->ArrivalDateTime = date('Y-m-d H:i:s',strtotime($data['train']->ArrivalTime)); $PostData->trainOrderInfo->orderInfo->ticketList['0']->ticketPrice = $data['train']->adultcost;
$PostData['TrainOrderService']->Order->TicketItem['0']->TicketPrice = $data['train']->adultcost; $PostData->trainOrderInfo->orderInfo->ticketList['0']->seatName = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]];
$PostData['TrainOrderService']->Order->TicketItem['0']->TicketCount = count($data['people_list']); $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; $AdultNum = 0;
$ChildNum = 0; $ChildNum = 0;
@ -631,51 +658,53 @@ class addorders extends CI_Controller{
//证件类型 //证件类型
switch ($PassagerInfo->BPE_PassportType){ switch ($PassagerInfo->BPE_PassportType){
case 'Chinese ID': case 'Chinese ID':
$PassportTypeseId = "1"; $PassportTypeseId = 1;
$PassportTypeseidName = "二代身份证"; $PassportTypeseidName = "二代身份证";
break; break;
case 'MainlandTravel Permit from Hong Kong and Macau': case 'MainlandTravel Permit from Hong Kong and Macau':
$PassportTypeseId = 32;
$PassportTypeseidName = "港澳通行证"; $PassportTypeseidName = "港澳通行证";
break; break;
case 'Travel Permit from Taiwan': case 'Travel Permit from Taiwan':
$PassportTypeseId = "G"; $PassportTypeseId = 8;
$PassportTypeseidName = "台湾通行证"; $PassportTypeseidName = "台湾通行证";
break; break;
default : default :
$PassportTypeseId = "B"; $PassportTypeseId = 2;
$PassportTypeseidName = "护照"; $PassportTypeseidName = "护照";
break; break;
} }
$passagersdata[$i] = new stdClass(); $passagersdata[$i] = new stdClass();
$passagersdata[$i]->PassengerType = $PiaoTypeName; $passagersdata[$i]->passengerType = $PiaoType;
$passagersdata[$i]->PassportType = $PassportTypeseidName; $passagersdata[$i]->certificateType = $PassportTypeseId;
$passagersdata[$i]->PassportNumber = $PassagerInfo->BPE_Passport; $passagersdata[$i]->certificateNo = des_encrypt($PassagerInfo->BPE_Passport,$key);;
$passagersdata[$i]->PassportName = chk_sp_name($PassagerInfo->BPE_FirstName.$PassagerInfo->BPE_MiddleName.$PassagerInfo->BPE_LastName); $passagersdata[$i]->certificateName = 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]->birthday =$PassagerInfo->BPE_BirthDate;
$passagersdata[$i]->ContactEmail = $data['email']; $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++; $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->trainOrderInfo->orderInfo->ticketList['0']->passengerList = $passagersdata;
$PostData['TrainOrderService']->Order->TicketItem['0']->OrderPrice = $data['train']->adultcost * $AdultNum + $data['train']->childcost * $ChildNum; $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['TrainOrderService']->User = new stdClass(); $PostData->trainOrderInfo->extraService = new stdClass();
$PostData['TrainOrderService']->User->UserID = ''; $PostData->trainOrderInfo->extraService->noVerifyFlag = 1;
$PostData['TrainOrderService']->User->UserName = 'guilintravel'; $PostData->trainOrderInfo->extraService->lowerBerthFlag = 0;
$PostData['TrainOrderService']->User->userLoginName = 'guilintravel'; $PostData->trainOrderInfo->extraService->lowerBerthCount = 0;
$PostData['TrainOrderService']->User->UserMobile = '18877381547'; $PostData->trainOrderInfo->extraService->grabTicketRate = 1;
//本地添加记录 //本地添加记录
$add_data = new stdClass(); $add_data = new stdClass();
@ -698,23 +727,47 @@ class addorders extends CI_Controller{
//存储到数据库 //存储到数据库
$this->train_system_model->add_orders($add_data); $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'); $ResponseJson = GetPost_http($url,json_encode($PostData,JSON_UNESCAPED_UNICODE),'json');
$ResponseData = json_decode($ResponseJson); $ResponseData = json_decode($ResponseJson);
//预定请求成功后执行支付 //预定请求成功后执行支付
if($ResponseData->Status == 'SUCCESS'){ if($ResponseData->returnCode == 1){
//计算订单总价,进行支付 //直接获取返回的需要支付的总价,不再计算订单总价
$total_price = $AdultNum * $data['train']->adultcost + $ChildNum * $data['train']->childcost; //$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); $this->payorders($OrderNumber,$total_price);
$reback["status"] = 1; $reback["status"] = 1;
$reback["order"] = $OrderNumber; $reback["order"] = $OrderNumber;
$reback["mes"] = "订单提交成功,等待回调"; $reback["mes"] = "订单提交成功,等待回调";
}else{
$reback["status"] = 1;
$reback["returndata"] = $ResponseData;
$reback["mes"] = "订单提交成功,但是返回的订单总价错误。无法完成支付";
}
}else{ }else{
$reback["mes"] = $ResponseJson; $reback["mes"] = $ResponseJson;
$add_data->status = "e"; $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);
} }
//请求支付 //请求支付
@ -723,31 +776,113 @@ class addorders extends CI_Controller{
exit('传参错误!'); 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(); $PostData = new stdClass();
$TimeStamp = time();
$time = date('Y-m-d H:i:s',$TimeStamp); $PostData->authentication = new stdClass();
$PostData['Authentication'] = new stdClass(); $PostData->authentication->timeStamp = $TimeStamp;
$PostData['Authentication']->TimeStamp = $time; $PostData->authentication->serviceName = $serviceName;
$PostData['Authentication']->ServiceName = 'order.PartnerPayOrder'; $PostData->authentication->companyId = $companyId;
$PostData['Authentication']->PartnerName = ORDERUSER; $PostData->authentication->messageIdentity = $Sign;
$MessageIdentity = md5($time.'order.PartnerPayOrder'.ORDERKEY);
$PostData['Authentication']->MessageIdentity = $MessageIdentity; $PostData->orderPayInfo= new stdClass();
$PostData->orderPayInfo->companyId = $companyId;
$PostData['TrainOrderService'] = new stdClass(); $PostData->orderPayInfo->companyOrderId = $CtripOrder;
$PostData['TrainOrderService']->PartnerName = ORDERUSER; $PostData->orderPayInfo->payedPrice = $Price;
$PostData['TrainOrderService']->OrderNumber = $CtripOrder; $PostData->orderPayInfo->payTime = $TimeStamp;
$PostData['TrainOrderService']->PayedPrice = $Price; $PostData->orderPayInfo->tradeNumber = $CtripOrder;
$PostData['TrainOrderService']->PayTime = $time;
$PostData['TrainOrderService']->TradeNumber = $CtripOrder; //$Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerPayOrder';
$Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerPayOrder'; // print_r(json_encode($PostData) );
// die();
$ResponseJson = GetPost_http($Url,json_encode($PostData),'json');
$ResponseJson = GetPost_http($url,json_encode($PostData),'json');
$ResponseData = json_decode($ResponseJson); $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 '支付'; //echo '支付';
//print_r($ResponseData); //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":[]}} //支付同步回调信息 {"Status":"SUCCESS","PartnerName":"guilintravel","OrderNumber":"guilintravel1546071576","OperationDateTime":"2018-12-29 16:19:37","RetCode":0,"ResponseStatus":{"Timestamp":"\/Date(1546071577236+0800)\/","Ack":"Success","Errors":[],"Extension":[]}}
} }
} }
//订单提交返回数据
/*
{
"returnCode": 1,
"returnMessage": "SUCCESS",
"returnData": {
"serviceName": "train.addTrainOrder",
"companyId": "1503141150",
"companyOrderId": "HN1681460139569",
"operationDateTime": "2023-04-14 16:15:56",
"orderPayDetail": {
"orderAmount": 12.00,
"ticketAmount": 6,
"serveAmount": 0,
"extraServeFees": [
{
"feeAmount": 6.00,
"feeType": 141
}
]
}
},
"ResponseStatus": {
"Timestamp": "/Date(1681460156763+0800)/",
"Ack": "Success",
"Errors": [],
"Build": null,
"Version": null,
"Extension": [
{
"Id": "CLOGGING_TRACE_ID",
"Version": null,
"ContentType": null,
"Value": "7715658886832531034"
},
{
"Id": "RootMessageId",
"Version": null,
"ContentType": null,
"Value": "100031671-0a6d18d7-467072-1571193"
}
]
}
}
*/

@ -166,17 +166,40 @@ class callback extends CI_Controller{
$this->train_system_model->update_orders($update_data); $this->train_system_model->update_orders($update_data);
} }
public function ctripcallback(){ public function shuntucallback(){
$back_json = file_get_contents('php://input'); $back_json = file_get_contents('php://input');
log_message('error','携程回调信息:'.$back_json); 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":{}}}}}}}';
$ctrip_backdata = json_decode($back_json); $ctrip_backdata = json_decode($back_json);
// print_r($ctrip_backdata); // print_r($ctrip_backdata);
// die();
if(!empty($ctrip_backdata)){ 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 = new stdClass();
$update_data->ServiceName = $ctrip_backdata->Authentication->ServiceName; $update_data->ServiceName = $ctrip_backdata->authentication->serviceName;
$update_data->ordernumber = ''; $update_data->ordernumber = '';
$update_data->seatsinfo = ''; $update_data->seatsinfo = '';
$update_data->TicketCheck = ''; $update_data->TicketCheck = '';
@ -187,130 +210,104 @@ class callback extends CI_Controller{
$update_data->ElectronicOrderNumber = ''; $update_data->ElectronicOrderNumber = '';
$update_data->reschedulecallback = ''; $update_data->reschedulecallback = '';
$update_data->OrderTicketTime = ''; $update_data->OrderTicketTime = '';
//新字段
$update_data->operateTradeNo ="";
if($update_data->ServiceName == 'web.order.notifyTicket'){ if($update_data->ServiceName == 'notice.ticketresult'){
if ( $ctrip_backdata->ticketResult->resultCode == 1){
$update_data->OrderStatus = '4'; $update_data->OrderStatus = '4';
if (isset($ctrip_backdata->ticketResult->resultMsg)){
$update_data->ErrorMsg = $ctrip_backdata->ticketResult->resultMsg;
} else {
$update_data->ErrorMsg = '出票成功'; $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 .',';
} }
}else{ }else{
for($i=0;$i<count($coach_arr);$i++){ $update_data->OrderStatus = '5';
if($i == 0){ if (isset($ctrip_backdata->ticketResult->resultMsg)){
$update_data->seatsinfo .= 'Coach '.$coach_arr[$i].',Seat '.$seats_arr[$i].','; $update_data->ErrorMsg = $ctrip_backdata->ticketResult->resultMsg;
}else{
if($coach_arr[$i] == $coach_arr[$i-1]){
$update_data->seatsinfo .= $seats_arr[$i].',';
}else{ }else{
$update_data->seatsinfo .= 'Coach '.$coach_arr[$i].',Seat '.$seats_arr[$i].','; $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(); $data_passager = new stdClass();
if($person_num > 1){
//对订票乘客进行存储 foreach ( $ctrip_backdata->ticketResult->passengerInfoList as $pItems) {
//人员列表
$data_passager->status = '4'; $data_passager->status = '4';
$data_passager->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber; $data_passager->identitytype = $pItems->certificateType;
if(is_array($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket)){ $data_passager->realname = $pItems->certificateName;
foreach($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket as $tickets_item){ $data_passager->numberid = des_decrypt($pItems->certificateNo,$key) ; //证件号码 (DES加密
if(is_array($tickets_item->DetailInfos->DetailInfo)){ $data_passager->birthday = $pItems->birthday;
foreach($tickets_item->DetailInfos->DetailInfo as $ticket_item2){ if ($pItems->passengerType==2){
$data_passager->realname = $ticket_item2->PassengerName; $passengerType = "儿童";
$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);
}
}else{ }else{
$data_passager->realname = $tickets_item->DetailInfos->DetailInfo->PassengerName; $passengerType = "成人";
$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;
$this->train_system_model->add_passagers($data_passager);
} }
$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 ;
} }
}else{ if (isset($rItems->checkWindow)){
foreach($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo as $items){ $checkWindow = $rItems->checkWindow; //检票口
//对订票乘客进行存储 $update_data->TicketCheck = $checkWindow;
$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);
} }
$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{ if (isset($tItems->seatNo)){
//对订票乘客进行存储 $SeatNo.=$tItems->seatNo;
$data_passager->status = '4'; }
$data_passager->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber; $data_passager->seatdetail = $SeatNo;
$data_passager->realname = $ctrip_backdata->TrainOrderService->OrderInfo->TicketInfoFinal->Tickets->Ticket->DetailInfos->DetailInfo->PassengerName; $data_passager->longtrainno = $tItems->longElecNo;
$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); $this->train_system_model->add_passagers($data_passager);
} }
}
}
}
/****************************************************************************************/ /****************************************************************************************/
//添加支付记录 //添加支付记录
@ -321,34 +318,34 @@ class callback extends CI_Controller{
$order_info = $this->train_system_model->get_order_info($update_data->ordernumber); $order_info = $this->train_system_model->get_order_info($update_data->ordernumber);
$cold_sn = $order_info->ts_cold_sn; $cold_sn = $order_info->ts_cold_sn;
$add_train_payment_data->TOC_COLD_SN = $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_TrainNumber = $update_data->trainNo;
$add_train_payment_data->TOC_DepartureDate = date('Y-m-d',strtotime($ctrip_backdata->TrainOrderService->OrderInfo->TicketInfo->OrderTicketYMD)); $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->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; $add_train_payment_data->FOI_TrainNetOrderNo = $update_data->ElectronicOrderNumber;
//print_r($add_train_order_data);die(); //print_r($add_train_order_data);die();
$this->BIZ_train_model->add_train_payment($add_train_payment_data); $this->BIZ_train_model->add_train_payment($add_train_payment_data);
//记录供应商(瀚特) //记录供应商(瀚特)
$this->BIZ_train_model->update_cold_planvei_sn($cold_sn,'28209'); $this->BIZ_train_model->update_cold_planvei_sn($cold_sn,'28209');
}else if($update_data->ServiceName == 'web.order.notifyNoTicket'){ }else if($update_data->ServiceName == 'notice.ordercancel'){ //订单取消
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber; $update_data->ordernumber = $ctrip_backdata->cancelResult->companyOrderId;
$update_data->OrderStatus = '1'; $update_data->OrderStatus = '1';
$update_data->ErrorMsg = $ctrip_backdata->TrainOrderService->OrderInfo->NoTicketReasons; $update_data->ErrorMsg = $ctrip_backdata->cancelResult->cancelTime;
$update_data->confirmcallback = $back_json; $update_data->confirmcallback = $back_json;
}else if($update_data->ServiceName == 'web.order.returnTicketNotice'){ }else if($update_data->ServiceName == 'notice.refundresult'){ //退票
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber; $update_data->ordernumber = $ctrip_backdata->refundResult->companyOrderId;
$update_data->OrderStatus = '7'; $update_data->OrderStatus = '7';
$update_data->ErrorMsg = $ctrip_backdata->TrainOrderService->refundTicket->reason; $update_data->ErrorMsg = $ctrip_backdata->refundResult->reason;
$update_data->returncallback = $back_json; $update_data->returncallback = $back_json;
//退票时还需要单独对对每个乘客存储回调信息 // //退票时还需要单独对对每个乘客存储回调信息
$passpager_info = new stdClass(); // $passpager_info = new stdClass();
$passpager_info->returncallback = $back_json; // $passpager_info->returncallback = $back_json;
$passpager_info->status = '7'; // $passpager_info->status = '7';
$passpager_info->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber; // $passpager_info->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber;
$passpager_info->realname = $ctrip_backdata->TrainOrderService->refundTicket->realName; // $passpager_info->realname = $ctrip_backdata->TrainOrderService->refundTicket->realName;
$passpager_info->numberid = $ctrip_backdata->TrainOrderService->refundTicket->passport; // $passpager_info->numberid = $ctrip_backdata->TrainOrderService->refundTicket->passport;
$this->train_system_model->update_passpager_info($passpager_info); // $this->train_system_model->update_passpager_info($passpager_info);
}elseif($update_data->ServiceName == 'web.order.returnRescheduleResult'){ }elseif($update_data->ServiceName == 'web.order.returnRescheduleResult'){
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber; $update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderNumber;
$update_data->OrderStatus = '7'; $update_data->OrderStatus = '7';
@ -363,23 +360,23 @@ class callback extends CI_Controller{
$passpager_info->numberid = $ctrip_backdata->TrainOrderService->refundRescheduleTicket->passport; $passpager_info->numberid = $ctrip_backdata->TrainOrderService->refundRescheduleTicket->passport;
$this->train_system_model->update_passpager_info($passpager_info); $this->train_system_model->update_passpager_info($passpager_info);
}else if($update_data->ServiceName == 'web.order.requestRefund'){ }else if($update_data->ServiceName == 'web.order.requestRefund'){
$return_order = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber; // $return_order = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
$return_money = $ctrip_backdata->TrainOrderService->TotalRefundAmount; // $return_money = $ctrip_backdata->TrainOrderService->TotalRefundAmount;
//根据订单号获取cold_sn // //根据订单号获取cold_sn
$order_info = $this->train_system_model->get_order_info($return_order); // $order_info = $this->train_system_model->get_order_info($return_order);
$cold_sn = $order_info->ts_cold_sn; // $cold_sn = $order_info->ts_cold_sn;
//print_r($order_info); // //print_r($order_info);
$add_train_payment_data->TOC_Memo = $return_order.'_'.$ctrip_backdata->TrainOrderService->OrderInfo->OrderTid; // $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_COLD_SN = $cold_sn;
$add_train_payment_data->TOC_TrainNumber = $order_info->ts_checi; // $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_DepartureDate = $order_info->ts_startdate;
$add_train_payment_data->TOC_TicketCost = -$ctrip_backdata->TrainOrderService->TotalRefundAmount; // $add_train_payment_data->TOC_TicketCost = -$ctrip_backdata->TrainOrderService->TotalRefundAmount;
$add_train_payment_data->FOI_TrainNetOrderNo=null; // $add_train_payment_data->FOI_TrainNetOrderNo=null;
//print_r($add_train_payment_data);die(); // //print_r($add_train_payment_data);die();
$this->BIZ_train_model->add_train_payment($add_train_payment_data); // $this->BIZ_train_model->add_train_payment($add_train_payment_data);
return false; // return false;
}else if ($update_data->ServiceName == 'web.order.rescheduleResult'){ }else if ($update_data->ServiceName == 'web.order.rescheduleResult'){
$update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber; $update_data->ordernumber = $ctrip_backdata->TrainOrderService->OrderInfo->OrderNumber;
$reschedule_status = $ctrip_backdata->TrainOrderService->OrderInfo->RescheduleTicketInfo->RescheduleTickets->RescheduleTicket->status; $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); $this->train_system_model->update_orders($update_data);
// //返回结果
// $returnResult = new stdClass();
// $returnResult->returnCode = 1;
// $returnResult->returnMsg = "";
// echo(json_encode($returnResult));
} }
} }
} }

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

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

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

@ -19,8 +19,10 @@ class BIZ_train_model extends CI_Model {
,bbp.BPE_Passport ,bbp.BPE_Passport
,bbp.BPE_PassportType ,bbp.BPE_PassportType
,bbp.BPE_SEX ,bbp.BPE_SEX
,bbp.BPE_BirthDate ,CONVERT(VARCHAR(10),BPE_BirthDate,120) as BPE_BirthDate
,bbp.BPE_PassExpdate ,(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 FROM BIZ_BookPeople bbp
WHERE BPE_SN in(".$bpe_sn.") WHERE BPE_SN in(".$bpe_sn.")
"; ";
@ -49,6 +51,10 @@ class BIZ_train_model extends CI_Model {
,bbp.BPE_GuestType ,bbp.BPE_GuestType
,bbp.BPE_Passport ,bbp.BPE_Passport
,bbp.BPE_PassportType ,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 FROM BIZ_BookPeople bbp
WHERE EXISTS( WHERE EXISTS(
SELECT TOP 1 1 SELECT TOP 1 1

@ -190,8 +190,9 @@ class train_system_model extends CI_Model {
ts_checkdoor = '{$data->TicketCheck}', ts_checkdoor = '{$data->TicketCheck}',
ts_elecnumber = '{$data->ElectronicOrderNumber}', ts_elecnumber = '{$data->ElectronicOrderNumber}',
ts_orderamount = '{$data->OrderTotleFee}', ts_orderamount = '{$data->OrderTotleFee}',
ts_bookcallback = '{$data->bookcallback}', ts_operateTradeNo = '{$data->operateTradeNo}',
ts_startime = '{$data->OrderTicketTime}',"; ts_bookcallback = '{$data->bookcallback}',";
//ts_startime = '{$data->OrderTicketTime}',
}else if(!empty($data->confirmcallback)){ }else if(!empty($data->confirmcallback)){
$where .= "ts_confirmcallback = '{$data->confirmcallback}',"; $where .= "ts_confirmcallback = '{$data->confirmcallback}',";
}else if(!empty($data->returncallback)){ }else if(!empty($data->returncallback)){
@ -212,6 +213,24 @@ class train_system_model extends CI_Model {
$query = $this->INFO->query($sql); $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){ public function update_passpager_info($data){
$sql = "update $sql = "update

@ -135,6 +135,8 @@ function selseat(seat){
<th style="text-align:center;">姓名</th> <th style="text-align:center;">姓名</th>
<th style="text-align:center;">护照</th> <th style="text-align:center;">护照</th>
<th style="text-align:center;">年龄类型</th> <th style="text-align:center;">年龄类型</th>
<th style="text-align:center;">出生年月</th>
<th style="text-align:center;">证件有效期</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -149,6 +151,8 @@ function selseat(seat){
<td class="people_name"><?php echo $p->BPE_FirstName." ".$p->BPE_MiddleName." ".$p->BPE_LastName;?></td> <td class="people_name"><?php echo $p->BPE_FirstName." ".$p->BPE_MiddleName." ".$p->BPE_LastName;?></td>
<td><?php echo $p->BPE_Passport;?></td> <td><?php echo $p->BPE_Passport;?></td>
<td><?php echo $p->BPE_GuestType==1?"成人":($p->BPE_GuestType==2?"儿童":"婴儿");?></td> <td><?php echo $p->BPE_GuestType==1?"成人":($p->BPE_GuestType==2?"儿童":"婴儿");?></td>
<td><?php echo $p->BPE_BirthDate;?></td>
<td><?php echo $p->BPE_PassExpdate;?></td>
</tr> </tr>
<?php endforeach;?> <?php endforeach;?>
<tr style="text-align:;"> <tr style="text-align:;">

Loading…
Cancel
Save