| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- namespace app\adapter;
- // 广点通-适配器
- use GuzzleHttp\Client;
- class GdtAdapter
- {
- public function OAuth($info)
- {
- // 执行验证callback, 返回授权后的字段,跟数据库对应
- return [
- "advertiser_id" => "",
- "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 {
- $nonce = md5(time().rand(00000, 99999));
- $url = 'https://api.e.qq.com/v3.0/hourly_reports/get?access_token='.$accessToken.'×tamp='.time().'&nonce='.$nonce;
- $request_data = [
- 'account_id' => $advertiserId,
- 'level' => 'REPORT_LEVEL_ADGROUP',
- 'date_range' => json_encode(['start_date' => $date, 'end_date' => $date]),
- 'group_by' => json_encode(['hour', 'adgroup_id']),
- 'fields' => json_encode(['hour', 'adgroup_id', 'adgroup_name', 'view_count', 'valid_click_count', 'cost', 'activated_count']),
- 'page' => $page,
- 'page_size' => 100,
- ];
- $url = $url."&".http_build_query($request_data);
- $httpClient = new Client(['timeout' => 10]);
- $res = $httpClient->request('GET', $url);
- $result = json_decode($res->getBody(), true);
- if (empty($result['data']['list'])) {
- break;
- }
- $data = array_merge($data, $result['data']['list']);
- $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 {
- $nonce = md5(time().rand(00000, 99999));
- $url = 'https://api.e.qq.com/v3.0/daily_reports/get?access_token='.$accessToken.'×tamp='.time().'&nonce='.$nonce;
- $request_data = [
- 'account_id' => $advertiserId,
- 'level' => 'REPORT_LEVEL_MATERIAL_VIDEO',
- 'date_range' => json_encode(['start_date'=>$date,'end_date'=>$date]),
- 'group_by' => json_encode(['date','video_id','adgroup_id']),
- 'fields' => json_encode(['date','video_id','adgroup_id','adgroup_name', 'view_count','valid_click_count','cost', 'activated_count','download_count','first_pay_count','video_outer_play_count','video_outer_play100_count']),
- 'page' => $page,
- 'page_size' => 1000,
- ];
- $url = $url."&".http_build_query($request_data);
- $httpClient = new Client(['timeout' => 10]);
- $res = $httpClient->request('GET', $url);
- $result = json_decode($res->getBody(), true);
- if (empty($result['data']['list'])) {
- break;
- }
- $data = array_merge($data, $result['data']['list']);
- $totalPage = $result['data']['page_info']['total_page'] ?? 1;
- $page++;
- } while ($page <= $totalPage);
- return $data;
- }
- }
|