Overview
  • Namespace
  • Class

Namespaces

  • PayPal
    • Api
    • Auth
    • Cache
    • Common
    • Converter
    • Core
    • Exception
    • Handler
    • Log
    • Rest
    • Security
    • Transport
    • Validation

Classes

  • PayPal\Api\Address
  • PayPal\Api\Agreement
  • PayPal\Api\AgreementDetails
  • PayPal\Api\AgreementStateDescriptor
  • PayPal\Api\AgreementTransaction
  • PayPal\Api\AgreementTransactions
  • PayPal\Api\AlternatePayment
  • PayPal\Api\Amount
  • PayPal\Api\Authorization
  • PayPal\Api\BankAccount
  • PayPal\Api\BankAccountsList
  • PayPal\Api\BankToken
  • PayPal\Api\BaseAddress
  • PayPal\Api\Billing
  • PayPal\Api\BillingAgreementToken
  • PayPal\Api\BillingInfo
  • PayPal\Api\CancelNotification
  • PayPal\Api\Capture
  • PayPal\Api\CarrierAccount
  • PayPal\Api\CarrierAccountToken
  • PayPal\Api\CartBase
  • PayPal\Api\ChargeModel
  • PayPal\Api\Cost
  • PayPal\Api\CountryCode
  • PayPal\Api\CreateProfileResponse
  • PayPal\Api\Credit
  • PayPal\Api\CreditCard
  • PayPal\Api\CreditCardHistory
  • PayPal\Api\CreditCardList
  • PayPal\Api\CreditCardToken
  • PayPal\Api\CreditFinancingOffered
  • PayPal\Api\Currency
  • PayPal\Api\CurrencyConversion
  • PayPal\Api\CustomAmount
  • PayPal\Api\DetailedRefund
  • PayPal\Api\Details
  • PayPal\Api\Error
  • PayPal\Api\ErrorDetails
  • PayPal\Api\ExtendedBankAccount
  • PayPal\Api\ExternalFunding
  • PayPal\Api\FileAttachment
  • PayPal\Api\FlowConfig
  • PayPal\Api\FmfDetails
  • PayPal\Api\FundingDetail
  • PayPal\Api\FundingInstrument
  • PayPal\Api\FundingOption
  • PayPal\Api\FundingSource
  • PayPal\Api\FuturePayment
  • PayPal\Api\HyperSchema
  • PayPal\Api\Image
  • PayPal\Api\Incentive
  • PayPal\Api\InputFields
  • PayPal\Api\InstallmentInfo
  • PayPal\Api\InstallmentOption
  • PayPal\Api\Invoice
  • PayPal\Api\InvoiceAddress
  • PayPal\Api\InvoiceItem
  • PayPal\Api\InvoiceNumber
  • PayPal\Api\InvoiceSearchResponse
  • PayPal\Api\Item
  • PayPal\Api\ItemList
  • PayPal\Api\Links
  • PayPal\Api\Measurement
  • PayPal\Api\MerchantInfo
  • PayPal\Api\MerchantPreferences
  • PayPal\Api\Metadata
  • PayPal\Api\NameValuePair
  • PayPal\Api\Notification
  • PayPal\Api\OpenIdAddress
  • PayPal\Api\OpenIdError
  • PayPal\Api\OpenIdSession
  • PayPal\Api\OpenIdTokeninfo
  • PayPal\Api\OpenIdUserinfo
  • PayPal\Api\Order
  • PayPal\Api\OverrideChargeModel
  • PayPal\Api\Participant
  • PayPal\Api\Patch
  • PayPal\Api\PatchRequest
  • PayPal\Api\Payee
  • PayPal\Api\Payer
  • PayPal\Api\PayerInfo
  • PayPal\Api\Payment
  • PayPal\Api\PaymentCard
  • PayPal\Api\PaymentCardToken
  • PayPal\Api\PaymentDefinition
  • PayPal\Api\PaymentDetail
  • PayPal\Api\PaymentExecution
  • PayPal\Api\PaymentHistory
  • PayPal\Api\PaymentInstruction
  • PayPal\Api\PaymentOptions
  • PayPal\Api\PaymentSummary
  • PayPal\Api\PaymentTerm
  • PayPal\Api\Payout
  • PayPal\Api\PayoutBatch
  • PayPal\Api\PayoutBatchHeader
  • PayPal\Api\PayoutItem
  • PayPal\Api\PayoutItemDetails
  • PayPal\Api\PayoutSenderBatchHeader
  • PayPal\Api\Phone
  • PayPal\Api\Plan
  • PayPal\Api\PlanList
  • PayPal\Api\PotentialPayerInfo
  • PayPal\Api\Presentation
  • PayPal\Api\PrivateLabelCard
  • PayPal\Api\ProcessorResponse
  • PayPal\Api\RecipientBankingInstruction
  • PayPal\Api\RedirectUrls
  • PayPal\Api\Refund
  • PayPal\Api\RefundDetail
  • PayPal\Api\RefundRequest
  • PayPal\Api\RelatedResources
  • PayPal\Api\Sale
  • PayPal\Api\Search
  • PayPal\Api\ShippingAddress
  • PayPal\Api\ShippingCost
  • PayPal\Api\ShippingInfo
  • PayPal\Api\Tax
  • PayPal\Api\Template
  • PayPal\Api\TemplateData
  • PayPal\Api\Templates
  • PayPal\Api\TemplateSettings
  • PayPal\Api\TemplateSettingsMetadata
  • PayPal\Api\Terms
  • PayPal\Api\Transaction
  • PayPal\Api\TransactionBase
  • PayPal\Api\Transactions
  • PayPal\Api\VerifyWebhookSignature
  • PayPal\Api\VerifyWebhookSignatureResponse
  • PayPal\Api\Webhook
  • PayPal\Api\WebhookEvent
  • PayPal\Api\WebhookEventList
  • PayPal\Api\WebhookEventType
  • PayPal\Api\WebhookEventTypeList
  • PayPal\Api\WebhookList
  • PayPal\Api\WebProfile
  • PayPal\Auth\OAuthTokenCredential
  • PayPal\Cache\AuthorizationCache
  • PayPal\Common\ArrayUtil
  • PayPal\Common\PayPalModel
  • PayPal\Common\PayPalResourceModel
  • PayPal\Common\PayPalUserAgent
  • PayPal\Common\ReflectionUtil
  • PayPal\Converter\FormatConverter
  • PayPal\Core\PayPalConfigManager
  • PayPal\Core\PayPalConstants
  • PayPal\Core\PayPalCredentialManager
  • PayPal\Core\PayPalHttpConfig
  • PayPal\Core\PayPalHttpConnection
  • PayPal\Core\PayPalLoggingManager
  • PayPal\Handler\OauthHandler
  • PayPal\Handler\RestHandler
  • PayPal\Log\PayPalDefaultLogFactory
  • PayPal\Log\PayPalLogger
  • PayPal\Rest\ApiContext
  • PayPal\Security\Cipher
  • PayPal\Transport\PayPalRestCall
  • PayPal\Validation\ArgumentValidator
  • PayPal\Validation\JsonValidator
  • PayPal\Validation\NumericValidator
  • PayPal\Validation\UrlValidator

