PayPal\Handler\PPMerchantServiceHandler::handle PHP Method

handle() public method

public handle ( $httpConfig, $request, $options )
    public function handle($httpConfig, $request, $options)
    {
        parent::handle($httpConfig, $request, $options);
        $config = $options['config'];
        if (is_string($this->apiUsername) || is_null($this->apiUsername)) {
            // $apiUsername is optional, if null the default account in config file is taken
            $credMgr = PPCredentialManager::getInstance($options['config']);
            $request->setCredential(clone $credMgr->getCredentialObject($this->apiUsername));
        } else {
            $request->setCredential($this->apiUsername);
        }
        $endpoint = '';
        $credential = $request->getCredential();
        if (isset($options['port']) && isset($config['service.EndPoint.' . $options['port']])) {
            $endpoint = $config['service.EndPoint.' . $options['port']];
        } else {
            if (isset($config['service.EndPoint'])) {
                $endpoint = $config['service.EndPoint'];
            } else {
                if (isset($config['mode'])) {
                    if (strtoupper($config['mode']) == 'SANDBOX') {
                        if ($credential instanceof PPSignatureCredential) {
                            $endpoint = PPConstants::MERCHANT_SANDBOX_SIGNATURE_ENDPOINT;
                        } else {
                            if ($credential instanceof PPCertificateCredential) {
                                $endpoint = PPConstants::MERCHANT_SANDBOX_CERT_ENDPOINT;
                            }
                        }
                    } else {
                        if (strtoupper($config['mode']) == 'LIVE') {
                            if ($credential instanceof PPSignatureCredential) {
                                $endpoint = PPConstants::MERCHANT_LIVE_SIGNATURE_ENDPOINT;
                            } else {
                                if ($credential instanceof PPCertificateCredential) {
                                    $endpoint = PPConstants::MERCHANT_LIVE_CERT_ENDPOINT;
                                }
                            }
                        } else {
                            if (strtoupper($config['mode']) == 'TLS') {
                                if ($credential instanceof PPSignatureCredential) {
                                    $endpoint = PPConstants::MERCHANT_TLS_SIGNATURE_ENDPOINT;
                                } else {
                                    if ($credential instanceof PPCertificateCredential) {
                                        $endpoint = PPConstants::MERCHANT_TLS_CERT_ENDPOINT;
                                    }
                                }
                            }
                        }
                    }
                } else {
                    throw new PPConfigurationException('endpoint Not Set');
                }
            }
        }
        if ($request->getBindingType() == 'SOAP') {
            $httpConfig->setUrl($endpoint);
        } else {
            throw new PPConfigurationException('expecting service binding to be SOAP');
        }
        $request->addBindingInfo("namespace", "xmlns:ns=\"urn:ebay:api:PayPalAPI\" xmlns:ebl=\"urn:ebay:apis:eBLBaseComponents\" xmlns:cc=\"urn:ebay:apis:CoreComponentTypes\" xmlns:ed=\"urn:ebay:apis:EnhancedDataTypes\"");
        // Call the authentication handler to tack authentication related info
        $handler = new PPAuthenticationHandler();
        $handler->handle($httpConfig, $request, $options);
    }

Usage Example

 /**
  * @test
  */
 public function testSourceHeader()
 {
     $httpConfig = new PPHttpConfig();
     $handler = new PPMerchantServiceHandler(null, 'sdkname', 'sdkversion');
     $handler->handle($httpConfig, new PPRequest(new StdClass(), 'SOAP'), $this->options);
     $headers = $httpConfig->getHeaders();
     $this->assertArrayHasKey('X-PAYPAL-REQUEST-SOURCE', $headers);
     $this->assertRegExp('/.*sdkname.*/', $headers['X-PAYPAL-REQUEST-SOURCE']);
     $this->assertRegExp('/.*sdkversion.*/', $headers['X-PAYPAL-REQUEST-SOURCE']);
 }
PPMerchantServiceHandler