diff --git a/.gitattributes b/.gitattributes index 3f0024158c..8fff9657e9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -21,10 +21,11 @@ *.exe binary # Remove files for archives generated using `git archive` -codeception.yml export-ignore dependency.json export-ignore .coveralls.yml export-ignore .travis.yml export-ignore .editorconfig export-ignore .gitattributes export-ignore .gitignore export-ignore +architecture-baseline.json export-ignore +psalm-report.json export-ignore diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa5fac1c6f..86e63dba01 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,8 @@ jobs: strategy: fail-fast: false matrix: - php: [ '7.3', ] + php: [ '8.0', '8.1'] + ruby: 2.6 product: [ 'suite' ] composer_preference: ['', '--prefer-lowest'] services: @@ -79,7 +80,8 @@ jobs: strategy: fail-fast: false matrix: - php: [ '7.3', ] + php: [ '8.0', '8.1'] + ruby: 2.6 product: [ 'suite' ] composer_preference: [ '', '--prefer-lowest' ] services: diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 5ac017a07b..728ad6b98e 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -1,6 +1,6 @@ build: environment: - php: '7.3' + php: '8.0' tests: override: diff --git a/README.md b/README.md index b71b114833..339bdd316d 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Latest Stable Version](https://poser.pugx.org/spryker-eco/payone/v/stable.svg)](https://packagist.org/packages/spryker-eco/payone) [![License](https://img.shields.io/github/license/spryker-eco/payone.svg?b=master)](https://github.com/spryker-eco/payone) [![ScrutCI](https://scrutinizer-ci.com/g/spryker-eco/payone/badges/build.png?b=master)](https://scrutinizer-ci.com/g/spryker-eco/payone/build-status/master) -[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.3-8892BF.svg)](https://php.net/) +[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%208.0-8892BF.svg)](https://php.net/) Enables Payone Payment integration. diff --git a/composer.json b/composer.json index a10747c055..6655c4ce39 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "description": "Payone module", "license": "MIT", "require": { - "php": ">=7.3", + "php": ">=8.0", "spryker/calculation": "^4.0.0", "spryker/cart": "^5.0.0 || ^7.0.0", "spryker/checkout-extension": "^1.3.0", @@ -16,13 +16,14 @@ "spryker/kernel": "^3.33.0", "spryker/oms": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^10.0.0 || ^11.0.0", "spryker/propel-orm": "^1.6.0", - "spryker/quote": "^2.14.0", + "spryker/quote": "^2.18.0", "spryker/refund": "^4.0.0 || ^5.0.0", "spryker/sales": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^10.0.0 || ^11.0.0", "spryker/shipment": "^6.0.0 || ^8.0.0", "spryker/step-engine": "^3.0.0", - "spryker/store": "^1.1.0", + "spryker/store": "^1.19.0", "spryker/symfony": "^3.1.1", + "spryker/transfer": "^3.25.0", "spryker/util-encoding": "^2.0.0", "spryker/zed-request": "^3.2.0" }, @@ -32,7 +33,7 @@ "spryker/checkout": "*", "spryker/code-sniffer": "*", "spryker/container": "*", - "spryker/country": "^3.2.0", + "spryker/country": "^3.2.0 || ^4.0.0", "spryker/payment": "*", "spryker/propel": "*", "spryker/router": "*", diff --git a/dependency.json b/dependency.json new file mode 100644 index 0000000000..22c114fa50 --- /dev/null +++ b/dependency.json @@ -0,0 +1,5 @@ +{ + "include": { + "spryker/transfer": "Provides transfer objects definition with `::get*OrFail()` functionality." + } +} diff --git a/src/SprykerEco/Shared/Payone/PayoneConstants.php b/src/SprykerEco/Shared/Payone/PayoneConstants.php index 7ae39eb69d..6586fa8050 100644 --- a/src/SprykerEco/Shared/Payone/PayoneConstants.php +++ b/src/SprykerEco/Shared/Payone/PayoneConstants.php @@ -56,6 +56,8 @@ interface PayoneConstants /** * Path to bundle glossary file. + * + * @deprecated No longer used. Will be removed without replacement. */ public const GLOSSARY_FILE_PATH = 'Business/Internal/glossary.yml'; diff --git a/src/SprykerEco/Shared/Payone/Transfer/payone.transfer.xml b/src/SprykerEco/Shared/Payone/Transfer/payone.transfer.xml index 97e8d16244..149abc14be 100644 --- a/src/SprykerEco/Shared/Payone/Transfer/payone.transfer.xml +++ b/src/SprykerEco/Shared/Payone/Transfer/payone.transfer.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="spryker:transfer-01 http://static.spryker.com/transfer-01.xsd"> - + diff --git a/src/SprykerEco/Yves/Payone/Form/DataProvider/DirectDebitDataProvider.php b/src/SprykerEco/Yves/Payone/Form/DataProvider/DirectDebitDataProvider.php index 7066cb0e09..352cc83b1b 100644 --- a/src/SprykerEco/Yves/Payone/Form/DataProvider/DirectDebitDataProvider.php +++ b/src/SprykerEco/Yves/Payone/Form/DataProvider/DirectDebitDataProvider.php @@ -9,13 +9,26 @@ use Generated\Shared\Transfer\PaymentTransfer; use Generated\Shared\Transfer\PayonePaymentTransfer; -use Spryker\Shared\Kernel\Store; use Spryker\Shared\Kernel\Transfer\AbstractTransfer; use Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface; +use SprykerEco\Yves\Payone\Dependency\Client\PayoneToStoreClientInterface; use SprykerEco\Yves\Payone\Form\DirectDebitSubForm; class DirectDebitDataProvider implements StepEngineFormDataProviderInterface { + /** + * @var \SprykerEco\Yves\Payone\Dependency\Client\PayoneToStoreClientInterface + */ + private $storeClient; + + /** + * @param \SprykerEco\Yves\Payone\Dependency\Client\PayoneToStoreClientInterface $storeClient + */ + public function __construct(PayoneToStoreClientInterface $storeClient) + { + $this->storeClient = $storeClient; + } + /** * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @@ -47,13 +60,13 @@ public function getOptions(AbstractTransfer $quoteTransfer) } /** - * @return array + * @return array */ - protected function getBankCountries() + protected function getBankCountries(): array { - return [ - Store::getInstance()->getCurrentCountry() => Store::getInstance()->getCurrentCountry(), - ]; + $countries = $this->storeClient->getCurrentStore()->getCountries(); + + return array_combine($countries, $countries); } /** diff --git a/src/SprykerEco/Yves/Payone/Form/DataProvider/InstantOnlineTransferDataProvider.php b/src/SprykerEco/Yves/Payone/Form/DataProvider/InstantOnlineTransferDataProvider.php index 294856f904..8f9a0527d4 100644 --- a/src/SprykerEco/Yves/Payone/Form/DataProvider/InstantOnlineTransferDataProvider.php +++ b/src/SprykerEco/Yves/Payone/Form/DataProvider/InstantOnlineTransferDataProvider.php @@ -9,13 +9,26 @@ use Generated\Shared\Transfer\PaymentTransfer; use Generated\Shared\Transfer\PayonePaymentTransfer; -use Spryker\Shared\Kernel\Store; use Spryker\Shared\Kernel\Transfer\AbstractTransfer; use Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface; +use SprykerEco\Yves\Payone\Dependency\Client\PayoneToStoreClientInterface; use SprykerEco\Yves\Payone\Form\InstantOnlineTransferSubForm; class InstantOnlineTransferDataProvider implements StepEngineFormDataProviderInterface { + /** + * @var \SprykerEco\Yves\Payone\Dependency\Client\PayoneToStoreClientInterface + */ + protected $storeClient; + + /** + * @param \SprykerEco\Yves\Payone\Dependency\Client\PayoneToStoreClientInterface $storeClient + */ + public function __construct(PayoneToStoreClientInterface $storeClient) + { + $this->storeClient = $storeClient; + } + /** * @param \Spryker\Shared\Kernel\Transfer\AbstractTransfer|\Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @@ -46,12 +59,12 @@ public function getOptions(AbstractTransfer $quoteTransfer) } /** - * @return array + * @return array */ - protected function getBankCountries() + protected function getBankCountries(): array { - return [ - Store::getInstance()->getCurrentCountry() => Store::getInstance()->getCurrentCountry(), - ]; + $countries = $this->storeClient->getCurrentStore()->getCountries(); + + return array_combine($countries, $countries); } } diff --git a/src/SprykerEco/Yves/Payone/Form/DirectDebitSubForm.php b/src/SprykerEco/Yves/Payone/Form/DirectDebitSubForm.php index bed22599f5..8d671e15a8 100644 --- a/src/SprykerEco/Yves/Payone/Form/DirectDebitSubForm.php +++ b/src/SprykerEco/Yves/Payone/Form/DirectDebitSubForm.php @@ -9,7 +9,6 @@ use Generated\Shared\Transfer\PaymentTransfer; use Generated\Shared\Transfer\PayonePaymentDirectDebitTransfer; -use Spryker\Shared\Kernel\Store; use Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface; use SprykerEco\Shared\Payone\PayoneConstants; use SprykerEco\Yves\Payone\Form\Constraint\ManageMandate; @@ -20,6 +19,10 @@ use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\NotBlank; + +/** + * @method \SprykerEco\Yves\Payone\PayoneFactory getFactory() + */ class DirectDebitSubForm extends AbstractPayoneSubForm { public const PAYMENT_METHOD = 'direct_debit'; @@ -31,6 +34,7 @@ class DirectDebitSubForm extends AbstractPayoneSubForm public const FIELD_BANK_CODE = 'bankcode'; public const OPTION_BANK_COUNTRIES = 'direct debit bank countries'; public const OPTION_BANK_ACCOUNT_MODE = 'direct debit bank account mode'; + protected const COUNTRY_DE = 'DE'; /** * @return string @@ -89,7 +93,9 @@ public function buildForm(FormBuilderInterface $builder, array $options) $this->addIBAN($builder) ->addBIC($builder); - if (Store::getInstance()->getCurrentCountry() === 'DE') { + $currentCountry = $this->getFactory()->createStoreReader()->getDefaultStoreCountry(); + + if ($currentCountry === static::COUNTRY_DE) { $this->addBankAccount($builder) ->addBankCode($builder) ->addBankCountry($builder, $options) diff --git a/src/SprykerEco/Yves/Payone/Handler/ExpressCheckout/QuoteHydrator.php b/src/SprykerEco/Yves/Payone/Handler/ExpressCheckout/QuoteHydrator.php index 8e828fe22f..34c51fdad9 100644 --- a/src/SprykerEco/Yves/Payone/Handler/ExpressCheckout/QuoteHydrator.php +++ b/src/SprykerEco/Yves/Payone/Handler/ExpressCheckout/QuoteHydrator.php @@ -17,12 +17,12 @@ use Generated\Shared\Transfer\QuoteTransfer; use Generated\Shared\Transfer\ShipmentMethodTransfer; use Generated\Shared\Transfer\ShipmentTransfer; -use Spryker\Shared\Kernel\Store; use SprykerEco\Shared\Payone\PayoneApiConstants; use SprykerEco\Shared\Payone\PayoneConstants; use SprykerEco\Yves\Payone\Dependency\Client\PayoneToCalculationInterface; use SprykerEco\Yves\Payone\Dependency\Client\PayoneToCustomerInterface; use SprykerEco\Yves\Payone\Dependency\Client\PayoneToShipmentInterface; +use SprykerEco\Yves\Payone\Dependency\Client\PayoneToStoreClientInterface; class QuoteHydrator implements QuoteHydratorInterface { @@ -100,7 +100,7 @@ protected function hydrateQuoteWithPayment(QuoteTransfer $quoteTransfer): QuoteT $paymentDetailTransfer ->setAmount($quoteTransfer->getTotals()->getGrandTotal()) ->setType(PayoneApiConstants::E_WALLET_TYPE_PAYPAL) - ->setCurrency(Store::getInstance()->getCurrencyIsoCode()) + ->setCurrency($quoteTransfer->getCurrencyOrFail()->getCodeOrFail()) ->setWorkOrderId( $quoteTransfer->getPayment()->getPayonePaypalExpressCheckout()->getWorkOrderId() ); diff --git a/src/SprykerEco/Yves/Payone/Handler/PayoneHandler.php b/src/SprykerEco/Yves/Payone/Handler/PayoneHandler.php index 9750e27338..73dfbaf7f3 100644 --- a/src/SprykerEco/Yves/Payone/Handler/PayoneHandler.php +++ b/src/SprykerEco/Yves/Payone/Handler/PayoneHandler.php @@ -11,7 +11,6 @@ use Generated\Shared\Transfer\PaymentTransfer; use Generated\Shared\Transfer\PayonePaymentTransfer; use Generated\Shared\Transfer\QuoteTransfer; -use Spryker\Shared\Kernel\Store; use SprykerEco\Shared\Payone\PayoneApiConstants; use Symfony\Component\HttpFoundation\Request; @@ -127,7 +126,7 @@ protected function setPayonePayment(Request $request, QuoteTransfer $quoteTransf $paymentDetailTransfer = new PaymentDetailTransfer(); // get it from quotaTransfer $paymentDetailTransfer->setAmount($quoteTransfer->getTotals()->getGrandTotal()); - $paymentDetailTransfer->setCurrency($this->getCurrency()); + $paymentDetailTransfer->setCurrency($quoteTransfer->getCurrencyOrFail()->getCodeOrFail()); if ($paymentSelection === PaymentTransfer::PAYONE_CREDIT_CARD) { /** @var \Generated\Shared\Transfer\PayonePaymentCreditCardTransfer $payonePaymentTransfer */ $paymentDetailTransfer->setPseudoCardPan($payonePaymentTransfer->getPseudocardpan()); @@ -179,14 +178,6 @@ protected function setPayonePayment(Request $request, QuoteTransfer $quoteTransf $paymentTransfer->setPayone($payonePaymentTransfer); } - /** - * @return string - */ - protected function getCurrency(): string - { - return Store::getInstance()->getCurrencyIsoCode(); - } - /** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param string $paymentSelection diff --git a/src/SprykerEco/Yves/Payone/Model/StoreReader.php b/src/SprykerEco/Yves/Payone/Model/StoreReader.php new file mode 100644 index 0000000000..81b24f3d02 --- /dev/null +++ b/src/SprykerEco/Yves/Payone/Model/StoreReader.php @@ -0,0 +1,34 @@ +storeClient = $storeClient; + } + + /** + * @return string + */ + public function getDefaultStoreCountry(): string + { + return current($this->storeClient->getCurrentStore()->getCountries()); + } +} diff --git a/src/SprykerEco/Yves/Payone/Model/StoreReaderInterface.php b/src/SprykerEco/Yves/Payone/Model/StoreReaderInterface.php new file mode 100644 index 0000000000..699ab62461 --- /dev/null +++ b/src/SprykerEco/Yves/Payone/Model/StoreReaderInterface.php @@ -0,0 +1,16 @@ +getClientStore() + ); } /** @@ -275,7 +284,9 @@ public function createInstantOnlineTransferSubForm(): AbstractPayoneSubForm */ public function createInstantOnlineTransferSubFormDataProvider(): StepEngineFormDataProviderInterface { - return new InstantOnlineTransferDataProvider(); + return new InstantOnlineTransferDataProvider( + $this->getClientStore(), + ); } /** @@ -425,4 +436,16 @@ public function createQuoteHydrator(): QuoteHydratorInterface $this->getCalculationClient() ); } + + /** + * @return \SprykerEco\Yves\Payone\Model\StoreReaderInterface + */ + public function createStoreReader(): StoreReaderInterface + { + if ($this->storeReader === null) { + $this->storeReader = new StoreReader($this->getClientStore()); + } + + return $this->storeReader; + } } diff --git a/src/SprykerEco/Yves/Payone/Plugin/PayoneSubFormsPlugin.php b/src/SprykerEco/Yves/Payone/Plugin/PayoneSubFormsPlugin.php index 4ff0c5dd41..d328f7d144 100644 --- a/src/SprykerEco/Yves/Payone/Plugin/PayoneSubFormsPlugin.php +++ b/src/SprykerEco/Yves/Payone/Plugin/PayoneSubFormsPlugin.php @@ -7,7 +7,6 @@ namespace SprykerEco\Yves\Payone\Plugin; -use Spryker\Shared\Kernel\Store; use Spryker\Yves\Kernel\AbstractPlugin; /** @@ -30,7 +29,9 @@ public function __construct() */ public function getPaymentMethodsSubForms() { - $subFormsCreator = $this->pluginCountryFactory->createSubFormsCreator(Store::getInstance()->getCurrentCountry()); + $subFormsCreator = $this->pluginCountryFactory->createSubFormsCreator( + $this->getFactory()->createStoreReader()->getDefaultStoreCountry(), + ); $paymentMethodsSubForms = $subFormsCreator->createPaymentMethodsSubForms(); diff --git a/src/SprykerEco/Yves/Payone/Resources/__glossary.yml b/src/SprykerEco/Yves/Payone/Resources/__glossary.yml deleted file mode 100644 index c290b904c4..0000000000 --- a/src/SprykerEco/Yves/Payone/Resources/__glossary.yml +++ /dev/null @@ -1,132 +0,0 @@ -Payone_credit_card: - translations: - en_US: 'Payone Credit Card' - de_DE: 'Payone Kreditkarte' -payment.payone.credit-card: - translations: - en_US: 'Payone Credit Card' - de_DE: 'Payone Kreditkarte' -Payone_credit_card.cardtype: - translations: - en_US: 'Card Type' - de_DE: 'Kreditkarten-Typ' -Payone_credit_card.cardpan: - translations: - en_US: 'Card number' - de_DE: 'Kartennummer' -Payone_credit_card.cardholder: - translations: - en_US: 'Card holder' - de_DE: 'Karteninhaber' -Payone_credit_card.cardexpiredate: - translations: - en_US: 'Expiry date' - de_DE: 'Verfallsdatum' -Payone_credit_card.cardcvc2: - translations: - en_US: 'CVC code' - de_DE: 'CVC (Kartenprüfnummer)' -Payone_direct_debit: - translations: - en_US: 'Payone Direct Debit' - de_DE: 'Payone SEPA-Lastschrift' -payment.payone.direct-debit: - translations: - en_US: 'Payone Direct Debit' - de_DE: 'Payone SEPA-Lastschrift' -Payone_direct_debit.IBAN: - translations: - en_US: 'IBAN' - de_DE: 'IBAN' -Payone_direct_debit.BIC: - translations: - en_US: 'BIC' - de_DE: 'BIC' -Payone_prepayment: - translations: - en_US: 'Payone Prepayment' - de_DE: 'Payone Vorkasse' -payment.payone.prepayment: - translations: - en_US: 'Payone Prepayment' - de_DE: 'Payone Vorkasse' -Payone_invoice: - translations: - en_US: 'Payone Invoice' - de_DE: 'Payone Rechnung' -payment.payone.invoice: - translations: - en_US: 'Payone Invoice' - de_DE: 'Payone Rechnung' -Payone_e_wallet: - translations: - en_US: 'Payone E-Wallet' - de_DE: 'Payone E-Wallet' -payment.payone.e_wallet: - translations: - en_US: 'Payone E-Wallet' - de_DE: 'Payone E-Wallet' -'Your mandate as PDF': - translations: - en_US: 'Your mandate as PDF' - de_DE: 'Ihr Mandat als PDF' -'Your Invoice as PDF': - translations: - en_US: 'Your Invoice as PDF' - de_DE: 'Ihre Rechnung als PDF' -payone.order.payment_details: - translations: - en_US: 'Payment Details' - de_DE: 'Zahlungsdetails' -payone.order.clearing_bank_account_holder: - translations: - en_US: 'Account holder' - de_DE: 'Zahlungsempfänger' -payone.order.clearing_bank_account: - translations: - en_US: 'Bank Account' - de_DE: 'Kontonummer' -payone.order.clearing_bank_code: - translations: - en_US: 'Bank Code' - de_DE: 'Bankleitzahl' -payone.order.clearing_bank_iban: - translations: - en_US: 'IBAN' - de_DE: 'IBAN' -payone.order.clearing_bank_bic: - translations: - en_US: 'BIC' - de_DE: 'BIC' -payone.order.clearing_bank_city: - translations: - en_US: 'City' - de_DE: 'Stadt' -payone.order.clearing_bank_name: - translations: - en_US: 'Bank' - de_DE: 'Bank' -Payone_giropay_online_transfer: - translations: - en_US: 'Payone Giropay' - de_DE: 'Payone Giropay' -payment.payone.giropay-online-transfer: - translations: - en_US: 'Payone Giropay' - de_DE: 'Payone Giropay' -Payone_giropay_online_transfer.IBAN: - translations: - en_US: 'IBAN' - de_DE: 'IBAN' -Payone_giropay_online_transfer.BIC: - translations: - en_US: 'BIC' - de_DE: 'BIC' -payment.payone.online_bank_transfer: - translations: - de_DE: 'Payone Online-Überweisung' - en_US: 'Payone Online Bank Transfer' -payment.payone.instant-online-transfer: - translations: - de_DE: 'Payone Sofort-Überweisung' - en_US: 'Payone Instant Bank Transfer' \ No newline at end of file diff --git a/src/SprykerEco/Zed/Payone/Business/Model/ParametersReader.php b/src/SprykerEco/Zed/Payone/Business/Model/ParametersReader.php new file mode 100644 index 0000000000..a6a4005498 --- /dev/null +++ b/src/SprykerEco/Zed/Payone/Business/Model/ParametersReader.php @@ -0,0 +1,53 @@ +storeFacade = $storeFacade; + $this->payoneConfig = $payoneConfig; + } + + /** + * @return \Generated\Shared\Transfer\PayoneStandardParameterTransfer + */ + public function getRequestStandardParameter(): PayoneStandardParameterTransfer + { + $storeTransfer = $this->storeFacade->getCurrentStore(); + + $standardParameter = $this->payoneConfig->getRequestStandardParameter(); + $standardParameter->setCurrency( + current($storeTransfer->getAvailableCurrencyIsoCodes()), + ); + $standardParameter->setLanguage( + current($storeTransfer->getCountries()), + ); + + return $standardParameter; + } +} diff --git a/src/SprykerEco/Zed/Payone/Business/Model/ParametersReaderInterface.php b/src/SprykerEco/Zed/Payone/Business/Model/ParametersReaderInterface.php new file mode 100644 index 0000000000..a67fe48dbe --- /dev/null +++ b/src/SprykerEco/Zed/Payone/Business/Model/ParametersReaderInterface.php @@ -0,0 +1,18 @@ +storeFacade = $storeFacade; + } + + /** + * @return string + */ + public function getDefaultStoreCountry(): string + { + return current($this->storeFacade->getCurrentStore()->getCountries()); + } +} diff --git a/src/SprykerEco/Zed/Payone/Business/Model/StoreReaderInterface.php b/src/SprykerEco/Zed/Payone/Business/Model/StoreReaderInterface.php new file mode 100644 index 0000000000..2d680e0ab4 --- /dev/null +++ b/src/SprykerEco/Zed/Payone/Business/Model/StoreReaderInterface.php @@ -0,0 +1,16 @@ +storeConfig = $storeConfig; - } - /** * @param \Generated\Shared\Transfer\PayoneStandardParameterTransfer $standardParameterTransfer * diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CashOnDelivery.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CashOnDelivery.php index a85834a810..26f89b36e9 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CashOnDelivery.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CashOnDelivery.php @@ -8,10 +8,8 @@ namespace SprykerEco\Zed\Payone\Business\Payment\MethodMapper; use Generated\Shared\Transfer\OrderTransfer; -use Generated\Shared\Transfer\PayoneAuthorizationTransfer; use Generated\Shared\Transfer\PayoneBankAccountCheckTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; -use Spryker\Shared\Kernel\Store; use SprykerEco\Shared\Payone\PayoneApiConstants; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\AbstractAuthorizationContainer; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PaymentMethod\CashOnDeliveryContainer; @@ -36,12 +34,10 @@ class CashOnDelivery extends AbstractMapper protected $glossaryFacade; /** - * @param \Spryker\Shared\Kernel\Store $storeConfig * @param \SprykerEco\Zed\Payone\Dependency\Facade\PayoneToGlossaryFacadeInterface $glossaryFacade */ - public function __construct(Store $storeConfig, PayoneToGlossaryFacadeInterface $glossaryFacade) + public function __construct(PayoneToGlossaryFacadeInterface $glossaryFacade) { - parent::__construct($storeConfig); $this->glossaryFacade = $glossaryFacade; } @@ -217,22 +213,6 @@ protected function createPaymentMethodContainerFromPayment(SpyPaymentPayone $pay return $paymentMethodContainer; } - /** - * @param \Generated\Shared\Transfer\PayoneAuthorizationTransfer $authorizationData - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PersonalContainer - */ - protected function createAuthorizationPersonalData(PayoneAuthorizationTransfer $authorizationData): PersonalContainer - { - $personalContainer = new PersonalContainer(); - - $personalContainer->setFirstName($authorizationData->getOrder()->getFirstName()); - $personalContainer->setLastName($authorizationData->getOrder()->getLastName()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); - - return $personalContainer; - } - /** * @param string $glossaryKey * diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CreditCardPseudo.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CreditCardPseudo.php index df7e49b5a9..543e4f0d21 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CreditCardPseudo.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/CreditCardPseudo.php @@ -8,7 +8,6 @@ namespace SprykerEco\Zed\Payone\Business\Payment\MethodMapper; use Generated\Shared\Transfer\OrderTransfer; -use Generated\Shared\Transfer\PayoneAuthorizationTransfer; use Generated\Shared\Transfer\PayoneCreditCardTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; use SprykerEco\Shared\Payone\PayoneApiConstants; @@ -179,22 +178,6 @@ protected function createPaymentMethodContainerFromPayment(SpyPaymentPayone $pay return $paymentMethodContainer; } - /** - * @param \Generated\Shared\Transfer\PayoneAuthorizationTransfer $payoneAuthorizationTransfer - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PersonalContainer - */ - protected function createAuthorizationPersonalData(PayoneAuthorizationTransfer $payoneAuthorizationTransfer) - { - $personalContainer = new PersonalContainer(); - - $personalContainer->setFirstName($payoneAuthorizationTransfer->getOrder()->getFirstName()); - $personalContainer->setLastName($payoneAuthorizationTransfer->getOrder()->getLastName()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); - - return $personalContainer; - } - /** * @param \Orm\Zed\Payone\Persistence\SpyPaymentPayone $paymentEntity * diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/EWallet.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/EWallet.php index 6329667f37..2aaa6f2156 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/EWallet.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/EWallet.php @@ -8,7 +8,6 @@ namespace SprykerEco\Zed\Payone\Business\Payment\MethodMapper; use Generated\Shared\Transfer\OrderTransfer; -use Generated\Shared\Transfer\PayoneAuthorizationTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; use SprykerEco\Shared\Payone\PayoneApiConstants; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\AbstractAuthorizationContainer; @@ -156,20 +155,4 @@ protected function createPaymentMethodContainerFromPayment(SpyPaymentPayone $pay return $paymentMethodContainer; } - - /** - * @param \Generated\Shared\Transfer\PayoneAuthorizationTransfer $payoneAuthorizationTransfer - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PersonalContainer - */ - protected function createAuthorizationPersonalData(PayoneAuthorizationTransfer $payoneAuthorizationTransfer) - { - $personalContainer = new PersonalContainer(); - - $personalContainer->setFirstName($payoneAuthorizationTransfer->getOrder()->getFirstName()); - $personalContainer->setLastName($payoneAuthorizationTransfer->getOrder()->getLastName()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); - - return $personalContainer; - } } diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Invoice.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Invoice.php index df1fddae86..2f602582a1 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Invoice.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Invoice.php @@ -10,7 +10,6 @@ use Generated\Shared\Transfer\ExpenseTransfer; use Generated\Shared\Transfer\ItemTransfer; use Generated\Shared\Transfer\OrderTransfer; -use Generated\Shared\Transfer\PayoneAuthorizationTransfer; use Generated\Shared\Transfer\PayoneGetInvoiceTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; use SprykerEco\Shared\Payone\PayoneApiConstants; @@ -134,7 +133,7 @@ protected function mapPaymentToAbstractAuthorization(SpyPaymentPayone $paymentEn $authorizationContainer->setReference($paymentEntity->getReference()); $authorizationContainer->setAmount($paymentDetailEntity->getAmount()); $authorizationContainer->setCurrency($this->getStandardParameter()->getCurrency()); - $authorizationContainer->setPaymentMethod($this->createPaymentMethodContainerFromPayment($paymentEntity)); + $authorizationContainer->setPaymentMethod($this->createPaymentMethodContainerFromPayment()); $personalContainer = new PersonalContainer(); $this->mapBillingAddressToPersonalContainer($personalContainer, $paymentEntity); @@ -199,30 +198,10 @@ public function mapPaymentToRefund(SpyPaymentPayone $paymentEntity): RefundConta } /** - * @param \Orm\Zed\Payone\Persistence\SpyPaymentPayone $paymentEntity - * * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PaymentMethod\InvoiceContainer */ - protected function createPaymentMethodContainerFromPayment(SpyPaymentPayone $paymentEntity) - { - $paymentMethodContainer = new InvoiceContainer(); - - return $paymentMethodContainer; - } - - /** - * @param \Generated\Shared\Transfer\PayoneAuthorizationTransfer $payoneAuthorizationTransfer - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PersonalContainer - */ - protected function createAuthorizationPersonalData(PayoneAuthorizationTransfer $payoneAuthorizationTransfer) + protected function createPaymentMethodContainerFromPayment(): InvoiceContainer { - $personalContainer = new PersonalContainer(); - - $personalContainer->setFirstName($payoneAuthorizationTransfer->getOrder()->getFirstName()); - $personalContainer->setLastName($payoneAuthorizationTransfer->getOrder()->getLastName()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); - - return $personalContainer; + return new InvoiceContainer(); } } diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/KlarnaPaymentMapper.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/KlarnaPaymentMapper.php index 56e8796fb2..a3e5ceea07 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/KlarnaPaymentMapper.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/KlarnaPaymentMapper.php @@ -11,7 +11,6 @@ use Generated\Shared\Transfer\PayoneKlarnaStartSessionRequestTransfer; use Generated\Shared\Transfer\QuoteTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; -use Spryker\Shared\Kernel\Store; use SprykerEco\Shared\Payone\PayoneApiConstants; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\AbstractAuthorizationContainer; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PersonalContainer; @@ -28,6 +27,8 @@ use SprykerEco\Zed\Payone\Business\Api\Request\Container\PreAuthorizationContainerInterface; use SprykerEco\Zed\Payone\Business\Api\Request\Container\RefundContainer; use SprykerEco\Zed\Payone\Business\Api\Request\Container\RefundContainerInterface; +use SprykerEco\Zed\Payone\Business\Model\StoreReaderInterface; +use SprykerEco\Zed\Payone\Dependency\Facade\PayoneToStoreFacadeInterface; use Symfony\Component\HttpFoundation\RequestStack; class KlarnaPaymentMapper extends AbstractMapper implements KlarnaPaymentMapperInterface @@ -40,14 +41,28 @@ class KlarnaPaymentMapper extends AbstractMapper implements KlarnaPaymentMapperI protected $requestStack; /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack + * @var \SprykerEco\Zed\Payone\Dependency\Facade\PayoneToStoreFacadeInterface */ - public function __construct(Store $storeConfig, RequestStack $requestStack) - { - parent::__construct($storeConfig); + protected $storeFacade; + /** + * @var \SprykerEco\Zed\Payone\Business\Model\StoreReaderInterface + */ + protected StoreReaderInterface $storeReader; + + /** + * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack + * @param \SprykerEco\Zed\Payone\Dependency\Facade\PayoneToStoreFacadeInterface $storeFacade + * @param \SprykerEco\Zed\Payone\Business\Model\StoreReaderInterface $storeReader + */ + public function __construct( + PayoneToStoreFacadeInterface $storeFacade, + RequestStack $requestStack, + StoreReaderInterface $storeReader + ) { + $this->storeFacade = $storeFacade; $this->requestStack = $requestStack; + $this->storeReader = $storeReader; } /** @@ -188,7 +203,7 @@ protected function createPersonalContainerFromQuoteTransfer(QuoteTransfer $quote $personalContainer->setEmail($billingAddress->getEmail()); $personalContainer->setCity($billingAddress->getCity()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); + $personalContainer->setCountry($this->getCurrentCountry()); $personalContainer->setFirstName($billingAddress->getFirstName()); $personalContainer->setLastName($billingAddress->getLastName()); $personalContainer->setSalutation($billingAddress->getSalutation()); @@ -298,4 +313,12 @@ protected function buildPersonalContainer(SpyPaymentPayone $paymentEntity): Cont return $personalContainer; } + + /** + * @return string + */ + protected function getCurrentCountry(): string + { + return $this->storeReader->getDefaultStoreCountry(); + } } diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/OnlineBankTransfer.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/OnlineBankTransfer.php index 769860208f..713f028d80 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/OnlineBankTransfer.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/OnlineBankTransfer.php @@ -8,7 +8,6 @@ namespace SprykerEco\Zed\Payone\Business\Payment\MethodMapper; use Generated\Shared\Transfer\OrderTransfer; -use Generated\Shared\Transfer\PayoneAuthorizationTransfer; use Generated\Shared\Transfer\PayoneBankAccountCheckTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; use SprykerEco\Shared\Payone\PayoneApiConstants; @@ -171,22 +170,6 @@ protected function createPaymentMethodContainerFromPayment(SpyPaymentPayone $pay return $paymentMethodContainer; } - /** - * @param \Generated\Shared\Transfer\PayoneAuthorizationTransfer $authorizationData - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PersonalContainer - */ - protected function createAuthorizationPersonalData(PayoneAuthorizationTransfer $authorizationData) - { - $personalContainer = new PersonalContainer(); - - $personalContainer->setFirstName($authorizationData->getOrder()->getFirstName()); - $personalContainer->setLastName($authorizationData->getOrder()->getLastName()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); - - return $personalContainer; - } - /** * @param \Generated\Shared\Transfer\PayoneBankAccountCheckTransfer $bankAccountCheckTransfer * diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Prepayment.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Prepayment.php index 4206f7bcfd..a0b4b5a7a7 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Prepayment.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/Prepayment.php @@ -8,7 +8,6 @@ namespace SprykerEco\Zed\Payone\Business\Payment\MethodMapper; use Generated\Shared\Transfer\OrderTransfer; -use Generated\Shared\Transfer\PayoneAuthorizationTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; use SprykerEco\Shared\Payone\PayoneApiConstants; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\AbstractAuthorizationContainer; @@ -94,7 +93,7 @@ protected function mapPaymentToAbstractAuthorization(SpyPaymentPayone $paymentEn $authorizationContainer->setReference($paymentEntity->getReference()); $authorizationContainer->setAmount($paymentDetailEntity->getAmount()); $authorizationContainer->setCurrency($this->getStandardParameter()->getCurrency()); - $authorizationContainer->setPaymentMethod($this->createPaymentMethodContainerFromPayment($paymentEntity)); + $authorizationContainer->setPaymentMethod($this->createPaymentMethodContainerFromPayment()); $personalContainer = new PersonalContainer(); $this->mapBillingAddressToPersonalContainer($personalContainer, $paymentEntity); @@ -146,30 +145,12 @@ public function mapPaymentToRefund(SpyPaymentPayone $paymentEntity): RefundConta } /** - * @param \Orm\Zed\Payone\Persistence\SpyPaymentPayone $paymentEntity - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PaymentMethod\CreditCardPseudoContainer + * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PaymentMethod\PrepaymentContainer */ - protected function createPaymentMethodContainerFromPayment(SpyPaymentPayone $paymentEntity) + protected function createPaymentMethodContainerFromPayment() { $paymentMethodContainer = new PrepaymentContainer(); return $paymentMethodContainer; } - - /** - * @param \Generated\Shared\Transfer\PayoneAuthorizationTransfer $payoneAuthorizationTransfer - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PersonalContainer - */ - protected function createAuthorizationPersonalData(PayoneAuthorizationTransfer $payoneAuthorizationTransfer) - { - $personalContainer = new PersonalContainer(); - - $personalContainer->setFirstName($payoneAuthorizationTransfer->getOrder()->getFirstName()); - $personalContainer->setLastName($payoneAuthorizationTransfer->getOrder()->getLastName()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); - - return $personalContainer; - } } diff --git a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/SecurityInvoice.php b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/SecurityInvoice.php index fe16c9b18f..710d4a3463 100644 --- a/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/SecurityInvoice.php +++ b/src/SprykerEco/Zed/Payone/Business/Payment/MethodMapper/SecurityInvoice.php @@ -9,10 +9,8 @@ use Generated\Shared\Transfer\ExpenseTransfer; use Generated\Shared\Transfer\OrderTransfer; -use Generated\Shared\Transfer\PayoneAuthorizationTransfer; use Generated\Shared\Transfer\PayoneGetSecurityInvoiceTransfer; use Orm\Zed\Payone\Persistence\SpyPaymentPayone; -use Spryker\Shared\Kernel\Store; use SprykerEco\Shared\Payone\PayoneApiConstants; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\AbstractAuthorizationContainer; use SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PaymentMethod\SecurityInvoiceContainer; @@ -39,12 +37,10 @@ class SecurityInvoice extends AbstractMapper protected $payoneConfig; /** - * @param \Spryker\Shared\Kernel\Store $storeConfig * @param \SprykerEco\Zed\Payone\PayoneConfig $payoneConfig */ - public function __construct(Store $storeConfig, PayoneConfig $payoneConfig) + public function __construct(PayoneConfig $payoneConfig) { - parent::__construct($storeConfig); $this->payoneConfig = $payoneConfig; } @@ -172,14 +168,12 @@ protected function mapPaymentToAbstractAuthorization( SpyPaymentPayone $paymentEntity, AbstractAuthorizationContainer $authorizationContainer ): AbstractAuthorizationContainer { - $paymentDetailEntity = $paymentEntity->getSpyPaymentPayoneDetail(); - $authorizationContainer->setAid($this->getStandardParameter()->getAid()); $authorizationContainer->setClearingType(PayoneApiConstants::CLEARING_TYPE_SECURITY_INVOICE); $authorizationContainer->setClearingsubtype(PayoneApiConstants::CLEARING_SUBTYPE_SECURITY_INVOICE); $authorizationContainer->setReference($paymentEntity->getReference()); $authorizationContainer->setCurrency($this->getStandardParameter()->getCurrency()); - $authorizationContainer->setPaymentMethod($this->createPaymentMethodContainerFromPayment($paymentEntity)); + $authorizationContainer->setPaymentMethod($this->createPaymentMethodContainerFromPayment()); $personalContainer = new PersonalContainer(); $this->mapBillingAddressToPersonalContainer($personalContainer, $paymentEntity); @@ -243,30 +237,10 @@ public function mapPaymentToRefund(SpyPaymentPayone $paymentEntity): RefundConta } /** - * @param \Orm\Zed\Payone\Persistence\SpyPaymentPayone $paymentEntity - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\ContainerInterface - */ - protected function createPaymentMethodContainerFromPayment(SpyPaymentPayone $paymentEntity): ContainerInterface - { - $paymentMethodContainer = new SecurityInvoiceContainer(); - - return $paymentMethodContainer; - } - - /** - * @param \Generated\Shared\Transfer\PayoneAuthorizationTransfer $payoneAuthorizationTransfer - * - * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\ContainerInterface + * @return \SprykerEco\Zed\Payone\Business\Api\Request\Container\Authorization\PaymentMethod\SecurityInvoiceContainer */ - protected function createAuthorizationPersonalData(PayoneAuthorizationTransfer $payoneAuthorizationTransfer): ContainerInterface + protected function createPaymentMethodContainerFromPayment(): SecurityInvoiceContainer { - $personalContainer = new PersonalContainer(); - - $personalContainer->setFirstName($payoneAuthorizationTransfer->getOrder()->getFirstName()); - $personalContainer->setLastName($payoneAuthorizationTransfer->getOrder()->getLastName()); - $personalContainer->setCountry($this->storeConfig->getCurrentCountry()); - - return $personalContainer; + return new SecurityInvoiceContainer(); } } diff --git a/src/SprykerEco/Zed/Payone/Business/PayoneBusinessFactory.php b/src/SprykerEco/Zed/Payone/Business/PayoneBusinessFactory.php index 8ce47e8e3d..476ec5a8b3 100644 --- a/src/SprykerEco/Zed/Payone/Business/PayoneBusinessFactory.php +++ b/src/SprykerEco/Zed/Payone/Business/PayoneBusinessFactory.php @@ -9,7 +9,6 @@ use Generated\Shared\Transfer\PayoneStandardParameterTransfer; use Generated\Shared\Transfer\PayoneTransactionStatusUpdateTransfer; -use Spryker\Shared\Kernel\Store; use Spryker\Zed\Kernel\Business\AbstractBusinessFactory; use SprykerEco\Shared\Payone\Dependency\HashInterface; use SprykerEco\Shared\Payone\Dependency\ModeDetectorInterface; @@ -42,6 +41,10 @@ use SprykerEco\Zed\Payone\Business\Key\HmacGeneratorInterface; use SprykerEco\Zed\Payone\Business\Key\UrlHmacGenerator; use SprykerEco\Zed\Payone\Business\Mode\ModeDetector; +use SprykerEco\Zed\Payone\Business\Model\ParametersReader; +use SprykerEco\Zed\Payone\Business\Model\ParametersReaderInterface; +use SprykerEco\Zed\Payone\Business\Model\StoreReader; +use SprykerEco\Zed\Payone\Business\Model\StoreReaderInterface; use SprykerEco\Zed\Payone\Business\Order\OrderManager; use SprykerEco\Zed\Payone\Business\Order\OrderManagerInterface; use SprykerEco\Zed\Payone\Business\Order\PayoneOrderItemStatusFinder; @@ -127,6 +130,7 @@ use SprykerEco\Zed\Payone\Business\TransactionStatus\TransactionStatusUpdateManager; use SprykerEco\Zed\Payone\Business\TransactionStatus\TransactionStatusUpdateManagerInterface; use SprykerEco\Zed\Payone\Dependency\Facade\PayoneToGlossaryFacadeInterface; +use SprykerEco\Zed\Payone\Dependency\Facade\PayoneToStoreFacadeInterface; use SprykerEco\Zed\Payone\PayoneDependencyProvider; use Symfony\Component\HttpFoundation\RequestStack; @@ -138,11 +142,6 @@ */ class PayoneBusinessFactory extends AbstractBusinessFactory { - /** - * @var \Generated\Shared\Transfer\PayoneStandardParameterTransfer - */ - private $standardParameter; - /** * @return \SprykerEco\Zed\Payone\Business\Payment\RequestSender\PayonePreAuthorizeRequestSenderInterface */ @@ -382,7 +381,7 @@ public function createPayoneKlarnaStartSessionMethodSender(): PayoneKlarnaStartS $this->createExecutionAdapter(), $this->createStandartParameterMapper(), $this->createPayoneRequestProductDataMapper(), - $this->createKlarnaPaymentMapper($this->getStore()), + $this->createKlarnaPaymentMapper(), $this->getStandardParameter(), $this->createSequenceNumberProvider(), $this->createUrlHmacGenerator(), @@ -512,104 +511,89 @@ public function createPayoneBaseAuthorizeSender(): PayoneBaseAuthorizeSenderInte } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * * @return \SprykerEco\Zed\Payone\Business\Payment\MethodMapper\CreditCardPseudoInterface */ - public function createCreditCardPseudo(Store $storeConfig): CreditCardPseudoInterface + public function createCreditCardPseudo(): CreditCardPseudoInterface { - return new CreditCardPseudo($storeConfig); + return new CreditCardPseudo(); } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * * @return \SprykerEco\Zed\Payone\Business\Payment\MethodMapper\DirectDebitInterface */ - public function createDirectDebit(Store $storeConfig): DirectDebitInterface + public function createDirectDebit(): DirectDebitInterface { - return new DirectDebit($storeConfig); + return new DirectDebit(); } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * * @return \SprykerEco\Zed\Payone\Business\Payment\MethodMapper\InvoiceInterface */ - public function createInvoice(Store $storeConfig): InvoiceInterface + public function createInvoice(): InvoiceInterface { - return new Invoice($storeConfig); + return new Invoice(); } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * * @return \SprykerEco\Zed\Payone\Business\Payment\PaymentMethodMapperInterface */ - public function createSecurityInvoice(Store $storeConfig): PaymentMethodMapperInterface + public function createSecurityInvoice(): PaymentMethodMapperInterface { - return new SecurityInvoice($storeConfig, $this->getConfig()); + return new SecurityInvoice($this->getConfig()); } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * * @return \SprykerEco\Zed\Payone\Business\Payment\PaymentMethodMapperInterface */ - public function createOnlineBankTransfer(Store $storeConfig): PaymentMethodMapperInterface + public function createOnlineBankTransfer(): PaymentMethodMapperInterface { - return new OnlineBankTransfer($storeConfig); + return new OnlineBankTransfer(); } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * * @return \SprykerEco\Zed\Payone\Business\Payment\PaymentMethodMapperInterface */ - public function createEWallet(Store $storeConfig): PaymentMethodMapperInterface + public function createEWallet(): PaymentMethodMapperInterface { - return new EWallet($storeConfig); + return new EWallet(); } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig * @param \SprykerEco\Zed\Payone\Dependency\Facade\PayoneToGlossaryFacadeInterface $glossary * * @return \SprykerEco\Zed\Payone\Business\Payment\PaymentMethodMapperInterface */ - public function createCashOnDelivery(Store $storeConfig, PayoneToGlossaryFacadeInterface $glossary): PaymentMethodMapperInterface + public function createCashOnDelivery(PayoneToGlossaryFacadeInterface $glossary): PaymentMethodMapperInterface { - return new CashOnDelivery($storeConfig, $glossary); + return new CashOnDelivery($glossary); } /** - * @param \Spryker\Shared\Kernel\Store $storeConfig - * * @return \SprykerEco\Zed\Payone\Business\Payment\PaymentMethodMapperInterface */ - public function createPrepayment(Store $storeConfig): PaymentMethodMapperInterface + public function createPrepayment(): PaymentMethodMapperInterface { - return new Prepayment($storeConfig); + return new Prepayment(); } /** - * @param \Spryker\Shared\Kernel\Store $store - * * @return \SprykerEco\Zed\Payone\Business\Payment\GenericPaymentMethodMapperInterface */ - public function createGenericPayment(Store $store): GenericPaymentMethodMapperInterface + public function createGenericPayment(): GenericPaymentMethodMapperInterface { - return new GenericPayment($store); + return new GenericPayment(); } /** - * @param \Spryker\Shared\Kernel\Store $store - * * @return \SprykerEco\Zed\Payone\Business\Payment\MethodMapper\KlarnaPaymentMapperInterface */ - public function createKlarnaPaymentMapper(Store $store): KlarnaPaymentMapperInterface + public function createKlarnaPaymentMapper(): KlarnaPaymentMapperInterface { - return new KlarnaPaymentMapper($store, $this->getRequestStack()); + return new KlarnaPaymentMapper( + $this->getStoreFacade(), + $this->getRequestStack(), + $this->createStoreReader() + ); } /** @@ -812,28 +796,45 @@ public function createDebitResponseMapper(): DebitResponseMapperInterface */ public function getAvailablePaymentMethods(): array { - $storeConfig = $this->getProvidedDependency(PayoneDependencyProvider::STORE_CONFIG); - return [ - PayoneApiConstants::PAYMENT_METHOD_CREDITCARD_PSEUDO => $this->createCreditCardPseudo($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_INVOICE => $this->createInvoice($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_SECURITY_INVOICE => $this->createSecurityInvoice($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_ONLINE_BANK_TRANSFER => $this->createOnlineBankTransfer($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_E_WALLET => $this->createEWallet($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_PREPAYMENT => $this->createPrepayment($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_DIRECT_DEBIT => $this->createDirectDebit($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_PAYPAL_EXPRESS_CHECKOUT => $this->createGenericPayment($storeConfig), - PayoneApiConstants::PAYMENT_METHOD_CASH_ON_DELIVERY => $this->createCashOnDelivery($storeConfig, $this->getGlossaryFacade()), - PayoneApiConstants::PAYMENT_METHOD_KLARNA => $this->createKlarnaPaymentMapper($storeConfig), + PayoneApiConstants::PAYMENT_METHOD_CREDITCARD_PSEUDO => $this->createCreditCardPseudo(), + PayoneApiConstants::PAYMENT_METHOD_INVOICE => $this->createInvoice(), + PayoneApiConstants::PAYMENT_METHOD_SECURITY_INVOICE => $this->createSecurityInvoice(), + PayoneApiConstants::PAYMENT_METHOD_ONLINE_BANK_TRANSFER => $this->createOnlineBankTransfer(), + PayoneApiConstants::PAYMENT_METHOD_E_WALLET => $this->createEWallet(), + PayoneApiConstants::PAYMENT_METHOD_PREPAYMENT => $this->createPrepayment(), + PayoneApiConstants::PAYMENT_METHOD_DIRECT_DEBIT => $this->createDirectDebit(), + PayoneApiConstants::PAYMENT_METHOD_PAYPAL_EXPRESS_CHECKOUT => $this->createGenericPayment(), + PayoneApiConstants::PAYMENT_METHOD_CASH_ON_DELIVERY => $this->createCashOnDelivery($this->getGlossaryFacade()), + PayoneApiConstants::PAYMENT_METHOD_KLARNA => $this->createKlarnaPaymentMapper(), ]; } /** - * @return \Spryker\Shared\Kernel\Store + * @return \SprykerEco\Zed\Payone\Dependency\Facade\PayoneToStoreFacadeInterface */ - public function getStore(): Store + public function getStoreFacade(): PayoneToStoreFacadeInterface { - return $this->getProvidedDependency(PayoneDependencyProvider::STORE_CONFIG); + return $this->getProvidedDependency(PayoneDependencyProvider::FACADE_STORE); + } + + /** + * @return \SprykerEco\Zed\Payone\Business\Model\StoreReaderInterface + */ + public function createStoreReader(): StoreReaderInterface + { + return new StoreReader($this->getStoreFacade()); + } + + /** + * @return \SprykerEco\Zed\Payone\Business\Model\ParametersReaderInterface + */ + public function createParametersReader(): ParametersReaderInterface + { + return new ParametersReader( + $this->getStoreFacade(), + $this->getConfig(), + ); } /** @@ -841,11 +842,7 @@ public function getStore(): Store */ public function getStandardParameter(): PayoneStandardParameterTransfer { - if ($this->standardParameter === null) { - $this->standardParameter = $this->getConfig()->getRequestStandardParameter(); - } - - return $this->standardParameter; + return $this->createParametersReader()->getRequestStandardParameter(); } /** diff --git a/src/SprykerEco/Zed/Payone/Communication/Controller/GatewayController.php b/src/SprykerEco/Zed/Payone/Communication/Controller/GatewayController.php index 9281568921..c7143db8a0 100644 --- a/src/SprykerEco/Zed/Payone/Communication/Controller/GatewayController.php +++ b/src/SprykerEco/Zed/Payone/Communication/Controller/GatewayController.php @@ -58,7 +58,7 @@ public function cancelRedirectAction(PayoneCancelRedirectTransfer $cancelRedirec $urlHmacGenerator = $this->getFactory()->createUrlHmacGenerator(); $hash = $urlHmacGenerator->hash( $cancelRedirectTransfer->getOrderReference(), - $this->getFactory()->getConfig()->getRequestStandardParameter()->getKey() + $this->getFactory()->getStandardParameter()->getKey() ); if ($cancelRedirectTransfer->getUrlHmac() === $hash) { diff --git a/src/SprykerEco/Zed/Payone/Communication/Model/ParametersReader.php b/src/SprykerEco/Zed/Payone/Communication/Model/ParametersReader.php new file mode 100644 index 0000000000..e24dd59364 --- /dev/null +++ b/src/SprykerEco/Zed/Payone/Communication/Model/ParametersReader.php @@ -0,0 +1,53 @@ +storeFacade = $storeFacade; + $this->payoneConfig = $payoneConfig; + } + + /** + * @return \Generated\Shared\Transfer\PayoneStandardParameterTransfer + */ + public function getRequestStandardParameter(): PayoneStandardParameterTransfer + { + $storeTransfer = $this->storeFacade->getCurrentStore(); + + $standardParameter = $this->payoneConfig->getRequestStandardParameter(); + $standardParameter->setCurrency( + current($storeTransfer->getAvailableCurrencyIsoCodes()), + ); + $standardParameter->setLanguage( + current($storeTransfer->getCountries()), + ); + + return $standardParameter; + } +} diff --git a/src/SprykerEco/Zed/Payone/Communication/Model/ParametersReaderInterface.php b/src/SprykerEco/Zed/Payone/Communication/Model/ParametersReaderInterface.php new file mode 100644 index 0000000000..014151c3e2 --- /dev/null +++ b/src/SprykerEco/Zed/Payone/Communication/Model/ParametersReaderInterface.php @@ -0,0 +1,18 @@ +getProvidedDependency(PayoneDependencyProvider::FACADE_CALCULATION); } + /** + * @return \SprykerEco\Zed\Payone\Dependency\Facade\PayoneToStoreFacadeBridge + */ + public function getStoreFacade(): PayoneToStoreFacadeBridge + { + return $this->getProvidedDependency(PayoneDependencyProvider::FACADE_STORE); + } + /** * @return \SprykerEco\Zed\Payone\Business\Key\HmacGeneratorInterface */ @@ -64,4 +76,23 @@ public function createUrlHmacGenerator(): HmacGeneratorInterface { return new UrlHmacGenerator(); } + + /** + * @return \SprykerEco\Zed\Payone\Communication\Model\ParametersReaderInterface + */ + public function createParametersReader(): ParametersReaderInterface + { + return new ParametersReader( + $this->getStoreFacade(), + $this->getConfig(), + ); + } + + /** + * @return \Generated\Shared\Transfer\PayoneStandardParameterTransfer + */ + public function getStandardParameter(): PayoneStandardParameterTransfer + { + return $this->createParametersReader()->getRequestStandardParameter(); + } } diff --git a/src/SprykerEco/Zed/Payone/Dependency/Facade/PayoneToStoreFacadeBridge.php b/src/SprykerEco/Zed/Payone/Dependency/Facade/PayoneToStoreFacadeBridge.php new file mode 100644 index 0000000000..91212e0ba9 --- /dev/null +++ b/src/SprykerEco/Zed/Payone/Dependency/Facade/PayoneToStoreFacadeBridge.php @@ -0,0 +1,32 @@ +storeFacade = $storeFacade; + } + + /** + * @return \Generated\Shared\Transfer\StoreTransfer + */ + public function getCurrentStore() + { + return $this->storeFacade->getCurrentStore(); + } +} diff --git a/src/SprykerEco/Zed/Payone/Dependency/Facade/PayoneToStoreFacadeInterface.php b/src/SprykerEco/Zed/Payone/Dependency/Facade/PayoneToStoreFacadeInterface.php new file mode 100644 index 0000000000..b9fdaea8f1 --- /dev/null +++ b/src/SprykerEco/Zed/Payone/Dependency/Facade/PayoneToStoreFacadeInterface.php @@ -0,0 +1,16 @@ +setKey($settings[PayoneConstants::PAYONE_CREDENTIALS_KEY]); $standardParameter->setPaymentGatewayUrl($settings[PayoneConstants::PAYONE_PAYMENT_GATEWAY_URL]); - $standardParameter->setCurrency(Store::getInstance()->getCurrencyIsoCode()); - $standardParameter->setLanguage(Store::getInstance()->getCurrentLanguage()); + $standardParameter = $this->addLegacyParameters($standardParameter); $standardParameter->setRedirectSuccessUrl($settings[PayoneConstants::PAYONE_REDIRECT_SUCCESS_URL]); $standardParameter->setRedirectBackUrl($settings[PayoneConstants::PAYONE_REDIRECT_BACK_URL]); @@ -164,6 +163,8 @@ protected function getYvesBaseUrl() * * @api * + * @deprecated No longer used. Will be removed without replacement. + * * @return string */ public function getTranslationFilePath() @@ -266,4 +267,23 @@ public function getPaymentMethodsWithOptionalPaymentData(): array return $settings[PayoneConstants::PAYONE_PAYMENT_METHODS_WITH_OPTIONAL_PAYMENT_DATA] ?? static::DEFAULT_PAYONE_PAYMENT_METHODS_WITH_OPTIONAL_PAYMENT_DATA; } + + /** + * @deprecated Will be removed when Dynamic Store is always enabled. + * + * @param \Generated\Shared\Transfer\PayoneStandardParameterTransfer $standardParameter + * + * @return \Generated\Shared\Transfer\PayoneStandardParameterTransfer + */ + protected function addLegacyParameters(PayoneStandardParameterTransfer $standardParameter): PayoneStandardParameterTransfer + { + if (Store::isDynamicStoreMode()) { + return $standardParameter; + } + + $standardParameter->setCurrency(Store::getInstance()->getCurrencyIsoCode()); + $standardParameter->setLanguage(Store::getInstance()->getCurrentLanguage()); + + return $standardParameter; + } } diff --git a/src/SprykerEco/Zed/Payone/PayoneDependencyProvider.php b/src/SprykerEco/Zed/Payone/PayoneDependencyProvider.php index 7250afd278..7147e961f3 100644 --- a/src/SprykerEco/Zed/Payone/PayoneDependencyProvider.php +++ b/src/SprykerEco/Zed/Payone/PayoneDependencyProvider.php @@ -15,16 +15,39 @@ use SprykerEco\Zed\Payone\Dependency\Facade\PayoneToOmsBridge; use SprykerEco\Zed\Payone\Dependency\Facade\PayoneToRefundBridge; use SprykerEco\Zed\Payone\Dependency\Facade\PayoneToSalesBridge; +use SprykerEco\Zed\Payone\Dependency\Facade\PayoneToStoreFacadeBridge; class PayoneDependencyProvider extends AbstractBundleDependencyProvider { + /** + * @var string + */ public const FACADE_OMS = 'oms facade'; + /** + * @var string + */ public const FACADE_REFUND = 'refund facade'; - public const STORE_CONFIG = 'store config'; + + /** + * @var string + */ public const FACADE_SALES = 'sales facade'; + + /** + * @var string + */ public const FACADE_GLOSSARY = 'glossary facade'; + + /** + * @var string + */ public const FACADE_CALCULATION = 'calculation facade'; + /** + * @var string + */ + public const FACADE_STORE = 'FACADE_STORE'; + /** * @uses \Spryker\Zed\Http\Communication\Plugin\Application\HttpApplicationPlugin::SERVICE_REQUEST_STACK */ @@ -55,7 +78,7 @@ public function provideBusinessLayerDependencies(Container $container) { $container = parent::provideBusinessLayerDependencies($container); $container = $this->addGlossaryFacade($container); - $container = $this->addStore($container); + $container = $this->addStoreFacade($container); $container = $this->addRequestStack($container); return $container; @@ -136,10 +159,10 @@ protected function addGlossaryFacade(Container $container): Container * * @return \Spryker\Zed\Kernel\Container */ - protected function addStore(Container $container): Container + protected function addStoreFacade(Container $container): Container { - $container->set(static::STORE_CONFIG, function () { - return Store::getInstance(); + $container->set(static::FACADE_STORE, function (Container $container) { + return new PayoneToStoreFacadeBridge($container->getLocator()->store()->facade()); }); return $container;