# give/4.15.1/src/PaymentGateways/PayPalCommerce/PayPalCheckoutSdk/PayPalHttpClient.php

GiveWP – Donation Plugin and Fundraising Platform, version 4.15.1. 60 lines.

- Page: https://pluginprobe.com/plugins/give/4.15.1/code/src/PaymentGateways/PayPalCommerce/PayPalCheckoutSdk/PayPalHttpClient.php
- Raw: https://pluginprobe.com/plugins/give/4.15.1/raw/src/PaymentGateways/PayPalCommerce/PayPalCheckoutSdk/PayPalHttpClient.php
- Modified: 2023-08-11T21:18:48+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/give/4.15.1/code/src/PaymentGateways/PayPalCommerce/PayPalCheckoutSdk/PayPalHttpClient.php#L10-L20`.

```php
<?php

namespace Give\PaymentGateways\PayPalCommerce\PayPalCheckoutSdk;

use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
use PayPalCheckoutSdk\Core\PayPalEnvironment;

/**
 * Class PayPalHttpClient.
 *
 * This class extends PayPalCheckoutSdk\Core\PayPalHttpClient class.
 * PayPalHttpClient from php sdk force access token refresh on each http request.
 * We register AuthorizationInjector class to inject access token in http request header.
 * AuthorizationInjector clas refresh access token only if expired.
 *
 * @since 2.32.0 Remove unnecessary properties.
 * @since 2.25.0
 */
class PayPalHttpClient extends \PayPalCheckoutSdk\Core\PayPalHttpClient
{
    /**
     * Class constructor.
     *
     * @since 2.25.0
     */
    public function __construct(PayPalEnvironment $environment)
    {
        parent::__construct($environment);

        // Remove existing AuthorizationInjector.
        foreach ($this->injectors as $index => $injector) {
            if ($injector instanceof \PayPalCheckoutSdk\Core\AuthorizationInjector) {
                unset($this->injectors[$index]);
            }
        }

        // Add custom AuthorizationInjector.
        $this->authInjector = $this->getAuthorizationInjector($environment);
        $this->addInjector($this->authInjector);
    }

    /**
     * Returns AuthorizationInjector.
     *
     * @since 2.25.0
     */
    private function getAuthorizationInjector($environment): AuthorizationInjector
    {
        $merchant = give(MerchantDetail::class);
        $authorizationInjector = new AuthorizationInjector();

        // Set access token if exists.
        if ($merchant->accessToken) {
            $authorizationInjector->accessToken = AccessToken::fromArray($merchant->toArray()['token']);
        }

        return $authorizationInjector;
    }
}

```
