Oara\Network\Publisher\Daisycon::getTransactionList PHP Метод

getTransactionList() публичный Метод

public getTransactionList ( null $merchantList = null, DateTime $dStartDate = null, DateTime $dEndDate = null ) : array
$merchantList null
$dStartDate DateTime
$dEndDate DateTime
Результат array
    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;
    }