Skip to content

Commit 04ee548

Browse files
MC-41598: Add PP PayLater component to Checkout page
- add configuration and show banner on checkout page for paypal-express
1 parent 4513145 commit 04ee548

File tree

14 files changed

+328
-16
lines changed

14 files changed

+328
-16
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Paypal\Model;
7+
8+
use Magento\Checkout\Model\ConfigProviderInterface;
9+
10+
/**
11+
* Provides configuration values for PayPal PayLater on the checkout page
12+
*/
13+
class PayLaterCheckoutConfigProvider implements ConfigProviderInterface
14+
{
15+
/**
16+
* PayLater checkout page placement
17+
*/
18+
private const PLACEMENT = 'payment';
19+
20+
/**
21+
* @var PayLaterConfig
22+
*/
23+
private $payLaterConfig;
24+
25+
/**
26+
* @var SdkUrl
27+
*/
28+
private $sdkUrl;
29+
30+
/**
31+
* @param PayLaterConfig $payLaterConfig
32+
* @param SdkUrl $sdkUrl
33+
*/
34+
public function __construct(PayLaterConfig $payLaterConfig, SdkUrl $sdkUrl)
35+
{
36+
$this->payLaterConfig = $payLaterConfig;
37+
$this->sdkUrl = $sdkUrl;
38+
}
39+
40+
/**
41+
* @inheritdoc
42+
*/
43+
public function getConfig()
44+
{
45+
$attributes = $this->payLaterConfig->getStyleConfig(self::PLACEMENT);
46+
$attributes['data-pp-placement'] = self::PLACEMENT;
47+
48+
$config['payment']['paypalPayLater']['enabled'] = $this->payLaterConfig->isEnabled(self::PLACEMENT);
49+
$config['payment']['paypalPayLater']['config'] = [
50+
'sdkUrl' => $this->sdkUrl->getUrl(),
51+
'attributes' => $attributes
52+
];
53+
54+
return $config;
55+
}
56+
}

app/code/Magento/Paypal/Model/System/Config/Source/PayLater/Position.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,16 @@ public function getPositionsCPP(): array
2424
'near_pp_button' => __('Near PayPal Credit checkout button')
2525
];
2626
}
27+
28+
/**
29+
* PayLater positions source getter for Checkout Page
30+
*
31+
* @return array
32+
*/
33+
public function getPositionsCheckout(): array
34+
{
35+
return [
36+
'near_pp_button' => __('Near PayPal Credit checkout button')
37+
];
38+
}
2739
}

app/code/Magento/Paypal/etc/adminhtml/system/express_checkout.xml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,97 @@
413413
</depends>
414414
</field>
415415
</group>
416+
<group id="settings_paylater_paymentpage" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="40">
417+
<label>Checkout Page</label>
418+
<depends>
419+
<field id="paylater_enabled">1</field>
420+
</depends>
421+
<field id="paylater_paymentpage_display" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="10">
422+
<label>Display</label>
423+
<config_path>payment/paypal_paylater/paymentpage_display</config_path>
424+
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
425+
<attribute type="shared">1</attribute>
426+
</field>
427+
<field id="paylater_paymentpage_position" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="20">
428+
<label>Position</label>
429+
<config_path>payment/paypal_paylater/paymentpage_position</config_path>
430+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\Position::getPositionsCheckout</source_model>
431+
<attribute type="shared">1</attribute>
432+
<depends>
433+
<field id="paylater_paymentpage_display">1</field>
434+
</depends>
435+
</field>
436+
<field id="paylater_paymentpage_stylelayout" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="30">
437+
<label>Style Layout</label>
438+
<config_path>payment/paypal_paylater/paymentpage_stylelayout</config_path>
439+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\StyleLayout</source_model>
440+
<attribute type="shared">1</attribute>
441+
<depends>
442+
<field id="paylater_paymentpage_display">1</field>
443+
</depends>
444+
</field>
445+
<field id="paylater_paymentpage_logotype" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="40">
446+
<label>Logo Type</label>
447+
<config_path>payment/paypal_paylater/paymentpage_logotype</config_path>
448+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\LogoType</source_model>
449+
<attribute type="shared">1</attribute>
450+
<depends>
451+
<field id="paylater_paymentpage_display">1</field>
452+
<field id="paylater_paymentpage_stylelayout">text</field>
453+
</depends>
454+
</field>
455+
<field id="paylater_paymentpage_logoposition" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="50">
456+
<label>Logo Position</label>
457+
<config_path>payment/paypal_paylater/paymentpage_logoposition</config_path>
458+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\LogoPosition</source_model>
459+
<attribute type="shared">1</attribute>
460+
<depends>
461+
<field id="paylater_paymentpage_display">1</field>
462+
<field id="paylater_paymentpage_stylelayout">text</field>
463+
<field id="paylater_paymentpage_logotype" separator=",">primary,alternative</field>
464+
</depends>
465+
</field>
466+
<field id="paylater_paymentpage_textcolor" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="60">
467+
<label>Text Color</label>
468+
<config_path>payment/paypal_paylater/paymentpage_textcolor</config_path>
469+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\TextColor</source_model>
470+
<attribute type="shared">1</attribute>
471+
<depends>
472+
<field id="paylater_paymentpage_display">1</field>
473+
<field id="paylater_paymentpage_stylelayout">text</field>
474+
</depends>
475+
</field>
476+
<field id="paylater_paymentpage_textsize" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="70">
477+
<label>Text Size</label>
478+
<config_path>payment/paypal_paylater/paymentpage_textsize</config_path>
479+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\TextSize</source_model>
480+
<attribute type="shared">1</attribute>
481+
<depends>
482+
<field id="paylater_paymentpage_display">1</field>
483+
<field id="paylater_paymentpage_stylelayout">text</field>
484+
</depends>
485+
</field>
486+
<field id="paylater_paymentpage_ratio" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="80">
487+
<label>Ratio</label>
488+
<config_path>payment/paypal_paylater/paymentpage_ratio</config_path>
489+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\Ratio</source_model>
490+
<attribute type="shared">1</attribute>
491+
<depends>
492+
<field id="paylater_paymentpage_display">1</field>
493+
<field id="paylater_paymentpage_stylelayout">flex</field>
494+
</depends>
495+
</field>
496+
<field id="paylater_paymentpage_color" translate="label" type="select" showInDefault="1" showInWebsite="1" sortOrder="90">
497+
<label>Color</label>
498+
<config_path>payment/paypal_paylater/paymentpage_color</config_path>
499+
<source_model>Magento\Paypal\Model\System\Config\Source\PayLater\Color</source_model>
500+
<attribute type="shared">1</attribute>
501+
<depends>
502+
<field id="paylater_paymentpage_display">1</field>
503+
<field id="paylater_paymentpage_stylelayout">flex</field>
504+
</depends>
505+
</field>
506+
</group>
416507
</group>
417508
</group>
418509
<group id="settings_ec" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="20">

