403Webshell
Server IP : 85.158.181.41  /  Your IP : 216.73.217.12
Web Server : Apache
System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64
User : moncbefd ( 1024)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/moncbefd/www.moneta.at/ext/payone/php/Payone/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/ext/payone/php/Payone/Builder.php
<?php
/**
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the GNU General Public License (GPL 2)
 * that is bundled with this package in the file LICENSE.txt
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Payone to newer
 * versions in the future. If you wish to customize Payone for your
 * needs please refer to http://www.payone.de for more information.
 *
 * @category        Payone
 * @package         Payone
 * @copyright       Copyright (c) 2012 <info@noovias.com> - www.noovias.com
 * @author          Matthias Walter <info@noovias.com>
 * @license         <http://www.gnu.org/licenses/> GNU General Public License (GPL 2)
 * @link            http://www.noovias.com
 */

/**
 *
 * @category        Payone
 * @package         Payone
 * @copyright       Copyright (c) 2012 <info@noovias.com> - www.noovias.com
 * @license         <http://www.gnu.org/licenses/> GNU General Public License (GPL 2)
 * @link            http://www.noovias.com
 */
class Payone_Builder
{
    const KEY_API = 'api';
    const KEY_CLIENTAPI = 'client_api';
    const KEY_PROTOCOL = 'protocol';
    const KEY_SETTINGS = 'settings';
    const KEY_TRANSACTIONSTATUS = 'transaction_status';
    const KEY_SESSIONSTATUS = 'session_status';

    /** @var array */
    protected $factories = array();
    /** @var Payone_Config */
    protected $config = null;

    /**
     * @constructor
     * @param null|Payone_Config $config config can be set via constructor or setConfig()
     */
    public function __construct(Payone_Config $config = null)
    {
        if ($config === null) {
            $config = new Payone_Config(); // Default config
        }
        $this->config = $config;

        $this->factories[self::KEY_API] = new Payone_Api_Factory($config->getApiConfig());
        $this->factories[self::KEY_CLIENTAPI] = new Payone_ClientApi_Factory();
        $this->factories[self::KEY_PROTOCOL] = new Payone_Protocol_Factory();
        $this->factories[self::KEY_SETTINGS] = new Payone_Settings_Factory();
        $this->factories[self::KEY_TRANSACTIONSTATUS] = new Payone_TransactionStatus_Factory($config->getTransactionStatusConfig());
        $this->factories[self::KEY_SESSIONSTATUS] = new Payone_SessionStatus_Factory($config->getSessionStatusConfig());

    }

