Oara\Network\Publisher\AffiliateFuture::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)
    {
        $merchantIdMap = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
        $nowDate = new \DateTime();
        $dStartDate = clone $dStartDate;
        $dStartDate->setTime(0, 0, 0);
        $dEndDate = clone $dEndDate;
        $dEndDate->setTime(23, 59, 59);
        $valuesFromExport = array();
        $valuesFromExport[] = new \Oara\Curl\Parameter('username', $this->_credentials["user"]);
        $valuesFromExport[] = new \Oara\Curl\Parameter('password', $this->_credentials["password"]);
        $valuesFromExport[] = new \Oara\Curl\Parameter('startDate', $dStartDate->format("d-M-Y"));
        $valuesFromExport[] = new \Oara\Curl\Parameter('endDate', $dEndDate->format("d-M-Y"));
        $transactions = array();
        $urls = array();
        $urls[] = new \Oara\Curl\Request('http://ws-external.afnt.co.uk/apiv1/AFFILIATES/affiliatefuture.asmx/GetTransactionListbyDate?', $valuesFromExport);
        $urls[] = new \Oara\Curl\Request('http://ws-external.afnt.co.uk/apiv1/AFFILIATES/affiliatefuture.asmx/GetCancelledTransactionListbyDate?', $valuesFromExport);
        $exportReport = $this->_client->get($urls);
        for ($i = 0; $i < \count($urls); $i++) {
            $xml = self::loadXml($exportReport[$i]);
            if (isset($xml->error)) {
                throw new \Exception('Error connecting with the server');
            }
            if (isset($xml->TransactionList)) {
                foreach ($xml->TransactionList as $transaction) {
                    $date = new \DateTime(self::findAttribute($transaction, 'TransactionDate'));
                    if (isset($merchantIdMap[(int) self::findAttribute($transaction, 'ProgrammeID')]) && $date->format("Y-m-d H:i:s") >= $dStartDate->format("Y-m-d H:i:s") && $date->format("Y-m-d H:i:s") <= $dEndDate->format("Y-m-d H:i:s")) {
                        $obj = array();
                        $obj['merchantId'] = self::findAttribute($transaction, 'ProgrammeID');
                        $obj['date'] = $date->format("Y-m-d H:i:s");
                        if (self::findAttribute($transaction, 'TrackingReference') != null) {
                            $obj['custom_id'] = self::findAttribute($transaction, 'TrackingReference');
                        }
                        $obj['unique_id'] = self::findAttribute($transaction, 'TransactionID');
                        if ($i == 0) {
                            $interval = $date->diff($nowDate);
                            if ($interval->format('%a') > 5) {
                                $obj['status'] = \Oara\Utilities::STATUS_CONFIRMED;
                            } else {
                                $obj['status'] = \Oara\Utilities::STATUS_PENDING;
                            }
                        } else {
                            if ($i == 1) {
                                $obj['status'] = \Oara\Utilities::STATUS_DECLINED;
                            }
                        }
                        $obj['amount'] = \Oara\Utilities::parseDouble(self::findAttribute($transaction, 'SaleValue'));
                        $obj['commission'] = \Oara\Utilities::parseDouble(self::findAttribute($transaction, 'SaleCommission'));
                        $leadCommission = \Oara\Utilities::parseDouble(self::findAttribute($transaction, 'LeadCommission'));
                        if ($leadCommission != 0) {
                            $obj['commission'] += $leadCommission;
                        }
                        $transactions[] = $obj;
                    }
                }
            }
        }
        return $transactions;
    }