appid = $appid; $this->secret = $secret; } /** * 生成授权地址 */ public function authorizedAddress($root_id) { return $this->domain . "openapi/audit/oauth.html?app_id=" . $this->appid . "&material_auth=1&state=" . $root_id . "&redirect_uri=" . urlencode($this->cakkback); } /** * 获取token和refresh_token */ public function getAccessToken($code) { $url = $this->domain . 'open_api/oauth2/access_token/'; $param = [ 'app_id' => intval($this->appid), 'secret' => $this->secret, 'grant_type' => 'auth_code', 'auth_code' => $code, ]; return $this->curl($url, $param, ['Content-Type:' => 'application/json']); } /** * 获取线索列表 */ public function getClueListData($token, $advertiser_ids, $start_time, $end_time, $page, $page_size = 10) { //时间格式yyyy-MM-dd 或者 yyyy-MM-dd hh:mm:ss $value = explode(',',$advertiser_ids); $url = $this->domain . 'open_api/2/tools/clue/get/?advertiser_ids=' . json_encode($value) . '&start_time=' . urlencode($start_time) . '&end_time=' . urlencode($end_time) . '&page=' . $page . '&page_size=' . $page_size; $headers = array( 'Access-Token: ' . $token, 'X-Debug-Mode: 1' ); return $this->getCurl($url, $headers); } /** * 获取已授权账户根据Token */ public function getAdvertiser($token) { $url = $this->domain . 'open_api/2/user/info/'; $headers = array( 'Access-Token: ' . $token ); return $this->getCurl($url, $headers); } /** * 刷新token */ public function getRefreshToken($token) { $url = $this->domain . 'open_api/oauth2/refresh_token/'; $param = [ 'app_id' => intval($this->appid), 'secret' => $this->secret, 'grant_type ' => 'refresh_token', 'refresh_token' => $token, ]; return $this->curl($url, $param, ['Content-Type:' => 'application/json']); } /** * 获取线索外呼中间号(AXB呼叫能力) */ public function getCallVirtualNumber($token,$info) { $url = $this->domain . 'open_api/2/tools/clue/call_virtual_number/get/'; $args = []; foreach ($info as $key => $value) { $args[$key] = is_string($value) ? $value : json_encode($value); } $url = $url . "?" . http_build_query($args); $headers = array('Access-Token: ' . $token,); return $this->getCurl($url, $headers); } /** * 发起语音双呼(双呼呼叫能力) */ public function createBridgeCall($token,$info) { $url = $this->domain . 'open_api/2/tools/clue/bridge_call/create/'; $headers = array('Access-Token: ' . $token,'Content-Type: application/json'); return $this->curl($url,json_encode($info), $headers); } /** * 获取广告主数据 */ public function getAdvertiserList($token,$param) { $url = $this->domain . 'open_api/2/report/advertiser/get/'; $headers = array( 'Access-Token: ' . $token ); $info = [ 'advertiser_id' => $param['advertiser_id'],//广告主ID 'start_date' => $param['start_date'],//起始日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期 'end_date' => $param['end_date'],//结束日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期,时间跨度不能超过30天 'page' => $param['page'], 'page_size' => $param['page_size'], ]; $args = []; foreach ($info as $key => $value) { $args[$key] = is_string($value) ? $value : json_encode($value); } $url = $url . "?" . http_build_query($args); $headers = array('Access-Token: ' . $token,); return $this->getCurl($url, $headers); } /** * 获取广告组下广告计划数据 */ public function getAdList($token,$param) { $url = $this->domain . 'open_api/2/report/ad/get/'; $headers = array( 'Access-Token: ' . $token ); $info = [ 'advertiser_id' => $param['advertiser_id'],//广告主ID 'start_date' => $param['start_date'],//起始日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期 'end_date' => $param['end_date'],//结束日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期,时间跨度不能超过30天 'filtering' => [ 'campaign_ids' => [$param['campaign_ids']],//广告组id列表:按照campaign_id过滤,最多支持100个 ], 'group_by'=>['STAT_GROUP_BY_FIELD_ID'], 'page' => $param['page'], 'page_size' => 100, ]; $args = []; foreach ($info as $key => $value) { $args[$key] = is_string($value) ? $value : json_encode($value); } $url = $url . "?" . http_build_query($args); $headers = array('Access-Token: ' . $token,); return $this->getCurl($url, $headers); } /** * 获取广告组数据-每天获取一次上一天的数据保存到数据库 */ public function getCampaignList($token,$param) { $url = $this->domain . 'open_api/2/report/campaign/get/'; $headers = array( 'Access-Token: ' . $token ); $info = [ 'advertiser_id' => $param['advertiser_id'],//广告主ID 'start_date' => $param['start_date'],//起始日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期 'end_date' => $param['end_date'],//结束日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期,时间跨度不能超过30天 'page' => $param['page'], 'group_by'=>['STAT_GROUP_BY_FIELD_ID'], 'page_size' => 100, ]; $args = []; foreach ($info as $key => $value) { $args[$key] = is_string($value) ? $value : json_encode($value); } $url = $url . "?" . http_build_query($args); $headers = array('Access-Token: ' . $token,); return $this->getCurl($url, $headers); } /** * 获取直播数据 */ public function getAnalysisLiveList($token,$param) { $url = $this->domain . 'open_api/2/report/live_room/analysis/get/'; $headers = array( 'Access-Token: ' . $token ); $info = [ 'advertiser_id' => $param['advertiser_id'],//广告主ID 'start_time' => $param['start_date'],//起始日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期 'end_time' => $param['end_date'],//结束日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期,时间跨度不能超过30天 'page' => $param['page'], 'fields' =>$param['fields'], 'page_size' => 100, ]; $args = []; foreach ($info as $key => $value) { $args[$key] = is_string($value) ? $value : json_encode($value); } $url = $url . "?" . http_build_query($args); $headers = array('Access-Token: ' . $token,); return $this->getCurl($url, $headers); } /** * 获取直播数据 */ public function getLiveAttribute($token,$param) { $url = $this->domain . 'open_api/2/report/live_room/attribute/get/'; $headers = array( 'Access-Token: ' . $token ); $info = [ 'advertiser_id' => $param['advertiser_id'],//广告主ID 'start_time' => $param['start_date'],//起始日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期 'end_time' => $param['end_date'],//结束日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期,时间跨度不能超过30天 'page' => $param['page'], 'page_size' => 100, ]; $args = []; foreach ($info as $key => $value) { $args[$key] = is_string($value) ? $value : json_encode($value); } $url = $url . "?" . http_build_query($args); $headers = array('Access-Token: ' . $token,); return $this->getCurl($url, $headers); } /** * curl请求下get数据 */ public function getCurl($url, $headers) { $ch=curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_BINARYTRANSFER,true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $output=curl_exec($ch); curl_close($ch); return json_decode($output,true); } /** * curl请求 */ public function curl($url, $param, $header) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $param); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_HEADER, false); $rs = curl_exec($curl); curl_close($curl); return json_decode($rs,true); } }