Oara\Network\Publisher\PerformanceHorizon::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)
    {
        $transactions = array();
        $merchantIdList = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
        foreach ($this->_publisherList as $publisherId => $publisherName) {
            $page = 0;
            $import = true;
            while ($import) {
                $offset = $page * 300;
                $url = "https://{$this->_pass}@api.performancehorizon.com/reporting/report_publisher/publisher/{$publisherId}/conversion.json?";
                $url .= "status=approved|mixed|pending|rejected";
                $url .= "&start_date=" . \urlencode($dStartDate->format("Y-m-d H:i"));
                $url .= "&end_date=" . \urlencode($dEndDate->format("Y-m-d H:i"));
                $url .= "&offset=" . $offset;
                $result = \file_get_contents($url);
                $conversionList = \json_decode($result, true);
                foreach ($conversionList["conversions"] as $conversion) {
                    $conversion = $conversion["conversion_data"];
                    $conversion["campaign_id"] = \str_replace("l", "", $conversion["campaign_id"]);
                    if (isset($merchantIdList[$conversion["campaign_id"]])) {
                        if (\count($this->_sitesAllowed) == 0 || \in_array($conversion["campaign_id"], $this->_sitesAllowed)) {
                            $transaction = array();
                            $transaction['unique_id'] = $conversion["conversion_id"];
                            $transaction['merchantId'] = $conversion["campaign_id"];
                            $transaction['date'] = $conversion["conversion_time"];
                            if ($conversion["publisher_reference"] != null) {
                                $transaction['custom_id'] = $conversion["publisher_reference"];
                            }
                            if ($conversion["conversion_value"]["conversion_status"] == 'approved') {
                                $transaction['status'] = \Oara\Utilities::STATUS_CONFIRMED;
                            } else {
                                if ($conversion["conversion_value"]["conversion_status"] == 'pending' || $conversion["conversion_value"]["conversion_status"] == 'mixed') {
                                    $transaction['status'] = \Oara\Utilities::STATUS_PENDING;
                                } else {
                                    if ($conversion["conversion_value"]["conversion_status"] == 'rejected') {
                                        $transaction['status'] = \Oara\Utilities::STATUS_DECLINED;
                                    }
                                }
                            }
                            $transaction['amount'] = $conversion["conversion_value"]["value"];
                            $transaction['currency'] = $conversion["currency"];
                            $transaction['commission'] = $conversion["conversion_value"]["publisher_commission"];
                            $transactions[] = $transaction;
                        }
                    }
                }
                if ((int) $conversionList["count"] < $offset) {
                    $import = false;
                }
                $page++;
            }
        }
        return $transactions;
    }