public function getCaller()
    {
        if (is_null($this->caller)) {

            /**
             * @var \OxidEsales\PayPalModule\Core\Caller $caller
             */
            $caller = oxNew(\OxidEsales\PayPalModule\Core\Caller::class);

            $config = $this->getPayPalConfig();

            $caller->setParameter('VERSION', '84.0');
            $caller->setParameter('PWD', $config->getPassword());
            $caller->setParameter('USER', $config->getUserName());
            $caller->setParameter('SIGNATURE', $config->getSignature());

            $curl = oxNew(\OxidEsales\PayPalModule\Core\Curl::class);
            $curl->setDataCharset($config->getCharset());
            $curl->setHost($config->getHost());
            $curl->setUrlToCall($config->getApiUrl());

            $caller->setCurl($curl);

            if ($config->isLoggingEnabled()) {
                $logger = oxNew(\OxidEsales\PayPalModule\Core\Logger::class);
                $logger->setLoggerSessionId(\OxidEsales\Eshop\Core\Registry::getSession()->getId());
                $caller->setLogger($logger);
            }

            $this->setCaller($caller);
        }

        return $this->caller;
    }