diff --git a/Block/Adminhtml/System/Config/Button/Update.php b/Block/Adminhtml/System/Config/Button/Update.php index afb06f3..70fdac9 100644 --- a/Block/Adminhtml/System/Config/Button/Update.php +++ b/Block/Adminhtml/System/Config/Button/Update.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Block\Adminhtml\System\Config\Button; diff --git a/Block/Adminhtml/System/Config/Form/Field/Disable.php b/Block/Adminhtml/System/Config/Form/Field/Disable.php index 5428eab..df79854 100644 --- a/Block/Adminhtml/System/Config/Form/Field/Disable.php +++ b/Block/Adminhtml/System/Config/Form/Field/Disable.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Block\Adminhtml\System\Config\Form\Field; diff --git a/Block/Adminhtml/System/Config/Form/Field/Label.php b/Block/Adminhtml/System/Config/Form/Field/Label.php index a9a86e9..4e8d381 100644 --- a/Block/Adminhtml/System/Config/Form/Field/Label.php +++ b/Block/Adminhtml/System/Config/Form/Field/Label.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Block\Adminhtml\System\Config\Form\Field; diff --git a/Block/Adminhtml/System/Config/Form/Field/cbtLabel.php b/Block/Adminhtml/System/Config/Form/Field/cbtLabel.php index 8280216..99fd78a 100644 --- a/Block/Adminhtml/System/Config/Form/Field/cbtLabel.php +++ b/Block/Adminhtml/System/Config/Form/Field/cbtLabel.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Block\Adminhtml\System\Config\Form\Field; diff --git a/Block/Catalog/Installments.php b/Block/Catalog/Installments.php index 3685647..509b620 100644 --- a/Block/Catalog/Installments.php +++ b/Block/Catalog/Installments.php @@ -113,6 +113,14 @@ public function getTypeOfProduct() return $product->getTypeId(); } + /** + * @return \Magento\Catalog\Model\Product|null + */ + public function getProduct() + { + return $this->registry->registry('product'); + } + /** * @return string */ diff --git a/Block/Info.php b/Block/Info.php index 48886a4..01621bd 100644 --- a/Block/Info.php +++ b/Block/Info.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Block; diff --git a/CHANGELOG.md b/CHANGELOG.md index 049fefb..85dbd3a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Afterpay Magento 2 Extension Changelog +## Version 3.4.3 + +_Wed 08 Sep 2021_ + +### Supported Editions & Versions + +Tested and verified in clean installations of Magento 2: + +- Magento Community Edition (CE) version 2.4.3 +- Magento Enterprise Edition (EE) version 2.4.2 + +### Highlights + +- Disabled Express Checkout for virtual products. +- Improved the asset cache handling. +- Improved customer email address validation to allow symbols such as “+”. +- Improved debug logging. + +--- ## Version 3.4.2 _Wed 16 June 2021_ diff --git a/Controller/Payment/Express.php b/Controller/Payment/Express.php index 6bf395c..6ac08e2 100644 --- a/Controller/Payment/Express.php +++ b/Controller/Payment/Express.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Controller\Payment; @@ -63,7 +63,8 @@ class Express extends \Magento\Framework\App\Action\Action protected $_timezone; - + private \Afterpay\Afterpay\Model\ExpressPayment\ShippingListProvider $shippingListProvider; + /** * Response constructor. * @@ -71,42 +72,44 @@ class Express extends \Magento\Framework\App\Action\Action * @param \Magento\Checkout\Model\Session $checkoutSession */ public function __construct( - \Magento\Framework\App\Action\Context $context, + \Magento\Framework\App\Action\Context $context, \Magento\Framework\ObjectManagerInterface $objectManager, - CheckoutSession $checkoutSession, - QuoteFactory $quoteFactory, - AfterpayConfig $afterpayConfig, - AfterpayOrderTokenV2 $afterpayOrderTokenV2, - TokenCheck $tokenCheck, - JsonHelper $jsonHelper, - Helper $helper, - QuoteRepository $quoteRepository, - JsonResultFactory $jsonResultFactory, - QuoteValidator $quoteValidator, + CheckoutSession $checkoutSession, + QuoteFactory $quoteFactory, + AfterpayConfig $afterpayConfig, + AfterpayOrderTokenV2 $afterpayOrderTokenV2, + TokenCheck $tokenCheck, + JsonHelper $jsonHelper, + Helper $helper, + QuoteRepository $quoteRepository, + JsonResultFactory $jsonResultFactory, + QuoteValidator $quoteValidator, \Afterpay\Afterpay\Model\Adapter\V2\AfterpayOrderDirectCapture $directCapture, \Afterpay\Afterpay\Model\Adapter\V2\AfterpayOrderAuthRequest $authRequest, - \Afterpay\Afterpay\Model\Adapter\AfterpayPayment $afterpayApiPayment, + \Afterpay\Afterpay\Model\Adapter\AfterpayPayment $afterpayApiPayment, \Magento\Quote\Model\QuoteManagement $quoteManagement, ExpressPayment $expressPayment, - \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone) - { - $this->_checkoutSession = $checkoutSession; + \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone, + \Afterpay\Afterpay\Model\ExpressPayment\ShippingListProvider $shippingListProvider + ) { + $this->_checkoutSession = $checkoutSession; $this->_objectManager = $objectManager; $this->_quoteFactory = $quoteFactory; $this->_afterpayConfig = $afterpayConfig; $this->_afterpayOrderTokenV2 = $afterpayOrderTokenV2; $this->_tokenCheck = $tokenCheck; $this->_jsonHelper = $jsonHelper; - $this->_helper = $helper; + $this->_helper = $helper; $this->_quoteRepository = $quoteRepository; $this->_jsonResultFactory = $jsonResultFactory; - $this->_quoteValidator = $quoteValidator; + $this->_quoteValidator = $quoteValidator; $this->_directCapture = $directCapture; $this->_authRequest = $authRequest; $this->_afterpayApiPayment = $afterpayApiPayment; $this->_quoteManagement = $quoteManagement; - $this->_expressPayment=$expressPayment; + $this->_expressPayment=$expressPayment; $this->_timezone = $timezone; + $this->shippingListProvider = $shippingListProvider; parent::__construct($context); } @@ -244,42 +247,8 @@ public function _change() $this->_checkoutSession->replaceQuote($quote); } - $shippingData = $this->_expressPayment->getShippingDetails($quote); - $shippingList = array(); - if (! empty($shippingData)) { - foreach ($shippingData as $rateData) { - $shippingAmount = $rateData->getBaseAmount(); - $taxAmount = $shippingAddress->getBaseTaxAmount(); - $orderAmount = $quote->getBaseSubtotalWithDiscount() + $shippingAmount + $taxAmount; - if($this->_expressPayment->isValidOrderAmount($orderAmount)){ - $carrierCode = $rateData->getCarrierCode(); - $methodCode = $rateData->getMethodCode(); - $shippingOptions['id'] = $carrierCode . "_" . $methodCode; - $shippingOptions['name'] = $rateData->getCarrierTitle(); - $shippingOptions['description'] = $rateData->getCarrierTitle(); - - - $shippingOptions['shippingAmount'] = array( - 'amount' => $this->_expressPayment->formatAmount($shippingAmount), - 'currency' => $quote->getStoreCurrencyCode() - ); - - - $shippingOptions['taxAmount'] = array( - 'amount' => $this->_expressPayment->formatAmount($taxAmount), - 'currency' => $quote->getBaseCurrencyCode() - ); - - - $shippingOptions['orderAmount'] = array( - 'amount' => $this->_expressPayment->formatAmount($orderAmount), - 'currency' => $quote->getBaseCurrencyCode() - ); - - $shippingList[] = $shippingOptions; - } - } - } + $shippingList = $this->shippingListProvider->provide($quote); + $this->_helper->debug("Shipping Estimation Rates", $shippingList); if (! empty($shippingList)) { $result = $result = $this->_jsonResultFactory->create()->setData([ diff --git a/Controller/Payment/Process.php b/Controller/Payment/Process.php index 679ae00..0a23e3d 100644 --- a/Controller/Payment/Process.php +++ b/Controller/Payment/Process.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Controller\Payment; diff --git a/Controller/Payment/Response.php b/Controller/Payment/Response.php index 2c976bd..899bdc5 100644 --- a/Controller/Payment/Response.php +++ b/Controller/Payment/Response.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Controller\Payment; diff --git a/Helper/Category.php b/Helper/Category.php index 2f7b196..4d605f5 100644 --- a/Helper/Category.php +++ b/Helper/Category.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Helper; diff --git a/Helper/Data.php b/Helper/Data.php index 150817f..38a6908 100644 --- a/Helper/Data.php +++ b/Helper/Data.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Helper; diff --git a/LICENSE.md b/LICENSE.md index 9a2e653..743fe6c 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2016-2020 Afterpay Touch Group Limited + Copyright 2016-2021 Afterpay Touch Group Limited Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Model/Adapter/Afterpay/AfterpayClient.php b/Model/Adapter/Afterpay/AfterpayClient.php index 3e86d55..926f620 100644 --- a/Model/Adapter/Afterpay/AfterpayClient.php +++ b/Model/Adapter/Afterpay/AfterpayClient.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\Afterpay; diff --git a/Model/Adapter/Afterpay/AfterpayResponse.php b/Model/Adapter/Afterpay/AfterpayResponse.php index 0da4708..d8f65a4 100644 --- a/Model/Adapter/Afterpay/AfterpayResponse.php +++ b/Model/Adapter/Afterpay/AfterpayResponse.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\Afterpay; diff --git a/Model/Adapter/Afterpay/Call.php b/Model/Adapter/Afterpay/Call.php index 5bb1bf5..35ae91a 100644 --- a/Model/Adapter/Afterpay/Call.php +++ b/Model/Adapter/Afterpay/Call.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\Afterpay; diff --git a/Model/Adapter/AfterpayExpressPayment.php b/Model/Adapter/AfterpayExpressPayment.php index 7024c41..a5cae1d 100644 --- a/Model/Adapter/AfterpayExpressPayment.php +++ b/Model/Adapter/AfterpayExpressPayment.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter; @@ -13,7 +13,6 @@ use Magento\Framework\Json\Helper\Data as JsonHelper; use Afterpay\Afterpay\Helper\Data as Helper; use Magento\Quote\Model\ResourceModel\Quote as QuoteRepository; -use Magento\Quote\Model\Cart\ShippingMethodConverter as Converter; class AfterpayExpressPayment { @@ -31,8 +30,6 @@ class AfterpayExpressPayment protected $_quoteRepository; - protected $_totalsCollector; - protected $_paymentCapture; protected $_transactionRepository; @@ -43,23 +40,11 @@ class AfterpayExpressPayment protected $_paymentRepository; - /** - * Shipping method converter - * - * @var \Magento\Quote\Model\Cart\ShippingMethodConverter - */ - protected $_converter; - /** * @var Payovertime $_payOverTime */ protected $_payOverTime; - /** - * Response constructor. - * - * @param \Magento\Framework\App\Action\Context $context - * @param \Magento\Checkout\Model\Session $checkoutSession - */ + public function __construct( CheckoutSession $checkoutSession, \Magento\Sales\Model\OrderRepository $orderRepository, @@ -68,8 +53,6 @@ public function __construct( JsonHelper $jsonHelper, Helper $helper, QuoteRepository $quoteRepository, - \Magento\Quote\Model\Quote\TotalsCollector $totalsCollector, - Converter $converter, \Afterpay\Afterpay\Model\Adapter\V2\AfterpayOrderPaymentCapture $paymentCapture, \Magento\Sales\Model\Order\Payment\Transaction\Repository $transactionRepository, \Magento\Framework\ObjectManagerInterface $objectManager, @@ -85,8 +68,6 @@ public function __construct( $this->_jsonHelper = $jsonHelper; $this->_helper = $helper; $this->_quoteRepository = $quoteRepository; - $this->_totalsCollector = $totalsCollector; - $this->_converter = $converter; $this->_paymentCapture = $paymentCapture; $this->_transactionRepository = $transactionRepository; $this->_objectManager = $objectManager; @@ -143,34 +124,6 @@ public function getRegionId($stateCode, $countryCode) return $region->loadByCode($stateCode, $countryCode)->getId(); } - /** - * Get list of available shipping methods - * - * @param \Magento\Quote\Model\Quote $quote - * @return \Magento\Quote\Api\Data\ShippingMethodInterface[] - */ - - public function getShippingDetails($quote) - { - $output = []; - if (! $quote->isVirtual()) { - $shippingAddress = $quote->getShippingAddress(); - $shippingAddress->setCollectShippingRates(true); - - $this->_totalsCollector->collectAddressTotals($quote, $shippingAddress); - $shippingRates = $shippingAddress->getGroupedAllShippingRates(); - foreach ($shippingRates as $carrierRates) { - foreach ($carrierRates as $rate) { - $output[] = $this->_converter->modelToDataObject($rate, $quote->getQuoteCurrencyCode()); - } - } - } - return $output; - - } - - - /** * Format amount upto 2 decimal * @@ -239,6 +192,11 @@ public function setOrderData($data) $customerSession = $this->_objectManager->get('Magento\Customer\Model\Session'); $customerRepository = $this->_objectManager->get('Magento\Customer\Api\CustomerRepositoryInterface'); + //Set Street Data + $line1 = !empty($data['shipping']['line1']) ? $data['shipping']['line1'] : " "; + $line2 = !empty($data['shipping']['line2']) ? ", " . $data['shipping']['line2'] : ""; + $setStreetAddress= $line1 . $line2; + if ($customerSession->isLoggedIn()) { $customerId = $customerSession->getCustomer()->getId(); $customer = $customerRepository->getById($customerId); @@ -267,10 +225,7 @@ public function setOrderData($data) ->setLastname($lastName) ->setEmail($data['consumer']['email']) ->setTelephone($data['shipping']['phoneNumber']) - ->setStreet(array( - $data['shipping']['line1'], - isset($data['shipping']['line2']) ? $data['shipping']['line2'] : null - )) + ->setStreet($setStreetAddress) ->setCity($data['shipping']['area1']) ->setRegion($data['shipping']['region']) ->setRegionId($this->getRegionId($data['shipping']['region'], $data['shipping']['countryCode'])) @@ -287,10 +242,7 @@ public function setOrderData($data) ->setLastname($lastName) ->setEmail($data['consumer']['email']) ->setTelephone($data['shipping']['phoneNumber']) - ->setStreet(array( - $data['shipping']['line1'], - isset($data['shipping']['line2']) ? $data['shipping']['line2'] : null - )) + ->setStreet($setStreetAddress) ->setCity($data['shipping']['area1']) ->setRegion($data['shipping']['region']) ->setRegionId($this->getRegionId($data['shipping']['region'], $data['shipping']['countryCode'])) diff --git a/Model/Adapter/AfterpayPayment.php b/Model/Adapter/AfterpayPayment.php index 7adda43..82076f4 100644 --- a/Model/Adapter/AfterpayPayment.php +++ b/Model/Adapter/AfterpayPayment.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter; diff --git a/Model/Adapter/AfterpayTotalLimit.php b/Model/Adapter/AfterpayTotalLimit.php index 283ddd2..60c91a1 100644 --- a/Model/Adapter/AfterpayTotalLimit.php +++ b/Model/Adapter/AfterpayTotalLimit.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter; diff --git a/Model/Adapter/ApiMode.php b/Model/Adapter/ApiMode.php index 3118b93..a1ff489 100644 --- a/Model/Adapter/ApiMode.php +++ b/Model/Adapter/ApiMode.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter; diff --git a/Model/Adapter/V2/AfterpayOrderAuthRequest.php b/Model/Adapter/V2/AfterpayOrderAuthRequest.php index 8bcbec4..0094d2d 100644 --- a/Model/Adapter/V2/AfterpayOrderAuthRequest.php +++ b/Model/Adapter/V2/AfterpayOrderAuthRequest.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\V2; diff --git a/Model/Adapter/V2/AfterpayOrderDirectCapture.php b/Model/Adapter/V2/AfterpayOrderDirectCapture.php index 3da9157..3b76076 100644 --- a/Model/Adapter/V2/AfterpayOrderDirectCapture.php +++ b/Model/Adapter/V2/AfterpayOrderDirectCapture.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\V2; diff --git a/Model/Adapter/V2/AfterpayOrderPaymentCapture.php b/Model/Adapter/V2/AfterpayOrderPaymentCapture.php index f6ab1aa..c70b69e 100644 --- a/Model/Adapter/V2/AfterpayOrderPaymentCapture.php +++ b/Model/Adapter/V2/AfterpayOrderPaymentCapture.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\V2; diff --git a/Model/Adapter/V2/AfterpayOrderTokenCheck.php b/Model/Adapter/V2/AfterpayOrderTokenCheck.php index 17f1307..d572a3a 100644 --- a/Model/Adapter/V2/AfterpayOrderTokenCheck.php +++ b/Model/Adapter/V2/AfterpayOrderTokenCheck.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\V2; diff --git a/Model/Adapter/V2/AfterpayOrderTokenV2.php b/Model/Adapter/V2/AfterpayOrderTokenV2.php index 3fbf125..000b3a2 100644 --- a/Model/Adapter/V2/AfterpayOrderTokenV2.php +++ b/Model/Adapter/V2/AfterpayOrderTokenV2.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Adapter\V2; @@ -98,7 +98,6 @@ public function generate($object,$override = []) $requestData = $this->_buildOrderTokenRequest($object, $override); } $targetUrl = $this->_afterpayConfig->getApiUrl('v2/checkouts/', null, $override); - $this->_helper->debug("Request :",$requestData); if(isset($override["mode"]) && ($override["mode"]==$this->expressCheckout)){ $this->handleExpressValidation($requestData); }else{ diff --git a/Model/Config/Payovertime.php b/Model/Config/Payovertime.php index d89ef43..01e2ea3 100644 --- a/Model/Config/Payovertime.php +++ b/Model/Config/Payovertime.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Config; diff --git a/Model/Config/Save/Plugin.php b/Model/Config/Save/Plugin.php index 7d20332..e685d32 100644 --- a/Model/Config/Save/Plugin.php +++ b/Model/Config/Save/Plugin.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Config\Save; use Magento\Store\Model\ScopeInterface; diff --git a/Model/Config/Source/CartMode.php b/Model/Config/Source/CartMode.php index 6f6648a..8c0ad4f 100644 --- a/Model/Config/Source/CartMode.php +++ b/Model/Config/Source/CartMode.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Config\Source; diff --git a/Model/ConfigProvider.php b/Model/ConfigProvider.php index 0568652..ac2a164 100644 --- a/Model/ConfigProvider.php +++ b/Model/ConfigProvider.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model; diff --git a/Model/Cron/Limit.php b/Model/Cron/Limit.php index 122a610..9d53bf8 100644 --- a/Model/Cron/Limit.php +++ b/Model/Cron/Limit.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Cron; diff --git a/Model/Cron/Status.php b/Model/Cron/Status.php index 1f4aa84..1f56712 100644 --- a/Model/Cron/Status.php +++ b/Model/Cron/Status.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Cron; diff --git a/Model/ExpressPayment/ShippingListProvider.php b/Model/ExpressPayment/ShippingListProvider.php new file mode 100644 index 0000000..909dc6f --- /dev/null +++ b/Model/ExpressPayment/ShippingListProvider.php @@ -0,0 +1,79 @@ +totalsInformationManagement = $totalsInformationManagement; + $this->totalsInformationFactory = $totalsInformationFactory; + $this->afterpayExpressPayment = $afterpayExpressPayment; + $this->shipmentEstimation = $shipmentEstimation; + } + + public function provide(\Magento\Quote\Model\Quote $quote): array + { + $shippingMethods = $this->shipmentEstimation->estimateByExtendedAddress( + $quote->getId(), + $quote->getShippingAddress() + ); + $shippingList = []; + foreach ($shippingMethods as $shippingMethod) { + + /** @var \Magento\Checkout\Api\Data\TotalsInformationInterface $totalsInformation */ + $totalsInformation = $this->totalsInformationFactory->create() + ->setAddress($quote->getShippingAddress()) + ->setShippingCarrierCode($shippingMethod->getCarrierCode()) + ->setShippingMethodCode($shippingMethod->getMethodCode()); + + $quote->setTotalsCollectedFlag(false); + $calculatedTotals = $this->totalsInformationManagement->calculate($quote->getId(), $totalsInformation); + + if ($this->afterpayExpressPayment->isValidOrderAmount($calculatedTotals->getBaseGrandTotal())) { + $shippingList[] = $this->createShippingOptionByMethod($shippingMethod, $quote, $calculatedTotals); + } + } + return $shippingList; + } + + private function createShippingOptionByMethod( + \Magento\Quote\Api\Data\ShippingMethodInterface $shippingMethod, + \Magento\Quote\Model\Quote $quote, + \Magento\Quote\Api\Data\TotalsInterface $totals + ): array { + return [ + 'id' => $shippingMethod->getCarrierCode() . "_" . $shippingMethod->getMethodCode(), + 'name' => $shippingMethod->getCarrierTitle(), + 'description' => $shippingMethod->getCarrierTitle(), + 'shippingAmount' => [ + 'amount' => $this->afterpayExpressPayment->formatAmount($totals->getBaseShippingAmount()), + 'currency' => $quote->getStoreCurrencyCode() + ], + 'taxAmount' => [ + 'amount' => $this->afterpayExpressPayment->formatAmount($totals->getBaseTaxAmount()), + 'currency' => $quote->getStoreCurrencyCode() + ], + 'orderAmount' => [ + 'amount' => $this->afterpayExpressPayment->formatAmount($totals->getBaseGrandTotal()), + 'currency' => $quote->getStoreCurrencyCode() + ] + ]; + } +} diff --git a/Model/GuestPaymentInformationManagement/Plugin.php b/Model/GuestPaymentInformationManagement/Plugin.php index eefcc1c..1a4536d 100644 --- a/Model/GuestPaymentInformationManagement/Plugin.php +++ b/Model/GuestPaymentInformationManagement/Plugin.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\GuestPaymentInformationManagement; diff --git a/Model/Logger/Handler.php b/Model/Logger/Handler.php index 8ededc4..b8af78b 100644 --- a/Model/Logger/Handler.php +++ b/Model/Logger/Handler.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Logger; diff --git a/Model/Logger/Logger.php b/Model/Logger/Logger.php index 008bf7d..651c8b3 100644 --- a/Model/Logger/Logger.php +++ b/Model/Logger/Logger.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Logger; diff --git a/Model/PaymentInformationManagement/Plugin.php b/Model/PaymentInformationManagement/Plugin.php index 2b875a6..e2e088b 100644 --- a/Model/PaymentInformationManagement/Plugin.php +++ b/Model/PaymentInformationManagement/Plugin.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\PaymentInformationManagement; diff --git a/Model/Payovertime.php b/Model/Payovertime.php index 716e48f..0e8a98b 100644 --- a/Model/Payovertime.php +++ b/Model/Payovertime.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model; diff --git a/Model/Response.php b/Model/Response.php index 028deff..a57d3dc 100644 --- a/Model/Response.php +++ b/Model/Response.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model; diff --git a/Model/Source/ApiMode.php b/Model/Source/ApiMode.php index 8633273..3217534 100644 --- a/Model/Source/ApiMode.php +++ b/Model/Source/ApiMode.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Source; diff --git a/Model/Source/PaymentAction.php b/Model/Source/PaymentAction.php index c077afc..ece8219 100644 --- a/Model/Source/PaymentAction.php +++ b/Model/Source/PaymentAction.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Source; diff --git a/Model/Source/PaymentDisplay.php b/Model/Source/PaymentDisplay.php index adf0c59..da13da4 100644 --- a/Model/Source/PaymentDisplay.php +++ b/Model/Source/PaymentDisplay.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Source; diff --git a/Model/Source/PaymentFlow.php b/Model/Source/PaymentFlow.php index 2e10359..9400971 100644 --- a/Model/Source/PaymentFlow.php +++ b/Model/Source/PaymentFlow.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model\Source; diff --git a/Model/Status.php b/Model/Status.php index e1931a6..9a2c590 100644 --- a/Model/Status.php +++ b/Model/Status.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model; diff --git a/Model/Token.php b/Model/Token.php index fcbe0ec..5ab58a4 100644 --- a/Model/Token.php +++ b/Model/Token.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Model; diff --git a/Observer/BeforeCreditmemoLoad.php b/Observer/BeforeCreditmemoLoad.php index f6463f1..28f80eb 100644 --- a/Observer/BeforeCreditmemoLoad.php +++ b/Observer/BeforeCreditmemoLoad.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Observer; diff --git a/Observer/BeforeShipment.php b/Observer/BeforeShipment.php index 42f7614..eae0634 100644 --- a/Observer/BeforeShipment.php +++ b/Observer/BeforeShipment.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Observer; diff --git a/Test/Unit/Block/Adminhtml/System/Config/Button/UpdateTest.php b/Test/Unit/Block/Adminhtml/System/Config/Button/UpdateTest.php index f77531a..46396f0 100644 --- a/Test/Unit/Block/Adminhtml/System/Config/Button/UpdateTest.php +++ b/Test/Unit/Block/Adminhtml/System/Config/Button/UpdateTest.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Test\Unit\Block\Adminhtml\System\Config\Button; diff --git a/Test/Unit/Model/Adapter/AfterpayOrderTokenTest.php b/Test/Unit/Model/Adapter/AfterpayOrderTokenTest.php index 58fefb9..624712c 100644 --- a/Test/Unit/Model/Adapter/AfterpayOrderTokenTest.php +++ b/Test/Unit/Model/Adapter/AfterpayOrderTokenTest.php @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ namespace Afterpay\Afterpay\Test\Unit\Model\Adapter; diff --git a/composer.json b/composer.json index d93902c..7e21b4f 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "license" : "OSL-3.0", "type" : "magento2-module", "description" : "Magento 2 Afterpay Payment Module", - "version" : "3.4.2", + "version" : "3.4.3", "authors" : [{ "name" : "Afterpay", "homepage" : "https://www.afterpay.com" diff --git a/etc/adminhtml/di.xml b/etc/adminhtml/di.xml index 39f803c..8006a49 100644 --- a/etc/adminhtml/di.xml +++ b/etc/adminhtml/di.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/adminhtml/events.xml b/etc/adminhtml/events.xml index 01aa435..0ce144a 100644 --- a/etc/adminhtml/events.xml +++ b/etc/adminhtml/events.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 3d4579a..a0f7136 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/config.xml b/etc/config.xml index 3027d5e..9621cec 100644 --- a/etc/config.xml +++ b/etc/config.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/crontab.xml b/etc/crontab.xml index 1ea099b..72e6a9b 100644 --- a/etc/crontab.xml +++ b/etc/crontab.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/di.xml b/etc/di.xml index b6e3c2a..33fc922 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/frontend/di.xml b/etc/frontend/di.xml index 3b2e2d8..92f0159 100644 --- a/etc/frontend/di.xml +++ b/etc/frontend/di.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/frontend/routes.xml b/etc/frontend/routes.xml index 9c0a5ed..b305f0e 100644 --- a/etc/frontend/routes.xml +++ b/etc/frontend/routes.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/etc/module.xml b/etc/module.xml index 3d86b41..b402958 100644 --- a/etc/module.xml +++ b/etc/module.xml @@ -4,11 +4,11 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> - + diff --git a/etc/payment.xml b/etc/payment.xml index bdb591e..a9a89c7 100644 --- a/etc/payment.xml +++ b/etc/payment.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/view/frontend/layout/catalog_product_view.xml b/view/frontend/layout/catalog_product_view.xml index 6693438..c710dbb 100644 --- a/view/frontend/layout/catalog_product_view.xml +++ b/view/frontend/layout/catalog_product_view.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/view/frontend/layout/catalog_product_view_type_bundle.xml b/view/frontend/layout/catalog_product_view_type_bundle.xml index 275cc8e..86e8365 100644 --- a/view/frontend/layout/catalog_product_view_type_bundle.xml +++ b/view/frontend/layout/catalog_product_view_type_bundle.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/view/frontend/layout/catalog_product_view_type_giftcard.xml b/view/frontend/layout/catalog_product_view_type_giftcard.xml index 0e71dff..6119149 100644 --- a/view/frontend/layout/catalog_product_view_type_giftcard.xml +++ b/view/frontend/layout/catalog_product_view_type_giftcard.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/view/frontend/layout/checkout_cart_index.xml b/view/frontend/layout/checkout_cart_index.xml index df06027..cb8a2de 100644 --- a/view/frontend/layout/checkout_cart_index.xml +++ b/view/frontend/layout/checkout_cart_index.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/view/frontend/layout/checkout_index_index.xml b/view/frontend/layout/checkout_index_index.xml index 676a710..3f590ce 100644 --- a/view/frontend/layout/checkout_index_index.xml +++ b/view/frontend/layout/checkout_index_index.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> diff --git a/view/frontend/layout/default.xml b/view/frontend/layout/default.xml index 0359dec..0b551a0 100644 --- a/view/frontend/layout/default.xml +++ b/view/frontend/layout/default.xml @@ -4,7 +4,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ --> @@ -13,7 +13,7 @@ - + diff --git a/view/frontend/requirejs-config.js b/view/frontend/requirejs-config.js index 7019e6b..737768a 100644 --- a/view/frontend/requirejs-config.js +++ b/view/frontend/requirejs-config.js @@ -2,7 +2,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ var config = { map: { diff --git a/view/frontend/templates/afterpay/cart.phtml b/view/frontend/templates/afterpay/cart.phtml index f39cd79..8e38553 100644 --- a/view/frontend/templates/afterpay/cart.phtml +++ b/view/frontend/templates/afterpay/cart.phtml @@ -55,7 +55,7 @@ if ($block->isPaymentMethodActive() && $block->canUseCurrency() && $data_amount = $min_limit && $data_amount <= $max_limit && $afterpay_eligible != "false" ) { +if ($data_amount >= $min_limit && $data_amount <= $max_limit && $afterpay_eligible != "false" && !$block->isQuoteVirtual()) { if ($cartDisplayMode == \Afterpay\Afterpay\Model\Config\Source\CartMode::EXPRESS_CHECKOUT || $block->isDisplayEConCartPage() ) { ?> diff --git a/view/frontend/templates/afterpay/minicart.phtml b/view/frontend/templates/afterpay/minicart.phtml index 436a0dd..49aac6c 100644 --- a/view/frontend/templates/afterpay/minicart.phtml +++ b/view/frontend/templates/afterpay/minicart.phtml @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ if($block->isPaymentMethodActive() ){ $displayExpress = ""; diff --git a/view/frontend/templates/afterpay/modal.phtml b/view/frontend/templates/afterpay/modal.phtml index dffcd72..e9dd9f7 100644 --- a/view/frontend/templates/afterpay/modal.phtml +++ b/view/frontend/templates/afterpay/modal.phtml @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ $enable_cbt = $this->helper('Afterpay\Afterpay\Helper\Data')->getConfig('payment/afterpaypayovertime/enable_cbt'); $store_base_currency = $this->helper('Afterpay\Afterpay\Helper\Data')->getConfig('currency/options/default'); diff --git a/view/frontend/templates/afterpay/product.phtml b/view/frontend/templates/afterpay/product.phtml index 0249d3b..9483555 100644 --- a/view/frontend/templates/afterpay/product.phtml +++ b/view/frontend/templates/afterpay/product.phtml @@ -61,7 +61,8 @@ if ($block->isPaymentMethodActive() && $product_type != "grouped" && $block->can "afterpayConfig":getAfterpayConfigs(); ?>, "productPriceFormat":, "isECenabled":, - "isDisplay": + "isDisplay":, + "isProductVirtual":"= $block->getProduct()->isVirtual(); ?>" } } } diff --git a/view/frontend/web/css/afterpay.css b/view/frontend/web/css/afterpay.css index 24efb04..f903fa5 100644 --- a/view/frontend/web/css/afterpay.css +++ b/view/frontend/web/css/afterpay.css @@ -2,7 +2,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ /** afterpay.css */ diff --git a/view/frontend/web/js/view/cart/afterpay-minicart.js b/view/frontend/web/js/view/cart/afterpay-minicart.js index 83ebc66..25fa3d3 100644 --- a/view/frontend/web/js/view/cart/afterpay-minicart.js +++ b/view/frontend/web/js/view/cart/afterpay-minicart.js @@ -7,14 +7,20 @@ define( "jquery", "Magento_Catalog/js/price-utils", 'mage/url', - 'Magento_Customer/js/customer-data' + 'Magento_Customer/js/customer-data', + 'Afterpay_Afterpay/js/view/express/button' ], - function ( $, priceUtils,mageUrl,customerData) { + function ($, priceUtils, mageUrl, customerData, expressBtn) { return function (config){ function canDispayExpress(){ var minicart_subtotal = customerData.get('cart')().subtotalAmount; - if (!isAfterpayRestricted() && parseFloat(minicart_subtotal) >= parseFloat(config.afterpayConfig.minLimit) && parseFloat(minicart_subtotal) <= parseFloat(config.afterpayConfig.maxLimit) && (config.afterpayConfig.paymentActive)) { + if (!isAfterpayRestricted() && + parseFloat(minicart_subtotal) >= parseFloat(config.afterpayConfig.minLimit) && + parseFloat(minicart_subtotal) <= parseFloat(config.afterpayConfig.maxLimit) && + (config.afterpayConfig.paymentActive) && + expressBtn.canDisplayOnMinicart() + ) { $('#afterpay-minicart-express-button').show(); } else { $('#afterpay-minicart-express-button').hide(); diff --git a/view/frontend/web/js/view/express/button.js b/view/frontend/web/js/view/express/button.js new file mode 100644 index 0000000..997af9a --- /dev/null +++ b/view/frontend/web/js/view/express/button.js @@ -0,0 +1,37 @@ +define([ + 'Magento_Customer/js/customer-data' +], function (customerData) { + 'use strict'; + + return { + canDisplayOnMinicart: function () { + return !this._isCartEmpty() && !this._isCartVirtual(); + }, + + canDisplayOnPDP: function (isProductVirtual) { + if (isProductVirtual) { + return this._isCartEmpty() ? false : !this._isCartVirtual(); + } + return true; + }, + + _isCartEmpty: function () { + const cartItems = customerData.get('cart')().items; + return !cartItems || cartItems.length < 1; + }, + + _isCartVirtual: function () { + if (this._isCartEmpty()) { + return false; + } + const cartItems = customerData.get('cart')().items; + let virtualProductsInCart = 0; + cartItems.forEach(function (val) { + if (val.is_virtual) { + virtualProductsInCart++; + } + }); + return cartItems.length === virtualProductsInCart; + } + } +}); diff --git a/view/frontend/web/js/view/payment/method-renderer/afterpaypayovertime.js b/view/frontend/web/js/view/payment/method-renderer/afterpaypayovertime.js index 4231c7a..c32a8f1 100644 --- a/view/frontend/web/js/view/payment/method-renderer/afterpaypayovertime.js +++ b/view/frontend/web/js/view/payment/method-renderer/afterpaypayovertime.js @@ -2,7 +2,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ /*browser:true*/ /*global define*/ @@ -196,7 +196,7 @@ define( email = document.getElementById("customer-email").value; } - data = data + '&email=' + email; + data = data + '&email=' + encodeURIComponent(email); $.ajax({ diff --git a/view/frontend/web/js/view/payment/method-renderer/afterpayredirect.js b/view/frontend/web/js/view/payment/method-renderer/afterpayredirect.js index c155154..648bef7 100644 --- a/view/frontend/web/js/view/payment/method-renderer/afterpayredirect.js +++ b/view/frontend/web/js/view/payment/method-renderer/afterpayredirect.js @@ -2,7 +2,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ /*browser:true*/ /*global define*/ diff --git a/view/frontend/web/js/view/product/afterpay-products.js b/view/frontend/web/js/view/product/afterpay-products.js index 82f4f50..1a4b1b4 100644 --- a/view/frontend/web/js/view/product/afterpay-products.js +++ b/view/frontend/web/js/view/product/afterpay-products.js @@ -5,11 +5,9 @@ define( [ "jquery", - "Magento_Catalog/js/price-utils", - 'mage/url', - 'Magento_Customer/js/customer-data' + 'Afterpay_Afterpay/js/view/express/button' ], - function ( $, priceUtils, mageUrl,customerData) { + function ($, expressBtn) { return function (config) { @@ -43,8 +41,12 @@ define( $('afterpay-placement').attr('data-amount', (Math.round((parseFloat(price) + epsilon) * 100) / 100).toFixed(2)); } if(config.isECenabled==1) { - if ((config.afterpayConfig.paymentActive == true && price <= config.afterpayConfig.maxLimit && price >= config.afterpayConfig.minLimit && price > 0)) { - + if (config.afterpayConfig.paymentActive && + price <= config.afterpayConfig.maxLimit && + price >= config.afterpayConfig.minLimit && + price > 0 && + expressBtn.canDisplayOnPDP(config.isProductVirtual) + ) { $("#afterpay-pdp-express-button").show(); } else { $("#afterpay-pdp-express-button").hide(); diff --git a/view/frontend/web/template/payment/afterpaypayovertime.html b/view/frontend/web/template/payment/afterpaypayovertime.html index 9956ef6..8f1ba62 100644 --- a/view/frontend/web/template/payment/afterpaypayovertime.html +++ b/view/frontend/web/template/payment/afterpaypayovertime.html @@ -3,7 +3,7 @@ * Magento 2 extensions for Afterpay Payment * * @author Afterpay - * @copyright 2016-2020 Afterpay https://www.afterpay.com + * @copyright 2016-2021 Afterpay https://www.afterpay.com */ -->