accounts) || !is_array($obj_report->accounts) ) return false; foreach ($obj_report->accounts as $account) { if ($account->accountId == $publisher_id) return true; } return false; } static public function downloadTransactions($publisher_id, $token, $filter_referer, $fromTS, $tillTS) { $output_transactions = array(); $fromTS_temp = $fromTS; $tillTS_temp = min($tillTS, $fromTS + 3600*24*20); while ($tillTS_temp <= $tillTS) { $StartDate = date('Y-m-d', $fromTS_temp) . 'T00%3A00%3A00'; $EndDate = date('Y-m-d', $tillTS_temp) . 'T00%3A00%3A00'; $report_url = 'https://api.awin.com/publishers/'.$publisher_id.'/transactions/?startDate='.$StartDate.'&endDate='.$EndDate.'&timezone=Europe/Berlin&dateType=transaction&accessToken='.$token; $http_answer = wp_remote_get($report_url); if (is_wp_error($http_answer) || $http_answer['response']['code'] != 200) { return $output_transactions; } $str_report = $http_answer['body']; $arr_report = json_decode($str_report); //print_r($arr_report); if (!is_array($arr_report)) { return $output_transactions; } foreach($arr_report as $transaction) { if (!empty($filter_referer) && strpos($transaction->publisherUrl, $filter_referer) === false) continue; //we have to get the shop name from a separate api call $shop_name = $transaction->advertiserId; //fallback $advertiser_report_url = 'https://api.awin.com/publishers/'.$publisher_id.'/programmedetails?advertiserId='.$transaction->advertiserId.'&accessToken='.$token; $advertiser_http_answer = wp_remote_get($advertiser_report_url); if (!is_wp_error($advertiser_http_answer) && $advertiser_http_answer['response']['code'] == 200) { $advertiser_obj_report = json_decode($advertiser_http_answer['body']); if (is_object($advertiser_obj_report) && is_object($advertiser_obj_report->programmeInfo) && isset ($advertiser_obj_report->programmeInfo->name)) { $shop_name = $advertiser_obj_report->programmeInfo->name; } } $datetime_db = str_replace('T', ' ', $transaction->transactionDate); if (isset($transaction->clickRefs->clickRef)) $sub_id = $transaction->clickRefs->clickRef; else $sub_id = 0; if (isset($transaction->saleAmount->amount) && $transaction->saleAmount->amount > 0) { $transaction_type = 'S'; $price = $transaction->saleAmount->amount; } else { $transaction_type = 'L'; $price = 0; } if ($transaction->commissionStatus == 'approved') { $status = 'Confirmed'; $confirmed = $transaction->commissionAmount->amount; } else { if ($transaction->commissionStatus == 'pending') $status = 'Open'; else $status = 'Cancelled'; $confirmed = 0; } if(!empty($transaction->validationDate)) $checkdatetime_db = str_replace('T', ' ', $transaction->validationDate); else $checkdatetime_db = $datetime_db; $output_transactions[] = array( 'network' => 'awin', 'number' => $transaction->id, 'datetime_db' => $datetime_db, 'sub_id' => $sub_id, 'shop_id' => $transaction->advertiserId, 'shop_name' => $shop_name, 'transaction_type' => $transaction_type, 'price' => $price, 'commission' => $transaction->commissionAmount->amount, 'confirmed' => $confirmed, 'checkdatetime_db' => $checkdatetime_db, 'status' => $status ); } $fromTS_temp = $tillTS_temp; $tillTS_temp += 3600*24*20; } return $output_transactions; } } ?>