public function handle($httpConfig, $request, $options)
{
parent::handle($httpConfig, $request, $options);
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);
}
$config = $options['config'];
$credential = $request->getCredential();
//TODO: Assuming existence of getApplicationId
if ($credential && $credential->getApplicationId() != null) {
$httpConfig->addHeader('X-PAYPAL-APPLICATION-ID', $credential->getApplicationId());
}
if (isset($config['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') {
$endpoint = PPConstants::PLATFORM_SANDBOX_ENDPOINT;
} else {
if (strtoupper($config['mode']) == 'LIVE') {
$endpoint = PPConstants::PLATFORM_LIVE_ENDPOINT;
} else {
if (strtoupper($config['mode']) == 'TLS') {
$endpoint = PPConstants::PLATFORM_TLS_ENDPOINT;
}
}
}
} else {
throw new PPConfigurationException('endpoint Not Set');
}
}
}
$httpConfig->setUrl($endpoint . $options['serviceName'] . '/' . $options['apiMethod']);
// Call the authentication handler to tack authentication related info
$handler = new PPAuthenticationHandler();
$handler->handle($httpConfig, $request, $options);
}