退票功能完成

hotfix/paypal-note
赵鹏 2 years ago
parent f210010de3
commit 98d766456c

@ -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);

@ -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';

@ -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)){

@ -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");

@ -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){

@ -31,7 +31,7 @@
$(function(){
//正常退票
$('.returnticket').click(function(){
var url = <?php echo "'http://www.mycht.cn/info.php/apps/trainsystem/returnorders/returntickets?ordernumber=$ordernumber'"?>;
var url = <?php echo "'/info.php/apps/trainsystem/returnorders/returntickets?ordernumber=$ordernumber'"?>;
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('退票失败');
}
});

Loading…
Cancel
Save