diff --git a/Components/Services/OrderBuilder/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandler.php b/Components/Services/OrderBuilder/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandler.php index 2d1f1905..213d8f69 100644 --- a/Components/Services/OrderBuilder/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandler.php +++ b/Components/Services/OrderBuilder/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandler.php @@ -101,7 +101,7 @@ protected function createExperienceContext(PayPalOrderParameter $orderParameter) } $experienceContext->setLocale(str_replace('_', '-', $shop->getLocale()->getLocale())); - $experienceContext->setLandingPage($generalSettings->getLandingPageType()); + $experienceContext->setLandingPage($this->getLandingPage($generalSettings)); if ($this->requiresUrls($orderParameter->getPaymentType())) { $experienceContext->setCancelUrl($this->returnUrlHelper->getCancelUrl($orderParameter->getBasketUniqueId(), $orderParameter->getPaymentToken())); @@ -118,6 +118,20 @@ protected function createExperienceContext(PayPalOrderParameter $orderParameter) return $experienceContext; } + /** + * @return string + */ + private function getLandingPage(General $generalSettings) + { + $currentLandingPage = $generalSettings->getLandingPageType(); + + if (!\in_array($currentLandingPage, ExperienceContext::LANDING_PAGE_TYPES)) { + return ExperienceContext::LANDING_PAGE_TYPE_NO_PREFERENCE; + } + + return $currentLandingPage; + } + /** * @param string $firstname * @param string $lastname diff --git a/PayPalBundle/V2/Api/Order/PaymentSource/ExperienceContext.php b/PayPalBundle/V2/Api/Order/PaymentSource/ExperienceContext.php index 86b825e4..2f4bf64a 100644 --- a/PayPalBundle/V2/Api/Order/PaymentSource/ExperienceContext.php +++ b/PayPalBundle/V2/Api/Order/PaymentSource/ExperienceContext.php @@ -12,6 +12,18 @@ class ExperienceContext extends PayPalApiStruct { + const LANDING_PAGE_TYPE_LOGIN = 'LOGIN'; + + const LANDING_PAGE_TYPE_BILLING = 'BILLING'; + + const LANDING_PAGE_TYPE_NO_PREFERENCE = 'NO_PREFERENCE'; + + const LANDING_PAGE_TYPES = [ + self::LANDING_PAGE_TYPE_BILLING, + self::LANDING_PAGE_TYPE_LOGIN, + self::LANDING_PAGE_TYPE_NO_PREFERENCE, + ]; + const PAYMENT_METHOD_PREFERENCE = 'IMMEDIATE_PAYMENT_REQUIRED'; const PAYMENT_METHOD = 'PAYPAL'; diff --git a/Resources/views/backend/paypal_unified_settings/view/landing_page_select.js b/Resources/views/backend/paypal_unified_settings/view/landing_page_select.js index 723758be..591a04b0 100644 --- a/Resources/views/backend/paypal_unified_settings/view/landing_page_select.js +++ b/Resources/views/backend/paypal_unified_settings/view/landing_page_select.js @@ -10,6 +10,7 @@ Ext.define('Shopware.apps.PaypalUnifiedSettings.view.LandingPageSelect', { queryMode: 'local', valueField: 'key', displayField: 'label', + value: 'NO_PREFERENCE', listConfig: { getInnerTpl: function() { diff --git a/Tests/Functional/Components/Services/OrderBuilder/OrderHandler/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandlerTest.php b/Tests/Functional/Components/Services/OrderBuilder/OrderHandler/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandlerTest.php index 8ac35cc2..59a2e2d3 100644 --- a/Tests/Functional/Components/Services/OrderBuilder/OrderHandler/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandlerTest.php +++ b/Tests/Functional/Components/Services/OrderBuilder/OrderHandler/PaymentSource/PaymentSourceValueHandler/AbstractPaymentSourceValueHandlerTest.php @@ -99,7 +99,6 @@ public function testCreateExperienceContext( $this->insertGeneralSettingsFromArray([ 'active' => true, 'brand_name' => 'AnyFancyFooBarBrandName', - 'landing_page_type' => 'NO_PREFERENCE', ]); $reflectionMethod = $this->getReflectionMethod(\get_class($orderValueHandler), 'createExperienceContext'); @@ -109,12 +108,13 @@ public function testCreateExperienceContext( static::assertInstanceOf(ExperienceContext::class, $result); static::assertSame('AnyFancyFooBarBrandName', $result->getBrandName()); - static::assertSame('NO_PREFERENCE', $result->getLandingPage()); static::assertSame(ExperienceContext::PAYMENT_METHOD_PREFERENCE, $result->getPaymentMethodPreference()); static::assertSame(ExperienceContext::PAYMENT_METHOD, $result->getPaymentMethodSelected()); static::assertSame(ExperienceContext::SHIPPING_PREFERENCE_PROVIDED_ADDRESS, $result->getShippingPreference()); static::assertSame(ExperienceContext::USER_ACTION_PAY_NOW, $result->getUserAction()); static::assertSame('de-DE', $result->getLocale()); + // check default landing page isset + static::assertSame('NO_PREFERENCE', $result->getLandingPage()); } /** diff --git a/plugin.xml b/plugin.xml index b7329af9..95bfe3d4 100644 --- a/plugin.xml +++ b/plugin.xml @@ -12,6 +12,15 @@ shopware AG + + + PT-13108 - Nutzt Standard-Landingpage, wenn die Einstellung nicht korrekt gesetzt wurde; + + + PT-13108 - Uses default landing page if setting is not set correctly; + + + PT-13099 - Bei wiederkehrendem Express-Checkout ist die PayPal Zahlungsart nun korrekt ausgewählt;