<?php
namespace WooCommerce\PayPalCommerce\Axo\Endpoint;
use WooCommerce\PayPalCommerce\Vendor\Psr\Log\LoggerInterface;
use WooCommerce\PayPalCommerce\ApiClient\Authentication\SdkClientToken;
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
use WooCommerce\PayPalCommerce\Button\Endpoint\EndpointInterface;
use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
use WooCommerce\PayPalCommerce\Button\Exception\NonceValidationException;
use WooCommerce\PayPalCommerce\Button\Helper\Context;
/**
* Handles the request for the PayPal Axo script attributes.
*/
class AxoScriptAttributes implements EndpointInterface
{
const ENDPOINT = 'ppc-axo-script-attributes';
protected Context $context;
private RequestData $request_data;
private LoggerInterface $logger;
private SdkClientToken $sdk_client_token;
private bool $axo_eligible;
public function __construct(RequestData $request_data, LoggerInterface $logger, SdkClientToken $sdk_client_token, bool $axo_eligible, Context $context)
{
$this->request_data = $request_data;
$this->logger = $logger;
$this->sdk_client_token = $sdk_client_token;
$this->axo_eligible = $axo_eligible;
$this->context = $context;
}
public static function nonce(): string
{
return self::ENDPOINT;
}
public function handle_request(): void
{
try {
$this->request_data->read_request($this->nonce());
} catch (NonceValidationException $error) {
wp_send_json_error(array('message' => $error->getMessage()), 400);
}
if (!$this->axo_eligible || is_user_logged_in() || $this->context->is_paypal_continuation()) {
wp_send_json_error('Failed to load axo script attributes.');
}
try {
$token = $this->sdk_client_token->sdk_client_token();
} catch (PayPalApiException $exception) {
$this->logger->error($exception->getMessage());
wp_send_json_error($exception->getMessage());
}
wp_send_json_success(array('sdk_client_token' => $token));
}
}