From 57298b3fdd91ae67b99edfcc484bdfe033cfb590 Mon Sep 17 00:00:00 2001 From: peterojo Date: Thu, 7 Jul 2022 14:27:00 +0200 Subject: [PATCH 1/3] [PW-6858] add config for selecting payment methods that should be tokenized --- Api/Data/AdyenPaymentMethodInterface.php | 42 ----------- .../AdyenPaymentMethodRepositoryInterface.php | 25 ------- Helper/Config.php | 5 ++ Helper/Vault.php | 14 ++-- .../Config/Source/TokenizedPaymentMethods.php | 34 +++++++++ Model/PaymentMethod/AdyenPaymentMethod.php | 51 ------------- .../AdyenPaymentMethodRepository.php | 74 ------------------- Model/ResourceModel/AdyenPaymentMethod.php | 24 ------ .../AdyenPaymentMethod/Collection.php | 29 -------- etc/adminhtml/system/adyen_hpp.xml | 12 ++- etc/di.xml | 2 - 11 files changed, 56 insertions(+), 256 deletions(-) delete mode 100644 Api/Data/AdyenPaymentMethodInterface.php delete mode 100644 Api/Data/AdyenPaymentMethodRepositoryInterface.php create mode 100644 Model/Config/Source/TokenizedPaymentMethods.php delete mode 100644 Model/PaymentMethod/AdyenPaymentMethod.php delete mode 100644 Model/PaymentMethod/AdyenPaymentMethodRepository.php delete mode 100644 Model/ResourceModel/AdyenPaymentMethod.php delete mode 100644 Model/ResourceModel/AdyenPaymentMethod/Collection.php diff --git a/Api/Data/AdyenPaymentMethodInterface.php b/Api/Data/AdyenPaymentMethodInterface.php deleted file mode 100644 index 7fc8aecc5..000000000 --- a/Api/Data/AdyenPaymentMethodInterface.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ - -namespace Adyen\Payment\Api\Data; - - -interface AdyenPaymentMethodInterface -{ - const ENTITY_ID = 'entity_id'; - - const PAYMENT_METHOD = 'payment_method'; - - const ENABLE_RECURRING = 'enable_recurring'; - - const ACTIVE = 'active'; - - - public function getEntityId(); - - public function setEntityId($entityId); - - public function getPaymentMethod(); - - public function setPaymentMethod($paymentMethod); - - public function getEnableRecurring(); - - public function setEnableRecurring($enableRecurring); - - public function getActive(); - - public function setActive($active); -} diff --git a/Api/Data/AdyenPaymentMethodRepositoryInterface.php b/Api/Data/AdyenPaymentMethodRepositoryInterface.php deleted file mode 100644 index 5999417bd..000000000 --- a/Api/Data/AdyenPaymentMethodRepositoryInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - */ - -namespace Adyen\Payment\Api\Data; - -use Adyen\Payment\Model\PaymentMethod\AdyenPaymentMethod; -use Magento\Framework\Exception\NoSuchEntityException; - -interface AdyenPaymentMethodRepositoryInterface -{ - /** - * @param string $paymentMethod - * @return AdyenPaymentMethod - * @throws NoSuchEntityException - */ - public function getByPaymentMethodName(string $paymentMethod): AdyenPaymentMethod; -} diff --git a/Helper/Config.php b/Helper/Config.php index c0002aa68..6a1aa5c9f 100644 --- a/Helper/Config.php +++ b/Helper/Config.php @@ -389,6 +389,11 @@ public function getCardRecurringType($storeId): ?string return $this->getConfigData('card_type', self::XML_ADYEN_ONECLICK, $storeId); } + public function getTokenizedPaymentMethods($storeId) + { + return $this->getConfigData('tokenized_payment_methods', self::XML_ADYEN_HPP, $storeId); + } + /** * Retrieve information from payment configuration * diff --git a/Helper/Vault.php b/Helper/Vault.php index da84b3bc8..dfc812e77 100644 --- a/Helper/Vault.php +++ b/Helper/Vault.php @@ -12,7 +12,6 @@ namespace Adyen\Payment\Helper; -use Adyen\Payment\Api\Data\AdyenPaymentMethodRepositoryInterface; use Adyen\Payment\Exception\InvalidAdditionalDataException; use Adyen\Payment\Exception\PaymentMethodException; use Adyen\Payment\Helper\PaymentMethods\PaymentMethodFactory; @@ -82,9 +81,6 @@ class Vault /** @var PaymentMethods */ private $paymentMethodsHelper; - /** @var AdyenPaymentMethodRepositoryInterface */ - private $adyenPaymentMethodRepo; - /** @var PaymentMethodFactory */ private $paymentMethodFactory; @@ -96,7 +92,6 @@ public function __construct( PaymentTokenRepositoryInterface $paymentTokenRepository, Config $config, PaymentMethods $paymentMethodsHelper, - AdyenPaymentMethodRepositoryInterface $adyenPaymentMethodRepo, PaymentMethodFactory $paymentMethodFactory ) { $this->adyenHelper = $adyenHelper; @@ -106,7 +101,6 @@ public function __construct( $this->paymentTokenRepository = $paymentTokenRepository; $this->config = $config; $this->paymentMethodsHelper = $paymentMethodsHelper; - $this->adyenPaymentMethodRepo = $adyenPaymentMethodRepo; $this->paymentMethodFactory = $paymentMethodFactory; } @@ -255,9 +249,13 @@ public function allowRecurringOnPaymentMethod(PaymentMethodInterface $adyenPayme $methodSupportsRecurring = $adyenPaymentMethod->supportsSubscription(); } - $paymentMethodModel = $this->adyenPaymentMethodRepo->getByPaymentMethodName($adyenPaymentMethod->getTxVariant()); + $tokenizedPaymentMethods = array_map( + 'trim', + explode(',', $this->config->getTokenizedPaymentMethods($storeId)) + ); + $shouldTokenize = in_array($adyenPaymentMethod->getTxVariant(), $tokenizedPaymentMethods); - return $methodSupportsRecurring && $paymentMethodModel->getEnableRecurring(); + return $methodSupportsRecurring && $shouldTokenize; } /** diff --git a/Model/Config/Source/TokenizedPaymentMethods.php b/Model/Config/Source/TokenizedPaymentMethods.php new file mode 100644 index 000000000..c23d5df7f --- /dev/null +++ b/Model/Config/Source/TokenizedPaymentMethods.php @@ -0,0 +1,34 @@ + PaymentMethods\ApplePayPaymentMethod::TX_VARIANT, + 'label' => PaymentMethods\ApplePayPaymentMethod::NAME + ], + [ + 'value' => PaymentMethods\GooglePayPaymentMethod::TX_VARIANT, + 'label' => PaymentMethods\GooglePayPaymentMethod::NAME + ], + [ + 'value' => PaymentMethods\PayPalPaymentMethod::TX_VARIANT, + 'label' => PaymentMethods\PayPalPaymentMethod::NAME + ], + [ + 'value' => PaymentMethods\SepaPaymentMethod::TX_VARIANT, + 'label' => PaymentMethods\SepaPaymentMethod::NAME + ], + ]; + } +} \ No newline at end of file diff --git a/Model/PaymentMethod/AdyenPaymentMethod.php b/Model/PaymentMethod/AdyenPaymentMethod.php deleted file mode 100644 index 1fd2ca76d..000000000 --- a/Model/PaymentMethod/AdyenPaymentMethod.php +++ /dev/null @@ -1,51 +0,0 @@ - - */ - -namespace Adyen\Payment\Model\PaymentMethod; - - -use Adyen\Payment\Api\Data\AdyenPaymentMethodInterface; -use Magento\Framework\Model\AbstractModel; - -class AdyenPaymentMethod extends AbstractModel implements AdyenPaymentMethodInterface -{ - - public function getPaymentMethod(): string - { - return $this->getData(self::PAYMENT_METHOD); - } - - public function setPaymentMethod($paymentMethod) - { - $this->setData(self::PAYMENT_METHOD, $paymentMethod); - } - - public function getEnableRecurring(): bool - { - return $this->getData(self::ENABLE_RECURRING); - } - - public function setEnableRecurring($enableRecurring) - { - $this->setData(self::ENABLE_RECURRING, $enableRecurring); - } - - public function getActive(): bool - { - return $this->getData(self::ACTIVE); - } - - public function setActive($active) - { - $this->setData(self::ACTIVE, $active); - } -} \ No newline at end of file diff --git a/Model/PaymentMethod/AdyenPaymentMethodRepository.php b/Model/PaymentMethod/AdyenPaymentMethodRepository.php deleted file mode 100644 index f599c481e..000000000 --- a/Model/PaymentMethod/AdyenPaymentMethodRepository.php +++ /dev/null @@ -1,74 +0,0 @@ - - */ - -namespace Adyen\Payment\Model\PaymentMethod; - -use Adyen\Payment\Api\Data\AdyenPaymentMethodRepositoryInterface; -use Adyen\Payment\Model\PaymentMethod\AdyenPaymentMethod as AdyenPaymentMethodModel; -use Adyen\Payment\Model\ResourceModel\AdyenPaymentMethod; -use Adyen\Payment\Model\ResourceModel\AdyenPaymentMethod\CollectionFactory; -use Magento\Framework\Exception\NoSuchEntityException; - - -class AdyenPaymentMethodRepository implements AdyenPaymentMethodRepositoryInterface -{ - /** @var AdyenPaymentMethodFactory */ - private $adyenPaymentMethodFactory; - - /** @var AdyenPaymentMethod */ - private $adyenPaymentMethodResource; - - /** @var CollectionFactory */ - private $adyenPaymentMethodCollectionFactory; - - public function __construct( - AdyenPaymentMethodFactory $adyenPaymentMethodFactory, - AdyenPaymentMethod $adyenPaymentMethodResource, - CollectionFactory $adyenPaymentMethodCollectionFactory - ) { - $this->adyenPaymentMethodFactory = $adyenPaymentMethodFactory; - $this->adyenPaymentMethodResource = $adyenPaymentMethodResource; - $this->adyenPaymentMethodCollectionFactory = $adyenPaymentMethodCollectionFactory; - } - - /** - * @param int $id - * @return AdyenPaymentMethodModel - * @throws NoSuchEntityException - */ - public function getById(int $id): AdyenPaymentMethodModel - { - /** @var AdyenPaymentMethodModel $adyenPaymentMethod */ - $adyenPaymentMethod = $this->adyenPaymentMethodFactory->create(); - $this->adyenPaymentMethodResource->load($adyenPaymentMethod, $id); - if (!$adyenPaymentMethod->getEntityId()) { - throw new NoSuchEntityException(__('Unable to find AdyenPaymentMethod with ID "%1"', $id)); - } - - return $adyenPaymentMethod; - } - - /** - * @throws NoSuchEntityException - */ - public function getByPaymentMethodName(string $paymentMethod): AdyenPaymentMethodModel - { - /** @var AdyenPaymentMethodModel $adyenPaymentMethod */ - $adyenPaymentMethod = $this->adyenPaymentMethodFactory->create(); - $this->adyenPaymentMethodResource->load($adyenPaymentMethod, $paymentMethod, AdyenPaymentMethodModel::PAYMENT_METHOD); - if (!$adyenPaymentMethod->getEntityId()) { - throw new NoSuchEntityException(__('Unable to find AdyenPaymentMethod with payment method "%1"', $paymentMethod)); - } - - return $adyenPaymentMethod; - } -} diff --git a/Model/ResourceModel/AdyenPaymentMethod.php b/Model/ResourceModel/AdyenPaymentMethod.php deleted file mode 100644 index 57ecd8278..000000000 --- a/Model/ResourceModel/AdyenPaymentMethod.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ - -namespace Adyen\Payment\Model\ResourceModel; - -use Magento\Framework\Model\ResourceModel\Db\AbstractDb; - -class AdyenPaymentMethod extends AbstractDb -{ - - protected function _construct() - { - $this->_init('adyen_payment_method', 'entity_id'); - } -} \ No newline at end of file diff --git a/Model/ResourceModel/AdyenPaymentMethod/Collection.php b/Model/ResourceModel/AdyenPaymentMethod/Collection.php deleted file mode 100644 index df70d3125..000000000 --- a/Model/ResourceModel/AdyenPaymentMethod/Collection.php +++ /dev/null @@ -1,29 +0,0 @@ - - */ - -namespace Adyen\Payment\Model\AdyenPaymentMethod; - -use Adyen\Payment\Model\PaymentMethod\AdyenPaymentMethod; -use Adyen\Payment\Model\ResourceModel\AdyenPaymentMethod as ResourceModel; -use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection; - -class Collection extends AbstractCollection -{ - /** - * Define resource model - * - * @return void - */ - protected function _construct() - { - $this->_init(AdyenPaymentMethod::class, ResourceModel::class); - } -} \ No newline at end of file diff --git a/etc/adminhtml/system/adyen_hpp.xml b/etc/adminhtml/system/adyen_hpp.xml index 04be66255..974ad2251 100755 --- a/etc/adminhtml/system/adyen_hpp.xml +++ b/etc/adminhtml/system/adyen_hpp.xml @@ -39,7 +39,17 @@ 1 - + + + payment/adyen_hpp/tokenized_payment_methods + Adyen\Payment\Model\Config\Source\TokenizedPaymentMethods + Selected payment methods will be tokenized. Please make sure to enable these payment methods in your Adyen Customer Area. + + 1 + 1 + + + Adyen\Payment\Model\Config\Source\Recurring\RecurringType payment/adyen_hpp/token_type diff --git a/etc/di.xml b/etc/di.xml index 853ffd399..1131d35a4 100755 --- a/etc/di.xml +++ b/etc/di.xml @@ -1022,8 +1022,6 @@ type="Adyen\Payment\Model\Api\Internal\InternalAdyenDonations"/> - From a75f66156602c51d86488468a7e6df943f1c558b Mon Sep 17 00:00:00 2001 From: peterojo Date: Thu, 7 Jul 2022 14:50:32 +0200 Subject: [PATCH 2/3] [PW-6858] remove adyenpaymentmethods patch script --- Setup/Patch/Data/PaymentMethods.php | 72 ----------------------------- 1 file changed, 72 deletions(-) delete mode 100644 Setup/Patch/Data/PaymentMethods.php diff --git a/Setup/Patch/Data/PaymentMethods.php b/Setup/Patch/Data/PaymentMethods.php deleted file mode 100644 index 06adb1f61..000000000 --- a/Setup/Patch/Data/PaymentMethods.php +++ /dev/null @@ -1,72 +0,0 @@ - - */ -declare(strict_types=1); - -namespace Adyen\Payment\Setup\Patch\Data; - -use Adyen\Payment\Helper\PaymentMethods\ApplePayPaymentMethod; -use Adyen\Payment\Helper\PaymentMethods\GooglePayPaymentMethod; -use Adyen\Payment\Helper\PaymentMethods\PayPalPaymentMethod; -use Adyen\Payment\Helper\PaymentMethods\SepaPaymentMethod; -use Magento\Framework\Setup\ModuleDataSetupInterface; -use Magento\Framework\Setup\Patch\DataPatchInterface; -use Magento\Framework\Setup\Patch\PatchVersionInterface; - -class PaymentMethods implements DataPatchInterface, PatchVersionInterface -{ - /** - * @var ModuleDataSetupInterface $moduleDataSetup - */ - private $moduleDataSetup; - - public function __construct( - ModuleDataSetupInterface $moduleDataSetup - ) - { - $this->moduleDataSetup = $moduleDataSetup; - } - - public static function getDependencies() - { - return []; - } - - public function getAliases() - { - return []; - } - - public function apply() - { - $this->moduleDataSetup->getConnection()->startSetup(); - $this->addPaymentMethod(PayPalPaymentMethod::TX_VARIANT, true, true); - $this->addPaymentMethod(SepaPaymentMethod::TX_VARIANT, true, true); - $this->addPaymentMethod(GooglePayPaymentMethod::TX_VARIANT, true, true); - $this->addPaymentMethod(ApplePayPaymentMethod::TX_VARIANT, true, true); - $this->moduleDataSetup->getConnection()->endSetup(); - } - - private function addPaymentMethod(string $paymentMethod, bool $enableRecurring, bool $active) - { - $adyenPaymentMethodTable = $this->moduleDataSetup->getTable('adyen_payment_method'); - $connection = $this->moduleDataSetup->getConnection(); - - $connection->insert($adyenPaymentMethodTable, [ - 'payment_method' => $paymentMethod, - 'enable_recurring' => $enableRecurring, - 'active' => $active - ]); - } - - public static function getVersion() - { - return '8.4.0'; - } -} From 7300bff757cd3c92d9ad36c2c659f4a02fbfdd2e Mon Sep 17 00:00:00 2001 From: peterojo Date: Thu, 7 Jul 2022 15:03:57 +0200 Subject: [PATCH 3/3] [PW-6858] update property declaration syntax to support php 7.3 --- Helper/PaymentMethods/PaymentMethodFactory.php | 2 +- Model/InstantPurchase/PaymentMethods/TokenFormatter.php | 2 +- Model/Ui/AdyenUiComponentProvider.php | 4 ++-- Model/Ui/PaymentMethodUiComponentProvider.php | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Helper/PaymentMethods/PaymentMethodFactory.php b/Helper/PaymentMethods/PaymentMethodFactory.php index e095cabe1..eed6869aa 100644 --- a/Helper/PaymentMethods/PaymentMethodFactory.php +++ b/Helper/PaymentMethods/PaymentMethodFactory.php @@ -17,7 +17,7 @@ class PaymentMethodFactory { - private static AdyenLogger $adyenLogger; + private static $adyenLogger; public function __construct(AdyenLogger $adyenLogger) { diff --git a/Model/InstantPurchase/PaymentMethods/TokenFormatter.php b/Model/InstantPurchase/PaymentMethods/TokenFormatter.php index f3bf75551..de6dc58f3 100644 --- a/Model/InstantPurchase/PaymentMethods/TokenFormatter.php +++ b/Model/InstantPurchase/PaymentMethods/TokenFormatter.php @@ -24,7 +24,7 @@ class TokenFormatter extends AbstractAdyenTokenFormatter implements PaymentTokenFormatterInterface { /** @var PaymentMethodFactory */ - private PaymentMethodFactory $paymentMethodFactory; + private $paymentMethodFactory; public function __construct(PaymentMethodFactory $paymentMethodFactory) { diff --git a/Model/Ui/AdyenUiComponentProvider.php b/Model/Ui/AdyenUiComponentProvider.php index d2512bd22..cd7d9af34 100644 --- a/Model/Ui/AdyenUiComponentProvider.php +++ b/Model/Ui/AdyenUiComponentProvider.php @@ -20,8 +20,8 @@ class AdyenUiComponentProvider { - protected TokenUiComponentInterfaceFactory $componentFactory; - protected Data $dataHelper; + protected $componentFactory; + protected $dataHelper; /** * @param TokenUiComponentInterfaceFactory $componentFactory diff --git a/Model/Ui/PaymentMethodUiComponentProvider.php b/Model/Ui/PaymentMethodUiComponentProvider.php index 2261f4015..0d4fdab10 100644 --- a/Model/Ui/PaymentMethodUiComponentProvider.php +++ b/Model/Ui/PaymentMethodUiComponentProvider.php @@ -25,8 +25,8 @@ class PaymentMethodUiComponentProvider extends AdyenUiComponentProvider implements TokenUiComponentProviderInterface { - private Vault $vaultHelper; - private PaymentMethodFactory $paymentMethodFactory; + private $vaultHelper; + private $paymentMethodFactory; /** * @param TokenUiComponentInterfaceFactory $componentFactory