Interfaces

  • PayPal\Handler\IPayPalHandler
  • PayPal\Log\PayPalLogFactory
  • PayPal\Rest\IResource

Exceptions

  • PayPal\Exception\PayPalConfigurationException
  • PayPal\Exception\PayPalConnectionException
  • PayPal\Exception\PayPalInvalidCredentialException
  • PayPal\Exception\PayPalMissingCredentialException
  1 <?php
  2 /**
  3  * API handler for all REST API calls
  4  */
  5 
  6 namespace PayPal\Handler;
  7 
  8 use PayPal\Auth\OAuthTokenCredential;
  9 use PayPal\Common\PayPalUserAgent;
 10 use PayPal\Core\PayPalConstants;
 11 use PayPal\Core\PayPalCredentialManager;
 12 use PayPal\Core\PayPalHttpConfig;
 13 use PayPal\Exception\PayPalConfigurationException;
 14 use PayPal\Exception\PayPalInvalidCredentialException;
 15 use PayPal\Exception\PayPalMissingCredentialException;
 16 
 17 /**
 18  * Class RestHandler
 19  */
 20 class RestHandler implements IPayPalHandler
 21 {
 22     /**
 23      * Private Variable
 24      *
 25      * @var \Paypal\Rest\ApiContext $apiContext
 26      */
 27     private $apiContext;
 28 
 29     /**
 30      * Construct
 31      *
 32      * @param \Paypal\Rest\ApiContext $apiContext
 33      */
 34     public function __construct($apiContext)
 35     {
 36         $this->apiContext = $apiContext;
 37     }
 38 
 39     /**
 40      * @param PayPalHttpConfig $httpConfig
 41      * @param string                    $request
 42      * @param mixed                     $options
 43      * @return mixed|void
 44      * @throws PayPalConfigurationException
 45      * @throws PayPalInvalidCredentialException
 46      * @throws PayPalMissingCredentialException
 47      */
 48     public function handle($httpConfig, $request, $options)
 49     {
 50         $credential = $this->apiContext->getCredential();
 51         $config = $this->apiContext->getConfig();
 52 
 53         if ($credential == null) {
 54             // Try picking credentials from the config file
 55             $credMgr = PayPalCredentialManager::getInstance($config);
 56             $credValues = $credMgr->getCredentialObject();
 57 
 58             if (!is_array($credValues)) {
 59                 throw new PayPalMissingCredentialException("Empty or invalid credentials passed");
 60             }
 61 
 62             $credential = new OAuthTokenCredential($credValues['clientId'], $credValues['clientSecret']);
 63         }
 64 
 65         if ($credential == null || !($credential instanceof OAuthTokenCredential)) {
 66             throw new PayPalInvalidCredentialException("Invalid credentials passed");
 67         }
 68 
 69         $httpConfig->setUrl(
 70             rtrim(trim($this->_getEndpoint($config)), '/') .
 71             (isset($options['path']) ? $options['path'] : '')
 72         );
 73 
 74         // Overwrite Expect Header to disable 100 Continue Issue
 75         $httpConfig->addHeader("Expect", null);
 76 
 77         if (!array_key_exists("User-Agent", $httpConfig->getHeaders())) {
 78             $httpConfig->addHeader("User-Agent", PayPalUserAgent::getValue(PayPalConstants::SDK_NAME, PayPalConstants::SDK_VERSION));
 79         }
 80 
 81         if (!is_null($credential) && $credential instanceof OAuthTokenCredential && is_null($httpConfig->getHeader('Authorization'))) {
 82             $httpConfig->addHeader('Authorization', "Bearer " . $credential->getAccessToken($config), false);
 83         }
 84 
 85         if (($httpConfig->getMethod() == 'POST' || $httpConfig->getMethod() == 'PUT') && !is_null($this->apiContext->getRequestId())) {
 86             $httpConfig->addHeader('PayPal-Request-Id', $this->apiContext->getRequestId());
 87         }
 88         // Add any additional Headers that they may have provided
 89         $headers = $this->apiContext->getRequestHeaders();
 90         foreach ($headers as $key => $value) {
 91             $httpConfig->addHeader($key, $value);
 92         }
 93     }
 94 
 95     /**
 96      * End Point
 97      *
 98      * @param array $config
 99      *
100      * @return string
101      * @throws \PayPal\Exception\PayPalConfigurationException
102      */
103     private function _getEndpoint($config)
104     {
105         if (isset($config['service.EndPoint'])) {
106             return $config['service.EndPoint'];
107         } elseif (isset($config['mode'])) {
108             switch (strtoupper($config['mode'])) {
109                 case 'SANDBOX':
110                     return PayPalConstants::REST_SANDBOX_ENDPOINT;
111                     break;
112                 case 'LIVE':
113                     return PayPalConstants::REST_LIVE_ENDPOINT;
114                     break;
115                 default:
116                     throw new PayPalConfigurationException('The mode config parameter must be set to either sandbox/live');
117                     break;
118             }
119         } else {
120             // Defaulting to Sandbox
121             return PayPalConstants::REST_SANDBOX_ENDPOINT;
122         }
123     }
124 }
125 
API documentation generated by ApiGen