public static function configure(ServicesConfig $config)
    {
        $config->validate();

        $gateway = null;
        if (isset($config->merchantId) && !empty($config->merchantId)) {
            $gateway = new RealexConnector();
            $gateway->merchantId = $config->merchantId;
            $gateway->sharedSecret = $config->sharedSecret;
            $gateway->accountId = $config->accountId;
            $gateway->channel = $config->channel;
            $gateway->rebatePassword = $config->rebatePassword;
            $gateway->refundPassword = $config->refundPassword;
            $gateway->timeout = $config->timeout;
            $gateway->serviceUrl = $config->serviceUrl;
            $gateway->hostedPaymentConfig = $config->hostedPaymentConfig;
            $gateway->curlOptions = $config->curlOptions;
            static::$instance = new static($gateway, $gateway);
        } else {
            $gateway = new PorticoConnector();
            $gateway->siteId = $config->siteId;
            $gateway->licenseId = $config->licenseId;
            $gateway->deviceId = $config->deviceId;
            $gateway->username = $config->username;
            $gateway->password = $config->password;
            $gateway->secretApiKey = $config->secretApiKey;
            $gateway->developerId = $config->developerId;
            $gateway->versionNumber = $config->versionNumber;
            $gateway->timeout = $config->timeout;
            $gateway->serviceUrl = $config->serviceUrl . '/Hps.Exchange.PosGateway/PosGatewayService.asmx';
            $gateway->curlOptions = $config->curlOptions;

            $payplanEndPoint = (strpos(strtolower($config->serviceUrl), 'cert.') > 0) ?
                                '/Portico.PayPlan.v2/':
                                '/PayPlan.v2/';
            
            $recurring = new PayPlanConnector();
            $recurring->siteId = $config->siteId;
            $recurring->licenseId = $config->licenseId;
            $recurring->deviceId = $config->deviceId;
            $recurring->username = $config->username;
            $recurring->password = $config->password;
            $recurring->secretApiKey = $config->secretApiKey;
            $recurring->developerId = $config->developerId;
            $recurring->versionNumber = $config->versionNumber;
            $recurring->timeout = $config->timeout;
            $recurring->serviceUrl = $config->serviceUrl . $payplanEndPoint;
            $recurring->curlOptions = $config->curlOptions;

            static::$instance = new static($gateway, $recurring);
        }
    }
public static function configure(ServicesConfig $config)
    {
        $config->validate();

        $gateway = null;
        if (isset($config->merchantId) && !empty($config->merchantId)) {
            $gateway = new RealexConnector();
            $gateway->merchantId = $config->merchantId;
            $gateway->sharedSecret = $config->sharedSecret;
            $gateway->accountId = $config->accountId;
            $gateway->channel = $config->channel;
            $gateway->rebatePassword = $config->rebatePassword;
            $gateway->refundPassword = $config->refundPassword;
            $gateway->timeout = $config->timeout;
            $gateway->serviceUrl = $config->serviceUrl;
            $gateway->hostedPaymentConfig = $config->hostedPaymentConfig;
            $gateway->curlOptions = $config->curlOptions;
            static::$instance = new static($gateway, $gateway);
        } else {
            $gateway = new PorticoConnector();
            $gateway->siteId = $config->siteId;
            $gateway->licenseId = $config->licenseId;
            $gateway->deviceId = $config->deviceId;
            $gateway->username = $config->username;
            $gateway->password = $config->password;
            $gateway->secretApiKey = $config->secretApiKey;
            $gateway->developerId = $config->developerId;
            $gateway->versionNumber = $config->versionNumber;
            $gateway->timeout = $config->timeout;
            $gateway->serviceUrl = $config->serviceUrl . '/Hps.Exchange.PosGateway/PosGatewayService.asmx';
            $gateway->curlOptions = $config->curlOptions;

            $payplanEndPoint = (strpos(strtolower($config->serviceUrl), 'cert.') > 0) ?
                                '/Portico.PayPlan.v2/':
                                '/PayPlan.v2/';
            
            $recurring = new PayPlanConnector();
            $recurring->siteId = $config->siteId;
            $recurring->licenseId = $config->licenseId;
            $recurring->deviceId = $config->deviceId;
            $recurring->username = $config->username;
            $recurring->password = $config->password;
            $recurring->secretApiKey = $config->secretApiKey;
            $recurring->developerId = $config->developerId;
            $recurring->versionNumber = $config->versionNumber;
            $recurring->timeout = $config->timeout;
            $recurring->serviceUrl = $config->serviceUrl . $payplanEndPoint;
            $recurring->curlOptions = $config->curlOptions;

            static::$instance = new static($gateway, $recurring);
        }
    }
public static function configure ( ServicesConfig $ config ) { $ config -> validate ( ) ; $ gateway = null ; if ( isset ( $ config -> merchantId ) && ! empty ( $ config -> merchantId ) ) { $ gateway = new RealexConnector ( ) ; $ gateway -> merchantId = $ config -> merchantId ; $ gateway -> sharedSecret = $ config -> sharedSecret ; $ gateway -> accountId = $ config -> accountId ; $ gateway -> channel = $ config -> channel ; $ gateway -> rebatePassword = $ config -> rebatePassword ; $ gateway -> refundPassword = $ config -> refundPassword ; $ gateway -> timeout = $ config -> timeout ; $ gateway -> serviceUrl = $ config -> serviceUrl ; $ gateway -> hostedPaymentConfig = $ config -> hostedPaymentConfig ; $ gateway -> curlOptions = $ config -> curlOptions ; static :: $ instance = new static ( $ gateway , $ gateway ) ; } else { $ gateway = new PorticoConnector ( ) ; $ gateway -> siteId = $ config -> siteId ; $ gateway -> licenseId = $ config -> licenseId ; $ gateway -> deviceId = $ config -> deviceId ; $ gateway -> username = $ config -> username ; $ gateway -> password = $ config -> password ; $ gateway -> secretApiKey = $ config -> secretApiKey ; $ gateway -> developerId = $ config -> developerId ; $ gateway -> versionNumber = $ config -> versionNumber ; $ gateway -> timeout = $ config -> timeout ; $ gateway -> serviceUrl = $ config -> serviceUrl . '/Hps.Exchange.PosGateway/PosGatewayService.asmx' ; $ gateway -> curlOptions = $ config -> curlOptions ; $ payplanEndPoint = ( strpos ( strtolower ( $ config -> serviceUrl ) , 'cert.' ) > 0 ) ? '/Portico.PayPlan.v2/' : '/PayPlan.v2/' ; $ recurring = new PayPlanConnector ( ) ; $ recurring -> siteId = $ config -> siteId ; $ recurring -> licenseId = $ config -> licenseId ; $ recurring -> deviceId = $ config -> deviceId ; $ recurring -> username = $ config -> username ; $ recurring -> password = $ config -> password ; $ recurring -> secretApiKey = $ config -> secretApiKey ; $ recurring -> developerId = $ config -> developerId ; $ recurring -> versionNumber = $ config -> versionNumber ; $ recurring -> timeout = $ config -> timeout ; $ recurring -> serviceUrl = $ config -> serviceUrl . $ payplanEndPoint ; $ recurring -> curlOptions = $ config -> curlOptions ; static :: $ instance = new static ( $ gateway , $ recurring ) ; } }
Configures the `ServicesContainer` singleton

@param ServicesConfig $config

@return void
Configures the ServicesContainer singleton