PluginProbe
MultiSafepay plugin for WooCommerce / trunk
MultiSafepay plugin for WooCommerce vtrunk
6.11.1 6.12.0 6.13.0 6.2.0 6.2.1 6.3.0 6.3.1 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.6.0 6.6.1 6.6.2 6.7.0 6.7.1 6.7.2 6.7.3 6.8.0 6.8.1 6.8.2 6.8.3 6.9.0 All 84 releases
multisafepay / src / Services / ApiTokenService.php

ApiTokenService.php in MultiSafepay plugin for WooCommerce trunk, at src/Services/ApiTokenService.php

69 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace MultiSafepay\WooCommerce\Services;
4
5 use MultiSafepay\Api\ApiTokenManager;
6 use MultiSafepay\Exception\ApiException;
7 use MultiSafepay\WooCommerce\Utils\Logger;
8 use Psr\Http\Client\ClientExceptionInterface;
9
10 /**
11 * Class ApiTokenService
12 *
13 * @package MultiSafepay\WooCommerce\Services
14 */
15 class ApiTokenService {
16
17 /**
18 * Time in which the stored value in cache with an ApiToken will expired.
19 */
20 public const EXPIRATION_TIME_FOR_API_TOKEN_REQUEST = 240;
21
22 /**
23 * @var ApiTokenManager
24 */
25 public $api_token_manager;
26
27 /**
28 * @var Logger
29 */
30 private $logger;
31
32 /**
33 * ApiTokenService constructor.
34 *
35 * @param Logger|null $logger
36 */
37 public function __construct( ?Logger $logger = null ) {
38 $this->logger = $logger ?? new Logger();
39 $this->api_token_manager = ( new SdkService() )->get_api_token_manager();
40 }
41
42 /**
43 * Returns a MultiSafepay ApiToken
44 *
45 * @return string
46 */
47 public function get_api_token(): string {
48 if ( null === $this->api_token_manager ) {
49 return '';
50 }
51
52 $cached_api_token = get_transient( 'multisafepay_api_token' );
53 if ( false !== $cached_api_token ) {
54 return $cached_api_token;
55 }
56
57 try {
58 $api_token = $this->api_token_manager->get()->getApiToken();
59 } catch ( ApiException |ClientExceptionInterface $exception ) {
60 $this->logger->log_error( $exception->getMessage() );
61 return '';
62 }
63
64 set_transient( 'multisafepay_api_token', $api_token, self::EXPIRATION_TIME_FOR_API_TOKEN_REQUEST );
65
66 return $api_token;
67 }
68 }
69