url = "https://api-event-v2.goodoc.co.kr/call_request"; } // DATA FORM 형성 public function form_data_set($data, $event_id, $funnel, $supply_third_party_agree){ $privacy_agree = $data['agree']=='Y'?1:0; $privacy_process_agree = $data['agree']=='Y'?1:0; $supply_third_party_agree = $supply_third_party_agree==1?$supply_third_party_agree:0; $array_data = array( "phone"=>$data['phone'], // 유저 전번 "name"=>$data['name'], // 유저 이름 "event_id"=>$event_id, // 굿닥파트너스에서 받은 id "funnel"=>$funnel, "privacy_agree"=>$privacy_agree, // 동의 "1" / 미동의 "0" "privacy_process_agree"=>$privacy_process_agree, // 동의 "1" / 미동의 "0" "supply_third_party_agree"=>$supply_third_party_agree, // 동의 "1" / 미동의 "0" // 하드코딩 "call_time"=>$data['add1']."/".$data['add2']."/".$data['add3']."/".$data['add4'], // "is_import"=>"1", "channel"=>"1", // 굿닥 파트너스 flag값 "device"=>"3", "content"=>"", // 문의란이 있다면 문의란 "sex"=>$data['gender'], // 성별: 1(여자), 2(남자), 3(알수 없음) "age"=>$data['age'] // 옵셔널 ); return $array_data; } // 전송 public function curlDBData_gooddoc($data){ $postData = json_encode($data); $headers = array( "Content-Type: application/json;" , "Content-Length: ".strlen($postData)."" , ); $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_HTTPHEADER => $headers, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $this->url, // CURLOPT_POSTFIELDS => count($data), CURLOPT_POSTFIELDS => $postData )); $result = curl_exec($ch); curl_close($ch); return $result; } // 응답값 저장 public function result_save($db, $returnvalue, $eid){ $sql = "UPDATE app_subscribe SET memo3 = '$returnvalue' WHERE eid = '{$eid}'"; if(!$result = $db->query($sql)){ // echo $db->error; } return $sql; } ######################################################################################################### private $rwdb, $rodb, $db; public function setConnectDB() { //DB연결 include __DIR__."/../../dbinfo.php"; $this->rwdb = mysqli_connect(MYSQL_RW_HOST, MYSQL_USER_ID, MYSQL_USER_PW, MYSQL_DB_NAME); $this->rwdb->query("set session character_set_client=utf8mb4;"); $this->rwdb->query("set session character_set_connection=utf8mb4;"); $this->db = $this->rwdb; if(defined('MYSQL_RO_HOST')) { //ReadOnly Host가 있을 경우 연결 $this->rodb = mysqli_connect(MYSQL_RO_HOST, MYSQL_USER_ID, MYSQL_USER_PW, MYSQL_DB_NAME); $this->rodb->query("set session character_set_client=utf8mb4;"); $this->rodb->query("set session character_set_connection=utf8mb4;"); } } public function query($sql, $error=false) { //쿼리 전송 if(!$sql) return false; $result = null; $data = new stdClass(); if($this->rodb && preg_match('#^select.*#i', trim($sql))) //Select 는 ReadOnly DB로 연결 $this->db = $this->rodb; else $this->db = $this->rwdb; $this->db->query("BEGIN"); //트랜젝션 시작 if($error) {//error 가 true 일 경우 에러메시지 출력 $result = $this->db->query($sql) or die($this->db->error); } else { $result = $this->db->query($sql); } if($result) { $data->db = $result; $data->insert_id = $this->db->insert_id; $this->db->query("COMMIT"); //트랜젝션 커밋 } else $this->db->query("ROLLBACK"); //트랜젝션 롤백 return $data; } //암호화 함수 private function aes_encrypt($data, $key='++!CHAINSAW!++'){ $key = substr(hex2bin(openssl_digest($key, 'sha512')),0,16); $enc = openssl_encrypt($data, "AES-128-ECB", $key, true); return strtoupper(bin2hex($enc)); } //복호화 함수 private function aes_decrypt($data, $key='++!CHAINSAW!++'){ $data = hex2bin($data); $key = substr(hex2bin(openssl_digest($key, 'sha512')),0,16); $dec = openssl_decrypt($data, "AES-128-ECB", $key, true); return $dec; } private function getAppsubscribeByEid($eid) { //등록 사용자 정보 가져오기 if(!$eid) return NULL; $sql = "SELECT * FROM app_subscribe WHERE eid = {$eid}"; $result = $this->query($sql); return $result; } public function send($eid, $event_id, $funnel, $agBox_mkt=0) { $result = $this->getAppsubscribeByEid($eid); if($result->db) { $data = $result->db->fetch_assoc(); if (is_array($data)) { array_walk_recursive($data,function(&$v){if(is_string($v))$v=$this->rwdb->real_escape_string($v);}); } $data['phone'] = $this->aes_decrypt($data['phone']); $gd_data = $this->form_data_set($data, $event_id, $funnel, $agBox_mkt); $gd_rst = $this->curlDBData_gooddoc($gd_data); $rst = json_decode($gd_rst, true); if($rst['status']){ echo "eid:{$eid} 굿닥 연동 완료
"; }else{ echo "eid:{$eid} 굿닥 연동 실패 >> ".$rst['message']."
"; } $this->result_save($this->rwdb, $gd_rst, $data['eid']); } else { echo "eid:{$eid} eid 없음
"; } } } ?>