From 001e3d96faa95dc363e97b2596ace81f0e033a5d Mon Sep 17 00:00:00 2001 From: paeddl Date: Wed, 18 Feb 2026 20:30:17 +0100 Subject: [PATCH] 5.12.2 --- CHANGELOG_de-DE.md | 9 +++++ CHANGELOG_en-GB.md | 9 +++++ composer.json | 2 +- .../UnzerWeroPaymentHandler.php | 3 +- .../UnzerPaymentConfigurationController.php | 5 +-- .../ExpressButtonsEventListener.php | 35 ++++++++++++++++--- .../unzer-payment-settings.html.twig | 1 + .../unzer-payment-settings.scss | 9 +++++ .../administration/src/snippets/de-DE.json | 3 +- .../administration/src/snippets/en-GB.json | 3 +- .../unzer-payment.express-buttons.plugin.js | 22 +++++------- .../config/dependencies/event_listeners.xml | 1 + src/Resources/config/settings.xml | 2 ++ 13 files changed, 80 insertions(+), 24 deletions(-) diff --git a/CHANGELOG_de-DE.md b/CHANGELOG_de-DE.md index e65bde99..f3a1bbd8 100644 --- a/CHANGELOG_de-DE.md +++ b/CHANGELOG_de-DE.md @@ -1,3 +1,12 @@ +# 5.12.2 +* Fehler behoben, bei dem die AGB nicht bis zum Akzeptieren-Häkchen gescrollt wurden +* Falsche UI-Komponente für B2B-Rechnung korrigiert +* Fehlerhafte Kundendaten für UPL behoben +* Fehlerbehebung für Apple Pay in Nicht-Safari-Browsern +* Apple-Pay-Button wird nun immer angezeigt, wenn Apple Pay aktiv ist +* Problem behoben, bei dem Apple Pay nicht immer funktioniert hat +* Buchungsmodus-Fix für Wero + # 5.12.1 * Minor Fix am Customer-Objekt für besseren PayPal-B2B-Support diff --git a/CHANGELOG_en-GB.md b/CHANGELOG_en-GB.md index a3bad663..7dc00597 100644 --- a/CHANGELOG_en-GB.md +++ b/CHANGELOG_en-GB.md @@ -1,3 +1,12 @@ +# 5.12.2 +* Fix for Terms and Conditions no scroll to accept checkmark +* Fix incorrect UI Comp. for B2B invoice +* Fix for incorrect customer data for UPL +* Fix for Apple Pay in Non-Safari browsers +* Fix to always show Apple Pay button when Apple Pay is active +* Fix for Apple Pay not always working +* Booking mode fix for Wero + # 5.12.1 * Minor fix to customer object for better Paypal B2B support diff --git a/composer.json b/composer.json index 983fcb33..f9559ba9 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "unzerdev/shopware6", "description": "Unzer payment integration for Shopware 6", - "version": "5.12.1", + "version": "5.12.2", "type": "shopware-platform-plugin", "license": "Apache-2.0", "minimum-stability": "dev", diff --git a/src/Components/PaymentHandler/UnzerWeroPaymentHandler.php b/src/Components/PaymentHandler/UnzerWeroPaymentHandler.php index cd6361f2..c80da54d 100644 --- a/src/Components/PaymentHandler/UnzerWeroPaymentHandler.php +++ b/src/Components/PaymentHandler/UnzerWeroPaymentHandler.php @@ -20,6 +20,7 @@ protected function getUnzerPaymentTypeObject(): Wero protected function setBookingMode(): void { - $this->bookingMode = $this->pluginConfig->get(ConfigReader::CONFIG_KEY_BOOKING_MODE_WERO, BookingMode::CHARGE); + $this->bookingMode = BookingMode::CHARGE; + #$this->bookingMode = $this->pluginConfig->get(ConfigReader::CONFIG_KEY_BOOKING_MODE_WERO, BookingMode::CHARGE); } } diff --git a/src/Controllers/Administration/UnzerPaymentConfigurationController.php b/src/Controllers/Administration/UnzerPaymentConfigurationController.php index 4a58b0d5..1c23a1b1 100644 --- a/src/Controllers/Administration/UnzerPaymentConfigurationController.php +++ b/src/Controllers/Administration/UnzerPaymentConfigurationController.php @@ -10,6 +10,7 @@ use Shopware\Core\Framework\Validation\DataBag\RequestDataBag; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use UnzerPayment6\Components\ClientFactory\ClientFactoryInterface; @@ -90,10 +91,10 @@ public function validateCredentials(RequestDataBag $dataBag): JsonResponse * @Route("/api/_action/unzer-payment/get-google-pay-gateway-merchant-id", name="api.action.unzer.get.google.pay.gateway.merchant.id", methods={"GET"}) * @Route("/api/v{version}/_action/unzer-payment/get-google-pay-gateway-merchant-id", name="api.action.unzer.get.google.pay.gateway.merchant.id.version", methods={"GET"}) */ - public function getGooglePayGatewayMerchantId(RequestDataBag $dataBag): JsonResponse + public function getGooglePayGatewayMerchantId(Request $request): JsonResponse { try { - $salesChannelId = $dataBag->get('salesChannelId', ''); + $salesChannelId = $request->get('salesChannelId', ''); /** @var ConfigReader $configReader */ $configReader = $this->container->get(ConfigReader::class); diff --git a/src/EventListeners/ExpressButtons/ExpressButtonsEventListener.php b/src/EventListeners/ExpressButtons/ExpressButtonsEventListener.php index 280c61c6..7b3df4ff 100644 --- a/src/EventListeners/ExpressButtons/ExpressButtonsEventListener.php +++ b/src/EventListeners/ExpressButtons/ExpressButtonsEventListener.php @@ -4,7 +4,12 @@ namespace UnzerPayment6\EventListeners\ExpressButtons; +use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository; +use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria; +use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter; +use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\MultiFilter; use Shopware\Core\Framework\Struct\ArrayStruct; +use Shopware\Core\System\SalesChannel\SalesChannelContext; use Shopware\Storefront\Page\Checkout\Cart\CheckoutCartPageLoadedEvent; use Shopware\Storefront\Page\Checkout\Offcanvas\OffcanvasCartPageLoadedEvent; use Shopware\Storefront\Page\PageLoadedEvent; @@ -14,12 +19,14 @@ use UnzerPayment6\Components\Storefront\ExtensionFactory; use UnzerPayment6\Components\Struct\PageExtension\Checkout\Confirm\ApplePayV2PageExtension; use UnzerPayment6\Components\Struct\PageExtension\Checkout\Confirm\GooglePayPageExtension; +use UnzerPayment6\Installer\PaymentInstaller; class ExpressButtonsEventListener implements EventSubscriberInterface { public function __construct( private ConfigReaderInterface $configReader, private ExtensionFactory $extensionFactory, + private EntityRepository $salesChannelRepository ) { } @@ -36,16 +43,16 @@ public function addExpressButtons(PageLoadedEvent $event): void $config = $this->configReader->read($event->getSalesChannelContext()->getSalesChannel()->getId()); if (!$config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_PAYPAL) - && !$config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_GOOGLE) - && !$config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_APPLEPAY)) { + && !$config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_GOOGLE) + && !$config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_APPLEPAY)) { return; } $event->getPage()->addExtension('UnzerExpressButtons', new ArrayStruct([ 'publicKey' => $config->get(ConfigReader::CONFIG_KEY_PUBLIC_KEY), - 'usePaypal' => $config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_PAYPAL), - 'useGooglePay' => $config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_GOOGLE), - 'useApplePay' => $config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_APPLEPAY), + 'usePaypal' => $config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_PAYPAL) && $this->isPaymentMethodActive(PaymentInstaller::PAYMENT_ID_PAYPAL, $event->getSalesChannelContext()), + 'useGooglePay' => $config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_GOOGLE) && $this->isPaymentMethodActive(PaymentInstaller::PAYMENT_ID_GOOGLE_PAY, $event->getSalesChannelContext()), + 'useApplePay' => $config->get(ConfigReader::CONFIG_KEY_USE_EXPRESS_APPLEPAY) && $this->isPaymentMethodActive(PaymentInstaller::PAYMENT_ID_APPLE_PAY_V2, $event->getSalesChannelContext()), ])); $googlePayExtension = $this->extensionFactory->getGooglePayExtension($event->getSalesChannelContext()->getSalesChannelId()); $event->getPage()->addExtension(GooglePayPageExtension::EXTENSION_NAME, $googlePayExtension); @@ -53,4 +60,22 @@ public function addExpressButtons(PageLoadedEvent $event): void $applePayExtension = $this->extensionFactory->getApplePayExtension($event->getSalesChannelContext()->getSalesChannelId()); $event->getPage()->addExtension(ApplePayV2PageExtension::EXTENSION_NAME, $applePayExtension); } + + public function isPaymentMethodActive(string $paymentMethodId, SalesChannelContext $context): bool + { + $criteria = new Criteria(); + $criteria->setLimit(1); + $criteria->addFilter( + new MultiFilter( + MultiFilter::CONNECTION_AND, + [ + new EqualsFilter('id', $context->getSalesChannel()->getId()), + new EqualsFilter('paymentMethods.id', $paymentMethodId), + new EqualsFilter('paymentMethods.active', true), + ] + ) + ); + + return $this->salesChannelRepository->searchIds($criteria, $context->getContext())->firstId() !== null; + } } diff --git a/src/Resources/app/administration/src/module/unzer-payment-configuration/page/unzer-payment-settings/unzer-payment-settings.html.twig b/src/Resources/app/administration/src/module/unzer-payment-configuration/page/unzer-payment-settings/unzer-payment-settings.html.twig index 265c83db..b89179d5 100644 --- a/src/Resources/app/administration/src/module/unzer-payment-configuration/page/unzer-payment-settings/unzer-payment-settings.html.twig +++ b/src/Resources/app/administration/src/module/unzer-payment-configuration/page/unzer-payment-settings/unzer-payment-settings.html.twig @@ -86,6 +86,7 @@ size="16px" :class="{'unzer-additional-keys__title-icon': true, 'is-expanded': isAdditionalKeysExpanded}" > +
{ @@ -194,7 +184,8 @@ export default class UnzerPaymentExpressButtonsPlugin extends Plugin { onPaymentAuthorizedCallback: async ( paymentData, approve, - reject + reject, + event ) => { console.log('paymentData:', paymentData); let shippingContact = event.payment.shippingContact; // Store the shipping contact data for express checkout @@ -205,6 +196,11 @@ export default class UnzerPaymentExpressButtonsPlugin extends Plugin { // You can create customer here based on paymentData const response = await unzerExpressPayment.submit(); + if (response.submitResponse.success) { + approve(); + } else { + reject(); + } const paymentTypeId = response.submitResponse.data.id; console.log( response, diff --git a/src/Resources/config/dependencies/event_listeners.xml b/src/Resources/config/dependencies/event_listeners.xml index 5e9cf7cc..0086fc4d 100644 --- a/src/Resources/config/dependencies/event_listeners.xml +++ b/src/Resources/config/dependencies/event_listeners.xml @@ -67,6 +67,7 @@ + diff --git a/src/Resources/config/settings.xml b/src/Resources/config/settings.xml index 320578fa..1a0170c0 100755 --- a/src/Resources/config/settings.xml +++ b/src/Resources/config/settings.xml @@ -117,6 +117,7 @@ + paymentSettingsSaveDevices