| Current Path : /home/rtorresani/www/vendor/paypal/module-braintree-core/Gateway/Response/ |
| Current File : //home/rtorresani/www/vendor/paypal/module-braintree-core/Gateway/Response/Handler.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace PayPal\Braintree\Gateway\Response;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\Serialize\Serializer\Json;
use Magento\Payment\Model\InfoInterface;
use Magento\Sales\Api\Data\OrderPaymentExtensionInterface;
use Magento\Sales\Api\Data\OrderPaymentExtensionInterfaceFactory;
use Magento\Vault\Api\Data\PaymentTokenInterfaceFactory;
use PayPal\Braintree\Gateway\Config\Config;
use PayPal\Braintree\Gateway\Helper\SubjectReader;
use RuntimeException;
class Handler
{
/**
* @var PaymentTokenInterfaceFactory
*/
public $paymentTokenFactory;
/**
* @var OrderPaymentExtensionInterfaceFactory
*/
public $paymentExtensionFactory;
/**
* @var SubjectReader
*/
public $subjectReader;
/**
* @var Config
*/
public $config;
/**
* @var Json
*/
public $serializer;
/**
* VaultDetailsHandler constructor.
*
* @param PaymentTokenInterfaceFactory $paymentTokenFactory
* @param OrderPaymentExtensionInterfaceFactory $paymentExtensionFactory
* @param Config $config
* @param SubjectReader $subjectReader
* @param Json|null $serializer
* @throws RuntimeException
*/
public function __construct(
PaymentTokenInterfaceFactory $paymentTokenFactory,
OrderPaymentExtensionInterfaceFactory $paymentExtensionFactory,
Config $config,
SubjectReader $subjectReader,
Json $serializer = null
) {
$this->paymentTokenFactory = $paymentTokenFactory;
$this->paymentExtensionFactory = $paymentExtensionFactory;
$this->config = $config;
$this->subjectReader = $subjectReader;
$this->serializer = $serializer ?: ObjectManager::getInstance()
->get(Json::class);
}
/**
* Convert payment token details to JSON
*
* @param array $details
* @return string
*/
public function convertDetailsToJSON($details): string
{
$json = $this->serializer->serialize($details);
return $json ?: '{}';
}
/**
* Get payment extension attributes
*
* @param InfoInterface $payment
* @return OrderPaymentExtensionInterface
*/
public function getExtensionAttributes(InfoInterface $payment): OrderPaymentExtensionInterface
{
$extensionAttributes = $payment->getExtensionAttributes();
if (null === $extensionAttributes) {
$extensionAttributes = $this->paymentExtensionFactory->create();
$payment->setExtensionAttributes($extensionAttributes);
}
return $extensionAttributes;
}
}