public function getTransactionList($merchantList = null, \DateTime $dStartDate = null, \DateTime $dEndDate = null)
{
$totalTransactions = array();
$merchantIdList = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
$user = $this->_credentials['user'];
$password = $this->_credentials['password'];
foreach ($this->_publisherId as $publisherId) {
$page = 1;
$pageSize = 100;
$finish = false;
while (!$finish) {
$url = "https://services.daisycon.com:443/publishers/{$publisherId}/transactions?page={$page}&per_page={$pageSize}&start=" . \urlencode($dStartDate->format("Y-m-d H:i:s")) . "&end=" . \urlencode($dEndDate->format("Y-m-d H:i:s"));
// initialize curl resource
$ch = \curl_init();
// set the http request authentication headers
$headers = array('Authorization: Basic ' . \base64_encode($user . ':' . $password));
// set curl options
\curl_setopt($ch, CURLOPT_URL, $url);
\curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
\curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// execute curl
$response = \curl_exec($ch);
$transactionList = \json_decode($response, true);
if ($transactionList) {
foreach ($transactionList as $transaction) {
$merchantId = $transaction['program_id'];
if (isset($merchantIdList[$merchantId])) {
$transactionArray = array();
$transactionArray['unique_id'] = $transaction['affiliatemarketing_id'];
$transactionArray['merchantId'] = $merchantId;
$transactionDate = new \DateTime($transaction['date']);
$transactionArray['date'] = $transactionDate->format("Y-m-d H:i:s");
$parts = \current($transaction['parts']);
if ($parts['subid'] != null) {
$transactionArray['custom_id'] = $parts['subid'];
}
if ($parts['status'] == 'approved') {
$transactionArray['status'] = \Oara\Utilities::STATUS_CONFIRMED;
} else {
if ($parts['status'] == 'pending' || $parts['status'] == 'potential' || $parts['status'] == 'open') {
$transactionArray['status'] = \Oara\Utilities::STATUS_PENDING;
} else {
if ($parts['status'] == 'disapproved' || $parts['status'] == 'incasso') {
$transactionArray['status'] = \Oara\Utilities::STATUS_DECLINED;
} else {
throw new \Exception("New status {$parts['status']}");
}
}
}
$transactionArray['amount'] = \Oara\Utilities::parseDouble($parts['revenue']);
$transactionArray['commission'] = \Oara\Utilities::parseDouble($parts['commission']);
$totalTransactions[] = $transactionArray;
}
}
}
if (\count($transactionList) != $pageSize) {
$finish = true;
}
$page++;
}
}
return $totalTransactions;
}