From f49952c90361f14937ab0426397240c96ab7a89f Mon Sep 17 00:00:00 2001 From: Frederik Rommel Date: Mon, 17 Jun 2024 21:54:47 +0200 Subject: [PATCH] PAYOSWXP-130: paymenthandler: add data-bag to getValidationDefinition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … to allow easier conditional validations --- src/EventListener/OrderValidationEventListener.php | 2 +- src/PaymentHandler/AbstractKlarnaPaymentHandler.php | 5 +++-- src/PaymentHandler/AbstractPayonePaymentHandler.php | 3 ++- src/PaymentHandler/PayoneAmazonPayPaymentHandler.php | 5 +++-- src/PaymentHandler/PayonePayolutionDebitPaymentHandler.php | 5 +++-- .../PayonePayolutionInstallmentPaymentHandler.php | 5 +++-- .../PayonePayolutionInvoicingPaymentHandler.php | 5 +++-- src/PaymentHandler/PayoneRatepayDebitPaymentHandler.php | 5 +++-- .../PayoneRatepayInstallmentPaymentHandler.php | 5 +++-- src/PaymentHandler/PayoneRatepayInvoicingPaymentHandler.php | 5 +++-- src/PaymentHandler/PayoneSecureInvoicePaymentHandler.php | 5 +++-- .../PayoneSecuredDirectDebitPaymentHandler.php | 5 +++-- .../PayoneSecuredInstallmentPaymentHandler.php | 5 +++-- src/PaymentHandler/PayoneSecuredInvoicePaymentHandler.php | 5 +++-- src/PaymentHandler/PayoneTrustlyPaymentHandler.php | 5 +++-- 15 files changed, 42 insertions(+), 28 deletions(-) diff --git a/src/EventListener/OrderValidationEventListener.php b/src/EventListener/OrderValidationEventListener.php index 50081448..593f12b0 100644 --- a/src/EventListener/OrderValidationEventListener.php +++ b/src/EventListener/OrderValidationEventListener.php @@ -42,7 +42,7 @@ public function validateOrderData(BuildValidationEvent $event): void $paymentHandler = $this->paymentHandlerRegistry->getPaymentMethodHandler($paymentMethodId); if ($paymentHandler instanceof AbstractPayonePaymentHandler) { - $validationDefinitions = $paymentHandler->getValidationDefinitions($salesChannelContext); + $validationDefinitions = $paymentHandler->getValidationDefinitions($event->getData(), $salesChannelContext); if ($validationDefinitions !== []) { $this->addSubConstraints($event->getDefinition(), $validationDefinitions); diff --git a/src/PaymentHandler/AbstractKlarnaPaymentHandler.php b/src/PaymentHandler/AbstractKlarnaPaymentHandler.php index b0c0214b..7e09e8cc 100644 --- a/src/PaymentHandler/AbstractKlarnaPaymentHandler.php +++ b/src/PaymentHandler/AbstractKlarnaPaymentHandler.php @@ -16,6 +16,7 @@ use PayonePayment\RequestConstants; use Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct; use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -52,9 +53,9 @@ public function __construct( ); } - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - return array_merge(parent::getValidationDefinitions($salesChannelContext), [ + return array_merge(parent::getValidationDefinitions($dataBag, $salesChannelContext), [ RequestConstants::WORK_ORDER_ID => [new NotBlank()], RequestConstants::CART_HASH => [new NotBlank()], ]); diff --git a/src/PaymentHandler/AbstractPayonePaymentHandler.php b/src/PaymentHandler/AbstractPayonePaymentHandler.php index 8d7ee239..63c71320 100644 --- a/src/PaymentHandler/AbstractPayonePaymentHandler.php +++ b/src/PaymentHandler/AbstractPayonePaymentHandler.php @@ -12,6 +12,7 @@ use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemCollection; use Shopware\Core\Framework\Context; use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\HttpFoundation\RequestStack; @@ -49,7 +50,7 @@ public function __construct( ) { } - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { return [ RequestConstants::WORK_ORDER_ID => [new Blank()], // workorder-id is mostly not required. diff --git a/src/PaymentHandler/PayoneAmazonPayPaymentHandler.php b/src/PaymentHandler/PayoneAmazonPayPaymentHandler.php index 4fa4fbd8..49cebb02 100644 --- a/src/PaymentHandler/PayoneAmazonPayPaymentHandler.php +++ b/src/PaymentHandler/PayoneAmazonPayPaymentHandler.php @@ -19,6 +19,7 @@ use PayonePayment\RequestConstants; use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository; use Shopware\Core\Framework\Uuid\Uuid; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -60,9 +61,9 @@ public static function isCapturable(array $transactionData, array $payoneTransAc return strtolower((string)$transactionData['txaction']) === TransactionStatusService::ACTION_PAID; } - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); if (empty($salesChannelContext->getCustomer()?->getActiveBillingAddress()?->getPhoneNumber())) { $definitions[RequestConstants::PHONE] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayonePayolutionDebitPaymentHandler.php b/src/PaymentHandler/PayonePayolutionDebitPaymentHandler.php index b3b2e94f..9c8dc3b6 100644 --- a/src/PaymentHandler/PayonePayolutionDebitPaymentHandler.php +++ b/src/PaymentHandler/PayonePayolutionDebitPaymentHandler.php @@ -5,15 +5,16 @@ namespace PayonePayment\PaymentHandler; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayonePayolutionDebitPaymentHandler extends AbstractSynchronousPayonePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); $definitions['payolutionConsent'] = [new NotBlank()]; $definitions['payolutionMandate'] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayonePayolutionInstallmentPaymentHandler.php b/src/PaymentHandler/PayonePayolutionInstallmentPaymentHandler.php index 89e3f3f0..36d29f1c 100644 --- a/src/PaymentHandler/PayonePayolutionInstallmentPaymentHandler.php +++ b/src/PaymentHandler/PayonePayolutionInstallmentPaymentHandler.php @@ -17,6 +17,7 @@ use PayonePayment\RequestConstants; use Shopware\Core\Checkout\Payment\Cart\SyncPaymentTransactionStruct; use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\HttpFoundation\RequestStack; @@ -60,9 +61,9 @@ public function pay( parent::pay($transaction, $dataBag, $salesChannelContext); } - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); $definitions[RequestConstants::WORK_ORDER_ID] = [new NotBlank()]; $definitions[RequestConstants::CART_HASH] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayonePayolutionInvoicingPaymentHandler.php b/src/PaymentHandler/PayonePayolutionInvoicingPaymentHandler.php index c42064c1..eb80415c 100644 --- a/src/PaymentHandler/PayonePayolutionInvoicingPaymentHandler.php +++ b/src/PaymentHandler/PayonePayolutionInvoicingPaymentHandler.php @@ -7,15 +7,16 @@ use PayonePayment\Components\Validator\Birthday; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayonePayolutionInvoicingPaymentHandler extends AbstractSynchronousPayonePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); $definitions[RequestConstants::WORK_ORDER_ID] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayoneRatepayDebitPaymentHandler.php b/src/PaymentHandler/PayoneRatepayDebitPaymentHandler.php index 5fc63f29..1b3d07eb 100644 --- a/src/PaymentHandler/PayoneRatepayDebitPaymentHandler.php +++ b/src/PaymentHandler/PayoneRatepayDebitPaymentHandler.php @@ -8,15 +8,16 @@ use PayonePayment\Components\Validator\Iban; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayoneRatepayDebitPaymentHandler extends AbstractSynchronousPayonePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); $definitions['ratepayIban'] = [new NotBlank(), new Iban()]; $definitions[RequestConstants::BIRTHDAY] = [new NotBlank(), new Birthday()]; diff --git a/src/PaymentHandler/PayoneRatepayInstallmentPaymentHandler.php b/src/PaymentHandler/PayoneRatepayInstallmentPaymentHandler.php index 7ea34c43..1f8ec76d 100644 --- a/src/PaymentHandler/PayoneRatepayInstallmentPaymentHandler.php +++ b/src/PaymentHandler/PayoneRatepayInstallmentPaymentHandler.php @@ -8,15 +8,16 @@ use PayonePayment\Components\Validator\Iban; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayoneRatepayInstallmentPaymentHandler extends AbstractSynchronousPayonePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); if (empty($salesChannelContext->getCustomer()?->getActiveBillingAddress()?->getPhoneNumber())) { $definitions[RequestConstants::PHONE] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayoneRatepayInvoicingPaymentHandler.php b/src/PaymentHandler/PayoneRatepayInvoicingPaymentHandler.php index 9a730ad1..f0214446 100644 --- a/src/PaymentHandler/PayoneRatepayInvoicingPaymentHandler.php +++ b/src/PaymentHandler/PayoneRatepayInvoicingPaymentHandler.php @@ -7,15 +7,16 @@ use PayonePayment\Components\Validator\Birthday; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayoneRatepayInvoicingPaymentHandler extends AbstractSynchronousPayonePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); $definitions[RequestConstants::BIRTHDAY] = [new NotBlank(), new Birthday()]; diff --git a/src/PaymentHandler/PayoneSecureInvoicePaymentHandler.php b/src/PaymentHandler/PayoneSecureInvoicePaymentHandler.php index 70a46e3e..3967757a 100644 --- a/src/PaymentHandler/PayoneSecureInvoicePaymentHandler.php +++ b/src/PaymentHandler/PayoneSecureInvoicePaymentHandler.php @@ -6,14 +6,15 @@ use PayonePayment\Components\Validator\Birthday; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayoneSecureInvoicePaymentHandler extends AbstractPayoneInvoicePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); if (!$this->customerHasCompanyAddress($salesChannelContext)) { $definitions[RequestConstants::BIRTHDAY] = [new NotBlank(), new Birthday()]; diff --git a/src/PaymentHandler/PayoneSecuredDirectDebitPaymentHandler.php b/src/PaymentHandler/PayoneSecuredDirectDebitPaymentHandler.php index e6b3dd0d..d56f759f 100644 --- a/src/PaymentHandler/PayoneSecuredDirectDebitPaymentHandler.php +++ b/src/PaymentHandler/PayoneSecuredDirectDebitPaymentHandler.php @@ -8,6 +8,7 @@ use PayonePayment\Components\Validator\Iban; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; @@ -32,9 +33,9 @@ public static function isRefundable(array $transactionData): bool return static::matchesIsRefundableDefaults($transactionData); } - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); if (empty($salesChannelContext->getCustomer()?->getActiveBillingAddress()?->getPhoneNumber())) { $definitions[RequestConstants::PHONE] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayoneSecuredInstallmentPaymentHandler.php b/src/PaymentHandler/PayoneSecuredInstallmentPaymentHandler.php index 15c7a1ba..2fbf1406 100644 --- a/src/PaymentHandler/PayoneSecuredInstallmentPaymentHandler.php +++ b/src/PaymentHandler/PayoneSecuredInstallmentPaymentHandler.php @@ -8,15 +8,16 @@ use PayonePayment\Components\Validator\Iban; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayoneSecuredInstallmentPaymentHandler extends AbstractSynchronousPayonePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); if (empty($salesChannelContext->getCustomer()?->getActiveBillingAddress()?->getPhoneNumber())) { $definitions[RequestConstants::PHONE] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayoneSecuredInvoicePaymentHandler.php b/src/PaymentHandler/PayoneSecuredInvoicePaymentHandler.php index 97bea5f1..2dbcda15 100644 --- a/src/PaymentHandler/PayoneSecuredInvoicePaymentHandler.php +++ b/src/PaymentHandler/PayoneSecuredInvoicePaymentHandler.php @@ -7,6 +7,7 @@ use PayonePayment\Components\Validator\Birthday; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; use PayonePayment\RequestConstants; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; @@ -31,9 +32,9 @@ public static function isRefundable(array $transactionData): bool return static::matchesIsRefundableDefaults($transactionData); } - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); if (empty($salesChannelContext->getCustomer()?->getActiveBillingAddress()?->getPhoneNumber())) { $definitions[RequestConstants::PHONE] = [new NotBlank()]; diff --git a/src/PaymentHandler/PayoneTrustlyPaymentHandler.php b/src/PaymentHandler/PayoneTrustlyPaymentHandler.php index f4c75a74..9587aff2 100644 --- a/src/PaymentHandler/PayoneTrustlyPaymentHandler.php +++ b/src/PaymentHandler/PayoneTrustlyPaymentHandler.php @@ -7,14 +7,15 @@ use PayonePayment\Components\TransactionStatus\TransactionStatusService; use PayonePayment\Components\Validator\Iban; use PayonePayment\Payone\RequestParameter\Builder\AbstractRequestParameterBuilder; +use Shopware\Core\Framework\Validation\DataBag\DataBag; use Shopware\Core\System\SalesChannel\SalesChannelContext; use Symfony\Component\Validator\Constraints\NotBlank; class PayoneTrustlyPaymentHandler extends AbstractAsynchronousPayonePaymentHandler { - public function getValidationDefinitions(SalesChannelContext $salesChannelContext): array + public function getValidationDefinitions(DataBag $dataBag, SalesChannelContext $salesChannelContext): array { - $definitions = parent::getValidationDefinitions($salesChannelContext); + $definitions = parent::getValidationDefinitions($dataBag, $salesChannelContext); $definitions['iban'] = [new NotBlank(), new Iban()];