app/code/Magento/Paypal/etc/adminhtml/system/payflow_advanced.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,21 @@
229229
<field id="paylater_productpage_ratio" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_productpage/paylater_productpage_ratio"/>
230230
<field id="paylater_productpage_color" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_productpage/paylater_productpage_color"/>
231231
</group>
232+
<group id="advanced_settings_paylater_paymentpage" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="40">
233+
<label>Checkout Page</label>
234+
<depends>
235+
<field id="paylater_enabled">1</field>
236+
</depends>
237+
<field id="paylater_paymentpage_display" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_display"/>
238+
<field id="paylater_paymentpage_position" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_position"/>
239+
<field id="paylater_paymentpage_stylelayout" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_stylelayout"/>
240+
<field id="paylater_paymentpage_logotype" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_logotype"/>
241+
<field id="paylater_paymentpage_logoposition" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_logoposition"/>
242+
<field id="paylater_paymentpage_textcolor" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_textcolor"/>
243+
<field id="paylater_paymentpage_textsize" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_textsize"/>
244+
<field id="paylater_paymentpage_ratio" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_ratio"/>
245+
<field id="paylater_paymentpage_color" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_color"/>
246+
</group>
232247
</group>
233248
</group>
234249
<group id="settings_payments_advanced" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="20">

app/code/Magento/Paypal/etc/adminhtml/system/payflow_link.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,21 @@
241241
<field id="paylater_productpage_ratio" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_productpage/paylater_productpage_ratio"/>
242242
<field id="paylater_productpage_color" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_productpage/paylater_productpage_color"/>
243243
</group>
244+
<group id="payflow_link_settings_paylater_paymentpage" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="40">
245+
<label>Checkout Page</label>
246+
<depends>
247+
<field id="paylater_enabled">1</field>
248+
</depends>
249+
<field id="paylater_paymentpage_display" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_display"/>
250+
<field id="paylater_paymentpage_position" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_position"/>
251+
<field id="paylater_paymentpage_stylelayout" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_stylelayout"/>
252+
<field id="paylater_paymentpage_logotype" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_logotype"/>
253+
<field id="paylater_paymentpage_logoposition" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_logoposition"/>
254+
<field id="paylater_paymentpage_textcolor" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_textcolor"/>
255+
<field id="paylater_paymentpage_textsize" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_textsize"/>
256+
<field id="paylater_paymentpage_ratio" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_ratio"/>
257+
<field id="paylater_paymentpage_color" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_color"/>
258+
</group>
244259
</group>
245260
</group>
246261
<group id="settings_payflow_link" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="20">

app/code/Magento/Paypal/etc/adminhtml/system/payments_pro_hosted_solution.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,21 @@
167167
<field id="paylater_productpage_ratio" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_productpage/paylater_productpage_ratio"/>
168168
<field id="paylater_productpage_color" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_productpage/paylater_productpage_color"/>
169169
</group>
170+
<group id="pphs_settings_paylater_paymentpage" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="40">
171+
<label>Checkout Page</label>
172+
<depends>
173+
<field id="paylater_enabled">1</field>
174+
</depends>
175+
<field id="paylater_paymentpage_display" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_display"/>
176+
<field id="paylater_paymentpage_position" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_position"/>
177+
<field id="paylater_paymentpage_stylelayout" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_stylelayout"/>
178+
<field id="paylater_paymentpage_logotype" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_logotype"/>
179+
<field id="paylater_paymentpage_logoposition" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_logoposition"/>
180+
<field id="paylater_paymentpage_textcolor" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_textcolor"/>
181+
<field id="paylater_paymentpage_textsize" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_textsize"/>
182+
<field id="paylater_paymentpage_ratio" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_ratio"/>
183+
<field id="paylater_paymentpage_color" translate="label" extends="payment_all_paypal/express_checkout/express_checkout_required/advertise_paylater/settings_paylater_paymentpage/paylater_paymentpage_color"/>
184+
</group>
170185
</group>
171186
</group>
172187
<group id="pphs_settings" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="20">

0 commit comments

Comments
 (0)