"", "advertiser_name" => "", "access_token" => "", "refresh_token" => "", "expire_time" => "", ]; } // 获取子账号列表 public function getSubAccounts($pmid) { } // 刷新 token public function refreshToken($pmid) { } // 获取小时消耗 public function getHourlyCost($advertiserId, $accessToken, $date): array { $page = 1; $data = []; do { $url = 'https://ad.oceanengine.com/open_api/v3.0/report/custom/get/'; $request_data = [ 'advertiser_id'=>$advertiserId, 'dimensions'=>json_encode(["cdp_project_id","cdp_project_name","ad_platform_cdp_project_action_track_url","ad_platform_cdp_project_download_url","stat_time_hour"]), 'metrics'=>json_encode(["stat_cost","show_cnt","click_cnt","convert_cnt"]), 'filters'=>'[{"operator":4,"values":["0"],"field":"stat_cost","type":3}]', 'start_time'=>$date, 'end_time'=>$date, 'order_by'=>json_encode([]), 'page'=>$page, 'page_size'=>100, ]; $options = [ "headers" => [ 'Access-Token' => $accessToken, 'Content-Type' => 'application/json', ] ]; $url = $url."?".http_build_query($request_data); $httpClient = new Client(['timeout' => 10]); $res = $httpClient->request('GET', $url, $options); $result = json_decode($res->getBody(), true); if (empty($result['data']['rows'])) { break; } $data = array_merge($data, $result['data']['rows']); $totalPage = $result['data']['page_info']['total_page'] ?? 1; $page++; } while ($page <= $totalPage); return $data; } // 获取媒体消耗 public function getVideoCost($advertiserId, $accessToken, $date): array { $page = 1; $data = []; do { $url = 'https://ad.oceanengine.com/open_api/v3.0/report/custom/get/'; $request_data = [ 'advertiser_id'=>$advertiserId, 'dimensions'=>json_encode(["ad_platform_material_name","material_id","cdp_project_id","cdp_project_name","stat_time_day", "ad_platform_cdp_project_action_track_url"]), 'metrics'=>json_encode(["stat_cost","show_cnt","click_cnt","active","active_register","active_pay","valid_play","download_finish_cnt","total_play", "stat_pay_amount"]), 'filters'=>'[{"field":"image_mode","type":1,"operator":0,"values":["5","15"]},{"operator":4,"values":["0"],"field":"stat_cost","type":3}]', 'start_time'=>$date, 'end_time'=>$date, 'order_by'=>json_encode([]), 'page'=>1, 'page_size'=>100, ]; $options = [ "headers" => [ 'Access-Token' => $accessToken, 'Content-Type' => 'application/json', ] ]; $url = $url."?".http_build_query($request_data); $httpClient = new Client(['timeout' => 10]); $res = $httpClient->request('GET', $url, $options); $result = json_decode($res->getBody(), true); if (empty($result['data']['rows'])) { break; } $data = array_merge($data, $result['data']['rows']); $totalPage = $result['data']['page_info']['total_page'] ?? 1; $page++; } while ($page <= $totalPage); return $data; } public function getVideo($advertiserId, $accessToken, $materialIds): array { $url = 'https://api.oceanengine.com/open_api/2/file/video/get/'; $request_data = [ 'advertiser_id'=>$advertiserId, 'filtering' => json_encode([ "material_ids" => $materialIds, ]), ]; $options = [ "headers" => [ 'Access-Token' => $accessToken, 'Content-Type' => 'application/json', ] ]; $url = $url."?".http_build_query($request_data); $httpClient = new Client(['timeout' => 10]); $res = $httpClient->request('GET', $url, $options); $result = json_decode($res->getBody(), true); return $result['data']['list'] ?? []; } }