    /**
     * @api
     *
     * @return Payone_ClientApi_Service_GenerateHash
     */
    public function buildServiceClientApiGenerateHash()
    {
        return $this->buildService(self::KEY_CLIENTAPI . '/generateHash');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Payment_Authorize
     */
    public function buildServicePaymentAuthorize()
    {
        return $this->buildService(self::KEY_API . '/payment/authorize');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Payment_Preauthorize
     */
    public function buildServicePaymentPreauthorize()
    {
        return $this->buildService(self::KEY_API . '/payment/preauthorize');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Payment_Capture
     */
    public function buildServicePaymentCapture()
    {
        return $this->buildService(self::KEY_API . '/payment/capture');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Payment_Debit
     */
    public function buildServicePaymentDebit()
    {
        return $this->buildService(self::KEY_API . '/payment/debit');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Payment_Refund
     */
    public function buildServicePaymentRefund()
    {
        return $this->buildService(self::KEY_API . '/payment/refund');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Verification_3dsCheck
     */
    public function buildServiceVerification3dsCheck()
    {
        return $this->buildService(self::KEY_API . '/verification/3dscheck');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Management_GetInvoice
     */
    public function buildServiceManagementGetInvoice()
    {
        return $this->buildService(self::KEY_API . '/management/getInvoice');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Management_GetFile
     */
    public function buildServiceManagementGetFile()
    {
        return $this->buildService(self::KEY_API . '/management/getFile');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Management_ManageMandate
     */
    public function buildServiceManagementManageMandate()
    {
        return $this->buildService(self::KEY_API . '/management/manageMandate');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Verification_AddressCheck
     */
    public function buildServiceVerificationAddressCheck()
    {
        return $this->buildService(self::KEY_API . '/verification/addressCheck');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Verification_CreditCardCheck
     */
    public function buildServiceVerificationCreditCardCheck()
    {
        return $this->buildService(self::KEY_API . '/verification/creditCardCheck');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Verification_BankAccountCheck
     */
    public function buildServiceVerificationBankAccountCheck()
    {
        return $this->buildService(self::KEY_API . '/verification/bankAccountCheck');
    }

    /**
     * @api
     *
     * @return Payone_Api_Service_Verification_Consumerscore
     */
    public function buildServiceVerificationConsumerscore()
    {
        return $this->buildService(self::KEY_API . '/verification/consumerscore');
    }

    /**
     * @api
     *
     * @return Payone_Settings_Service_XmlGenerate
     */
    public function buildServiceSettingsXmlGenerate()
    {
        return $this->buildService(self::KEY_SETTINGS . '/xmlgenerate');
    }

    /**
     * @api
     * @param $key
     * @param array $validIps
     * @return Payone_TransactionStatus_Service_HandleRequest
     */
    public function buildServiceTransactionStatusHandleRequest($key, array $validIps)
    {
        /** @var $service Payone_TransactionStatus_Service_HandleRequest */
        $service = $this->buildService(self::KEY_TRANSACTIONSTATUS . '/handlerequest');
        $validators = $service->getValidators();

        foreach ($validators as $validator) {
            if ($validator instanceof Payone_TransactionStatus_Validator_DefaultParameters) {
                /** @var $validator Payone_TransactionStatus_Validator_DefaultParameters */
                $validator->setKey($key);
            }
            elseif($validator instanceof Payone_TransactionStatus_Validator_Ip)
            {
                /** @var $validator Payone_TransactionStatus_Validator_Ip */
                $validator->setValidIps($validIps);
                $validator->setConfig($this->getConfig()->getTransactionStatusConfig());
            }
        }

        return $service;
    }

    /**
     * @api
     * @param $key
     * @param array $validIps
     * @return Payone_SessionStatus_Service_HandleRequest
     */
    public function buildServiceSessionStatusHandleRequest($key, array $validIps)
    {
        /** @var $service Payone_SessionStatus_Service_HandleRequest */
        $service = $this->buildService(self::KEY_SESSIONSTATUS . '/handlerequest');
        $validators = $service->getValidators();

        foreach ($validators as $validator) {
            if ($validator instanceof Payone_SessionStatus_Validator_DefaultParameters) {
                /** @var $validator Payone_SessionStatus_Validator_DefaultParameters */
                $validator->setKey($key);
            }
            elseif($validator instanceof Payone_SessionStatus_Validator_Ip)
            {
                /** @var $validator Payone_SessionStatus_Validator_Ip */
                $validator->setValidIps($validIps);
                $validator->setConfig($this->getConfig()->getSessionStatusConfig());
            }
        }

        return $service;
    }

    /**
     * @param string $key Service key, e.g. "api/payment/authorize"
     * @return Payone_Api_Service_Payment_Abstract
     * @throws Exception
     */
    protected function buildService($key)
    {
        $config = $this->getConfig();

        $keyArray = explode('/', $key);
        $factoryKey = array_shift($keyArray);
        $serviceKey = implode('/', $keyArray);

        // Load required factory:
        $factory = $this->getFactory($factoryKey);

        $service = $factory->buildService($serviceKey);

        // Add Protocol Service, if required, with custom or default config:
        if (method_exists($service, 'setServiceProtocol')) {
            $protocolConfig = $config->getValue($factoryKey . '/' . $serviceKey . '/protocol');
            if ($protocolConfig == null) {
                $protocolConfig = $config->getValue($factoryKey . '/default/protocol');
            }
            $serviceProtocol = $this->buildServiceProtocol($protocolConfig, $factoryKey);
            $service->setServiceProtocol($serviceProtocol);
        }

        if (method_exists($service, 'setValidator')) {
            $validatorConfig = $config->getValue($factoryKey . '/' . $serviceKey . '/validator');
            if ($validatorConfig == null) {
                $validatorConfig = $config->getValue($factoryKey . '/default/validator');
            }
            $validator = $this->buildServiceValidation($validatorConfig);
            if ($validator !== null) {
                $service->setValidator($validator);
            }
        }

        if (method_exists($service, 'setValidators')) {
            $validatorConfig = $config->getValue($factoryKey . '/' . $serviceKey . '/validators');
            if ($validatorConfig == null) {
                $validatorConfig = $config->getValue($factoryKey . '/default/validators');
            }
            $validator = $this->buildServiceValidation($validatorConfig);
            if ($validator !== null) {
                $service->setValidators($validator);
            }
        }

        return $service;
    }

    /**
     * @param array $protocolConfig
     * @param string $factoryKey
     * @return Payone_Protocol_Service_Protocol_Abstract
     */
    protected function buildServiceProtocol(array $protocolConfig, $factoryKey)
    {
        $serviceProtocol = $this->getFactory($factoryKey)->buildServiceProtocolRequest();
        $serviceApplyFilters = $this->getFactory(self::KEY_PROTOCOL)->buildServiceApplyFilters();

        // Load filters by config:
        if (array_key_exists('filter', $protocolConfig)) {
            foreach ($protocolConfig['filter'] as $key => $options) {
                if ($options['enabled'] === TRUE || $options['enabled'] === 1) {
                    // @todo hs: un-elegant, kann man das hier ohne switch machen?
                    switch ($key) {
                        case Payone_Protocol_Filter_MaskValue::FILTER_KEY :
                            $filterMaskValue = new Payone_Protocol_Filter_MaskValue();
                            $filterMaskValue->setConfig('percent', $options['percent']);
                            $serviceApplyFilters->addFilter($filterMaskValue);
                            break;
                    }
                }
            }
        }
        $serviceProtocol->setServiceApplyFilters($serviceApplyFilters);

        if (array_key_exists('loggers', $protocolConfig)) {
            $loggerConfig = $protocolConfig['loggers'];
            if (is_array($loggerConfig) and count($loggerConfig) > 0) {
                foreach ($loggerConfig as $className => $options) {
                    if (class_exists($className)) {
                        /** @var $logger Payone_Protocol_Logger_Interface **/
                        $logger = new $className;
                        if (method_exists($logger, 'setConfig')) {
                            $logger->setConfig($options);
                        }
                        $serviceProtocol->addLogger($logger);
                    }
                }
            }
        }

        // @todo hs: repository section, for now as a separate array, could this be combined with the loggers?
        if (array_key_exists('repositories', $protocolConfig)) {
            $respositoryConfig = $protocolConfig['repositories'];
            if (is_array($respositoryConfig) and count($respositoryConfig) > 0) {
                foreach ($respositoryConfig as $className => $options) {
                    if (class_exists($className)) {
                        // @todo hs: what do we do with Payone_Api_Persistence_Interface?
                        /** @var $repository Payone_TransactionStatus_Persistence_Interface **/
                        $repository = new $className;
                        if (method_exists($repository, 'setConfig')) {
                            $repository->setConfig($options);
                        }
                        $serviceProtocol->addRepository($repository);
                    }
                }
            }
        }

        return $serviceProtocol;
    }

    /**
     * @param $validatorConfig
     * @return null|validator
     */
    protected function buildServiceValidation($validatorConfig)
    {
        if (is_array($validatorConfig)) {
            $validator = array();
            foreach ($validatorConfig as $config) {
                if ($config === 'default' or !class_exists($config)) {
                    return null;
                }
                else {
                    $validator[] = new $config();
                }
            }

            return $validator;
        }
        else {
            // Load validator by config (if non-default):
            if ($validatorConfig === 'default' or !class_exists($validatorConfig)) {
                return null;
            }
            else {
                $validator = new $validatorConfig();
                return $validator;
            }
        }
    }

    /**
     * @param \Payone_Config $config
     */
    public function setConfig(Payone_Config $config)
    {
        $this->config = $config;
    }

    /**
     * @return \Payone_Config
     */
    protected function getConfig()
    {
        return $this->config;
    }

    /**
     * @param $key
     * @return null|Payone_Api_Factory|Payone_Protocol_Factory|Payone_Settings_Factory|Payone_TransactionStatus_Factory
     * @throws Exception
     */
    protected function getFactory($key)
    {
        if (array_key_exists($key, $this->factories)) {
            return $this->factories[$key];
        }
        else {
            throw new Exception('Could not get internal factory with key "' . $key . '"');
        }
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit