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;