From 5efc2c8af37ad9787bf37e67e7a05443f405a720 Mon Sep 17 00:00:00 2001 From: Chandan Sinha Date: Tue, 30 May 2023 13:01:08 +0100 Subject: [PATCH] Magento 2.4.6 upgrades --- Block/Addnewcard.php | 33 + Block/Adminhtml/Form/Field/Paymentmethod.php | 5 +- Block/Adminhtml/Order/View/View.php | 41 + Block/Adminhtml/System/Config/Editor.php | 4 + Block/ApplePay/Button.php | 12 +- Block/Catalog/Product/SubscriptionPlans.php | 5 + Block/Challenge.php | 4 +- Block/Checkout/Hpp/ChallengeIframe.php | 4 + Block/Checkout/Hpp/Json/Config.php | 9 +- Block/Checkout/Multishipping/Billing.php | 64 +- Block/Edit.php | 5 + Block/Form/Card.php | 40 + Block/GooglePay/Button.php | 5 + Block/Jwt.php | 6 +- .../Paybylink/Email/Addresses.php | 80 ++ Block/Multishipping/Paybylink/Success.php | 21 + Block/Paybylink.php | 30 +- Block/PaymentRequestApi.php | 72 -- .../Recurring/Customer/Subscriptions/Edit.php | 6 +- Block/SavedCardLink.php | 8 + Block/Savedcard.php | 19 + Block/SubscriptionsLink.php | 14 + Block/Wallets.php | 37 +- Block/Webpayment.php | 27 +- Controller/Adminhtml/Cancel/Index.php | 24 + Controller/Adminhtml/Recurring/Plan/Save.php | 9 + Controller/Adminhtml/Syncstatus/Index.php | 25 + Controller/Adminhtml/VoidSale/Index.php | 26 + .../Adminhtml/motoRedirectResult/Cancel.php | 37 + .../Adminhtml/motoRedirectResult/Failure.php | 21 +- .../Adminhtml/motoRedirectResult/Success.php | 15 + Controller/Applepay/Index.php | 43 +- Controller/Button/PlaceOrder.php | 9 + Controller/Cartdetails/Chromepay.php | 5 + Controller/Hostedpaymentpage/Challenge.php | 10 + Controller/Hostedpaymentpage/Pay.php | 17 +- Controller/Notification/Index.php | 35 +- Controller/Paybylink/Cancel.php | 104 +- Controller/Paybylink/Failure.php | 20 + .../Paybylink/Multishipping/Orderplaced.php | 59 ++ .../Paybylink/Multishipping/Success.php | 96 ++ Controller/Paybylink/Orderplaced.php | 24 +- Controller/Paybylink/Process.php | 149 ++- Controller/Paybylink/Success.php | 38 +- Controller/Payment/Pay.php | 51 +- Controller/Recurring/Cancel.php | 14 +- Controller/Recurring/Edit.php | 13 +- Controller/Recurring/FormPost.php | 13 +- Controller/Recurring/Index.php | 18 +- Controller/Redirectresult/Cancel.php | 42 +- Controller/Redirectresult/Error.php | 20 + Controller/Redirectresult/Failure.php | 25 + Controller/Redirectresult/Iframe.php | 22 +- Controller/Redirectresult/Pending.php | 35 + Controller/Redirectresult/Redirect.php | 10 + Controller/Redirectresult/Success.php | 11 +- Controller/Samsungpay/CallBack.php | 44 + Controller/Samsungpay/Index.php | 30 + Controller/Savedcard/Addnewcard.php | 6 + Controller/Savedcard/AddnewcardPost.php | 69 ++ Controller/Savedcard/Delete.php | 35 + Controller/Savedcard/Edit.php | 10 + Controller/Savedcard/EditPost.php | 31 + Controller/Savedcard/Index.php | 6 + Controller/Savedcard/Instantredirect.php | 5 + .../Savedcard/Multishippingredirect.php | 5 + Controller/Savedcard/Redirect.php | 5 + Controller/ThreeDSecure/Auth.php | 25 +- Controller/ThreeDSecure/AuthResponse.php | 41 + .../ThreeDSecure/ChallengeAuthResponse.php | 49 +- .../ChallengeRedirectResponse.php | 38 + Controller/Wallets/CancelCheckout.php | 22 + Controller/Wallets/MultishippingSuccess.php | 8 + Controller/Wallets/Success.php | 8 + Cron/OrderSyncStatus.php | 31 +- Cron/PayByLinkOrders.php | 276 +++++ Cron/RecurringOrders.php | 57 +- Helper/Data.php | 425 +++++++- Helper/Instalmentconfig.php | 14 +- Helper/KlarnaCountries.php | 5 + Helper/Multishipping.php | 79 +- Helper/Recurring.php | 86 +- Helper/SendErrorReport.php | 15 + Helper/SendPayByLinkEmail.php | 60 +- Logger/WorldpayLogger.php | 38 +- Model/Adminhtml/Order/Service.php | 9 + Model/Authorisation/DirectService.php | 53 + .../HostedPaymentPageService.php | 42 + Model/Authorisation/MotoRedirectService.php | 49 + Model/Authorisation/PayByLinkService.php | 174 +++- Model/Authorisation/PaymentOptionsService.php | 28 +- Model/Authorisation/RedirectService.php | 45 + Model/Authorisation/ThreeDSecureChallenge.php | 53 + Model/Authorisation/ThreeDSecureService.php | 67 ++ Model/Authorisation/TokenService.php | 48 +- Model/Authorisation/VaultService.php | 43 + Model/Authorisation/WalletService.php | 43 + Model/Checkout/Hpp/Json/Config/Factory.php | 37 + Model/Checkout/Hpp/State.php | 5 + Model/Checkout/Service.php | 14 + Model/Checkout/Type/Multishipping.php | 143 ++- Model/Config/Source/CaptureDelay.php | 25 + Model/Config/Source/KlarnaCountries.php | 4 +- Model/Config/Source/PaymentMethodsApm.php | 1 - Model/Config/Source/SEPAMandateTypes.php | 20 + Model/Config/Source/Website.php | 2 +- .../CreditCard/AvailabilityChecker.php | 8 +- .../CreditCard/TokenFormatter.php | 19 + .../PaymentAdditionalInformationProvider.php | 12 + Model/Mapping/Service.php | 220 +++- Model/Multishipping/Multishipping.php | 32 + Model/Notification/History.php | 5 +- Model/Observer/AddExtraDataToTransport.php | 4 +- Model/Observer/Cart.php | 19 + Model/Observer/Redirect.php | 11 + Model/Observer/Refund.php | 13 + Model/Order.php | 45 + Model/Order/Email/Sender/OrderSender.php | 10 + Model/Order/Service.php | 48 + Model/PayByLink/Order.php | 86 ++ Model/Payment/HostedUrl.php | 10 + Model/Payment/MultishippingStateResponse.php | 91 ++ Model/Payment/PaymentTypes.php | 4 + Model/Payment/Service.php | 29 +- Model/Payment/StateResponse.php | 5 +- Model/Payment/Update/Authorised.php | 30 +- Model/Payment/Update/Defaultupdate.php | 4 + Model/Payment/Update/Error.php | 4 + Model/Payment/Update/Factory.php | 11 + Model/Payment/Update/PendingPayment.php | 4 + Model/Payment/Update/Refused.php | 4 + Model/Payment/UpdateWorldpayment.php | 61 +- Model/Payment/WorldPayPayment.php | 18 +- Model/Payment/WpResponse.php | 21 + Model/PaymentMethods/AbstractMethod.php | 114 +- .../AlternativePaymentMethods.php | 2 +- Model/PaymentMethods/CcVault.php | 47 + Model/PaymentMethods/PaymentOperations.php | 7 +- Model/Recurring/Subscription.php | 5 + Model/Request.php | 92 +- Model/Request/AuthenticationService.php | 10 + Model/Request/PaymentServiceRequest.php | 570 ++++++++-- .../Multishipping/Order/Collection.php | 19 + Model/Response/RedirectResponse.php | 5 + Model/Response/ResponseAbstract.php | 2 +- Model/SavedToken.php | 2 +- Model/System/Config/Backend/AdminLabels.php | 6 + .../System/Config/Backend/CheckoutLabels.php | 5 + .../Config/Backend/CreditCardException.php | 6 + .../Config/Backend/CurrencyExponents.php | 6 + .../Config/Backend/CurrentPluginVersion.php | 18 + .../Config/Backend/ExtendedResponseCodes.php | 5 +- .../Config/Backend/GeneralException.php | 6 + .../Config/Backend/Instalmentconfig.php | 6 + .../System/Config/Backend/KlarnaCountries.php | 8 +- .../System/Config/Backend/Merchantprofile.php | 5 + .../Config/Backend/MyAccountException.php | 7 + .../System/Config/Backend/MyAccountLabels.php | 5 + .../Config/Backend/PluginUpgradeDates.php | 33 + .../Config/Backend/PluginVersionHistory.php | 24 + Model/Token.php | 10 + Model/Token/Service.php | 21 +- Model/Token/StateXml.php | 4 +- Model/Token/UpdateXml.php | 4 +- Model/Token/WorldpayToken.php | 32 +- Model/Utilities/PaymentMethods.php | 31 +- Model/WorldpayConfigProvider.php | 55 +- Model/XmlBuilder/ACHOrder.php | 12 +- Model/XmlBuilder/ApplePayOrder.php | 44 +- Model/XmlBuilder/Capture.php | 73 +- Model/XmlBuilder/ChromePayOrder.php | 19 +- Model/XmlBuilder/DirectIdealOrder.php | 25 +- Model/XmlBuilder/DirectOrder.php | 33 +- Model/XmlBuilder/RedirectKlarnaOrder.php | 18 +- Model/XmlBuilder/RedirectOrder.php | 20 +- Model/XmlBuilder/RedirectPayByLinkOrder.php | 970 ++++++++++++++++++ Model/XmlBuilder/Refund.php | 24 +- Model/XmlBuilder/SEPAOrder.php | 315 ++++++ Model/XmlBuilder/SamsungPayOrder.php | 21 +- Model/XmlBuilder/TokenDelete.php | 4 +- Model/XmlBuilder/TokenInquiry.php | 4 +- Model/XmlBuilder/TokenUpdate.php | 4 +- Model/XmlBuilder/VoidSale.php | 2 +- Model/XmlBuilder/WalletOrder.php | 42 +- Observer/AddtoCartBefore.php | 44 +- Observer/AfterPlaceOrder.php | 31 +- .../CheckoutCartUpdateItemsAfterObserver.php | 9 +- Observer/MultishippingLayoutLoadBefore.php | 53 + .../SalesServiceQuoteSubmitBeforeObserver.php | 5 +- Plugin/Checkout/Block/Onepage.php | 2 +- Plugin/Checkout/CustomerData/Cart.php | 7 +- Plugin/Checkout/CustomerData/Customer.php | 19 +- Plugin/GuestPaymentInformationManagement.php | 4 +- Plugin/PaymentInformationManagement.php | 4 +- Plugin/PluginBefore.php | 73 +- Plugin/SalesOrderGridPlugin.php | 33 + README.txt | 7 + Setup/Patch/Data/DefaultConfigurations.php | 15 + .../Listing/Column/FraudisightMessage.php | 6 + Ui/Component/Listing/Column/InvoiceStatus.php | 6 + Ui/Component/Listing/Column/MerchantId.php | 114 ++ .../Listing/Column/MultishippingId.php | 6 + .../Listing/Column/WorldpayPaymentStatus.php | 6 + composer.json | 2 +- ...lugin For Magento 2 Installation Guide.pdf | Bin 755313 -> 731757 bytes ...rldpay plugin for Magento 2 user guide.pdf | Bin 11253039 -> 11253968 bytes etc/adminhtml/di.xml | 7 +- etc/adminhtml/system.xml | 136 ++- etc/config.xml | 9 +- etc/cron_groups.xml | 9 + etc/crontab.xml | 5 + etc/email_templates.xml | 7 +- etc/frontend/events.xml | 3 + etc/module.xml | 1 + etc/paymentmethods.xml | 16 - view/adminhtml/templates/form/card.phtml | 8 +- .../templates/worldpay_payment.phtml | 25 +- .../ui_component/sales_order_grid.xml | 10 + view/frontend/email/wp_pay_by_link_email.html | 44 +- .../wp_paybylink_multishipping_email.html | 66 ++ view/frontend/layout/default.xml | 3 - ...ay_paybylink_multishipping_orderplaced.xml | 26 + ...rldpay_paybylink_multishipping_success.xml | 26 + ... => wp_multishipping_checkout_billing.xml} | 16 + ..._paybylink_multishipping_email_address.xml | 13 + view/frontend/requirejs-config.js | 8 +- view/frontend/templates/addnewcard.phtml | 48 +- .../templates/multishipping-paybylink.phtml | 10 + .../multishipping/billing/billing.phtml | 171 ++- .../multishipping/email/address.phtml | 24 + .../multishipping/paybylink/orderplaced.phtml | 59 ++ .../multishipping/paybylink/success.phtml | 51 + .../templates/payment-request-api.phtml | 7 - view/frontend/web/css/worldpay.css | 346 ++++++- .../js/action/place-multishipping-order.js | 7 +- view/frontend/web/js/model/google-pay.js | 1 + view/frontend/web/js/view/billing-address.js | 233 ++--- .../web/js/view/payment/googlepay-checkout.js | 1 + .../payment/method-renderer/apm-method.js | 69 +- .../view/payment/method-renderer/cc-method.js | 8 +- .../web/js/view/payment/methodrenderer.js | 29 +- .../view/payment/multishipping/apm-method.js | 4 + .../view/payment/multishipping/cc-method.js | 6 + .../view/payment/multishipping/paybylink.js | 81 ++ .../web/js/view/payment/paybylink-checkout.js | 18 +- .../web/template/multishipping/apm.html | 97 +- .../web/template/multishipping/cc-form.html | 2 +- .../web/template/multishipping/paybylink.html | 13 + .../web/template/payment-methods/list.html | 12 +- view/frontend/web/template/payment/apm.html | 147 ++- .../web/template/payment/cc-form.html | 2 +- .../web/template/payment/saved-card-form.html | 2 +- .../web/template/payment/wallets.html | 6 - 253 files changed, 9081 insertions(+), 906 deletions(-) create mode 100644 Block/Multishipping/Paybylink/Email/Addresses.php create mode 100644 Block/Multishipping/Paybylink/Success.php delete mode 100644 Block/PaymentRequestApi.php create mode 100644 Controller/Paybylink/Multishipping/Orderplaced.php create mode 100644 Controller/Paybylink/Multishipping/Success.php create mode 100644 Cron/PayByLinkOrders.php create mode 100644 Model/Config/Source/CaptureDelay.php create mode 100644 Model/Config/Source/SEPAMandateTypes.php create mode 100644 Model/PayByLink/Order.php create mode 100644 Model/Payment/MultishippingStateResponse.php create mode 100644 Model/XmlBuilder/RedirectPayByLinkOrder.php create mode 100644 Model/XmlBuilder/SEPAOrder.php create mode 100644 Observer/MultishippingLayoutLoadBefore.php create mode 100644 Plugin/SalesOrderGridPlugin.php create mode 100644 Ui/Component/Listing/Column/MerchantId.php create mode 100644 view/frontend/email/wp_paybylink_multishipping_email.html create mode 100644 view/frontend/layout/worldpay_paybylink_multishipping_orderplaced.xml create mode 100644 view/frontend/layout/worldpay_paybylink_multishipping_success.xml rename view/frontend/layout/{multishipping_checkout_billing.xml => wp_multishipping_checkout_billing.xml} (74%) create mode 100644 view/frontend/layout/wp_paybylink_multishipping_email_address.xml create mode 100644 view/frontend/templates/multishipping-paybylink.phtml create mode 100644 view/frontend/templates/multishipping/email/address.phtml create mode 100644 view/frontend/templates/multishipping/paybylink/orderplaced.phtml create mode 100644 view/frontend/templates/multishipping/paybylink/success.phtml delete mode 100644 view/frontend/templates/payment-request-api.phtml create mode 100644 view/frontend/web/js/view/payment/multishipping/paybylink.js create mode 100644 view/frontend/web/template/multishipping/paybylink.html diff --git a/Block/Addnewcard.php b/Block/Addnewcard.php index 90adaef..f5f16d1 100644 --- a/Block/Addnewcard.php +++ b/Block/Addnewcard.php @@ -14,6 +14,39 @@ class Addnewcard extends \Magento\Framework\View\Element\Template * @var \Magento\Customer\Model\Session */ protected $_customerSession; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Magento\Customer\Helper\Session\CurrentCustomerAddress + */ + protected $currentCustomerAddress; + + /** + * @var \Magento\Customer\Model\Address\Config + */ + protected $_addressConfig; + /** + * @var \Magento\Customer\Model\Address\Mapper + */ + protected $addressMapper; + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + + /** + * @var \Magento\Framework\Message\ManagerInterface + */ + protected $_messageManager; + + /** + * @var \Magento\Integration\Model\Oauth\TokenFactory + */ + protected $_tokenModelFactory; + /** * @var array */ diff --git a/Block/Adminhtml/Form/Field/Paymentmethod.php b/Block/Adminhtml/Form/Field/Paymentmethod.php index d77a783..08522df 100644 --- a/Block/Adminhtml/Form/Field/Paymentmethod.php +++ b/Block/Adminhtml/Form/Field/Paymentmethod.php @@ -6,7 +6,10 @@ class Paymentmethod extends \Magento\Framework\View\Element\Html\Select { - + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + public $paymentutils; /** * Paymentmethod constructor. * diff --git a/Block/Adminhtml/Order/View/View.php b/Block/Adminhtml/Order/View/View.php index 21444a0..8751a50 100644 --- a/Block/Adminhtml/Order/View/View.php +++ b/Block/Adminhtml/Order/View/View.php @@ -15,11 +15,22 @@ class View extends \Magento\Backend\Block\Template */ protected $_worldpaymentFactory; + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $helper; + /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\Registry $registry * @param \Sapient\Worldpay\Model\WorldpaymentFactory $worldpaymentFactory * @param \Sapient\Worldpay\Helper\Multishipping $multishippingHelper + * @param \Sapient\Worldpay\Helper\Data $worldpayhelper * @param array $data */ public function __construct( @@ -27,11 +38,13 @@ public function __construct( \Magento\Framework\Registry $registry, \Sapient\Worldpay\Model\WorldpaymentFactory $worldpaymentFactory, \Sapient\Worldpay\Helper\Multishipping $multishippingHelper, + \Sapient\Worldpay\Helper\Data $worldpayhelper, array $data = [] ) { $this->registry = $registry; $this->_worldpaymentFactory= $worldpaymentFactory; $this->multishippingHelper = $multishippingHelper; + $this->helper = $worldpayhelper; parent::__construct($context, $data); } /** @@ -105,4 +118,32 @@ public function getMultishippingOrderIds() $multishipping_orders = substr($multishipping_orders, 1); return $multishipping_orders; } + /** + * Retrieve Worldpay Xml user name + * + * @param string $paymentType + * @param boolean $ismultishipping + * @return string + */ + public function getXmluserName($paymentType, $ismultishipping) + { + $xmlUsername = $this->helper->getXmlUsername($paymentType); + $paymentMethod= $this->getPaymentMethod(); + if ($ismultishipping) { + $msMerchantUn = $this->helper->getMultishippingMerchantUsername(); + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername; + } + + if ($paymentMethod=='worldpay_moto') { + $xmlUsernameMoto = $this->helper->getMotoUsername(); + $xmlUsername = !empty($xmlUsernameMoto) ? $xmlUsernameMoto : $xmlUsername; + } + + if ($paymentMethod=='worldpay_paybylink') { + $pblMerchantUn = $this->helper->getPayByLinkMerchantUsername(); + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername; + } + + return $xmlUsername; + } } diff --git a/Block/Adminhtml/System/Config/Editor.php b/Block/Adminhtml/System/Config/Editor.php index 6960e16..bcaac7e 100644 --- a/Block/Adminhtml/System/Config/Editor.php +++ b/Block/Adminhtml/System/Config/Editor.php @@ -7,6 +7,10 @@ class Editor extends \Magento\Config\Block\System\Config\Form\Field { + /** + * @var WysiwygConfig + */ + protected $_wysiwygConfig; /** * @var Registry */ diff --git a/Block/ApplePay/Button.php b/Block/ApplePay/Button.php index ee2c792..ff8212d 100644 --- a/Block/ApplePay/Button.php +++ b/Block/ApplePay/Button.php @@ -27,6 +27,16 @@ class Button extends Template */ protected $session; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + /** * Button constructor. * @param Context $context @@ -36,7 +46,7 @@ class Button extends Template */ public function __construct( Context $context, - \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, + WorldpayLogger $wplogger, \Sapient\Worldpay\Helper\Data $helper, array $data = [] ) { diff --git a/Block/Catalog/Product/SubscriptionPlans.php b/Block/Catalog/Product/SubscriptionPlans.php index d6faace..12c5b39 100644 --- a/Block/Catalog/Product/SubscriptionPlans.php +++ b/Block/Catalog/Product/SubscriptionPlans.php @@ -23,6 +23,11 @@ class SubscriptionPlans extends \Magento\Catalog\Block\Product\AbstractProduct */ private $encoder; + /** + * @var Data + */ + private $worldpayHelper; + /** * @param \Magento\Catalog\Block\Product\Context $context * @param \Sapient\Worldpay\Helper\Recurring $recurringHelper diff --git a/Block/Challenge.php b/Block/Challenge.php index aaf85eb..eae41ed 100644 --- a/Block/Challenge.php +++ b/Block/Challenge.php @@ -6,10 +6,10 @@ class Challenge extends \Magento\Framework\View\Element\Template { /** - * @var Sapient\Worldpay\Helper\Data; + * @var \Sapient\Worldpay\Helper\Data; */ - protected $helper; + protected $_helper; /** * @var \Magento\Checkout\Model\Session diff --git a/Block/Checkout/Hpp/ChallengeIframe.php b/Block/Checkout/Hpp/ChallengeIframe.php index 47b5764..1c47c90 100644 --- a/Block/Checkout/Hpp/ChallengeIframe.php +++ b/Block/Checkout/Hpp/ChallengeIframe.php @@ -6,6 +6,10 @@ class ChallengeIframe extends \Magento\Framework\View\Element\Template { + /** + * @var \Sapient\Worldpay\Model\Checkout\Hpp\Json\Config\Factory + */ + public $configfactory; /** * Constructor * diff --git a/Block/Checkout/Hpp/Json/Config.php b/Block/Checkout/Hpp/Json/Config.php index 7297603..43a73d0 100644 --- a/Block/Checkout/Hpp/Json/Config.php +++ b/Block/Checkout/Hpp/Json/Config.php @@ -6,7 +6,14 @@ class Config extends \Magento\Framework\View\Element\Template { - + /** + * @var \Sapient\Worldpay\Model\Checkout\Hpp\Json\Config\Factory + */ + public $configfactory; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + public $wplogger; /** * Constructor * diff --git a/Block/Checkout/Multishipping/Billing.php b/Block/Checkout/Multishipping/Billing.php index 33e28d1..72b8964 100644 --- a/Block/Checkout/Multishipping/Billing.php +++ b/Block/Checkout/Multishipping/Billing.php @@ -60,6 +60,10 @@ class Billing extends \Magento\Multishipping\Block\Checkout\Billing * @var \Sapient\Worldpay\Helper\Data */ protected $wpHelper; + /** + * @var CheckoutHelper + */ + protected $checkoutHelper; /** * Constructor @@ -74,10 +78,10 @@ class Billing extends \Magento\Multishipping\Block\Checkout\Billing * @param PriceCurrencyInterface $priceCurrency * @param \Magento\Quote\Model\Quote\TotalsCollector $totalsCollector * @param \Magento\Quote\Model\Quote\TotalsReader $totalsReader - * @param Sapient\Worldpay\Helper\Data $wpHelper + * @param CheckoutHelper $checkoutHelper + * @param \Sapient\Worldpay\Helper\Data $wpHelper * @param array $data * @param array $additionalChecks - * @param ?CheckoutHelper $checkoutHelper = null */ public function __construct( @@ -91,15 +95,16 @@ public function __construct( PriceCurrencyInterface $priceCurrency, \Magento\Quote\Model\Quote\TotalsCollector $totalsCollector, \Magento\Quote\Model\Quote\TotalsReader $totalsReader, + CheckoutHelper $checkoutHelper, \Sapient\Worldpay\Helper\Data $wpHelper, array $data = [], - array $additionalChecks = [], - ?CheckoutHelper $checkoutHelper = null, + array $additionalChecks = [] ) { $this->_multishipping = $multishipping; $this->_checkoutSession = $checkoutSession; $this->paymentSpecification = $paymentSpecification; - $data['checkoutHelper'] = $checkoutHelper ?? ObjectManager::getInstance()->get(CheckoutHelper::class); + $this->checkoutHelper = $checkoutHelper; + $data['checkoutHelper'] = $this->checkoutHelper; $this->_taxHelper = $taxHelper; $data['taxHelper'] = $this->_taxHelper; $this->wpHelper = $wpHelper; @@ -124,12 +129,8 @@ public function __construct( */ protected function _prepareLayout() { - if ($this->isWorldpayEnable()) { - $this->setTemplate('Sapient_Worldpay::multishipping/billing/billing.phtml'); - $this->pageConfig->addBodyClass('worldpay-multishipping'); - } else { - $this->setTemplate('Magento_Multishipping::checkout/billing.phtml'); - } + $this->setTemplate('Sapient_Worldpay::multishipping/billing/billing.phtml'); + $this->pageConfig->addBodyClass('worldpay-multishipping'); return parent::_prepareLayout(); } /** @@ -384,4 +385,45 @@ public function isWorldpayEnable() { return $this->wpHelper->isWorldPayEnable(); } + /** + * Get worldpay method code + */ + public function getWorldpayMethodsCode() + { + return [ + 'worldpay_cc', + 'worldpay_apm', + 'worldpay_wallets' + ]; + } + /** + * Get Worldpay Methods + */ + public function getWorldpayMethods() + { + $allMethods = $this->getMethods(); + $wpMethods = $this->getWorldpayMethodsCode(); + $wpPaymentMethods = []; + foreach ($allMethods as $method) { + if (in_array($method->getCode(), $wpMethods)) { + $wpPaymentMethods[] = $method; + } + } + return $wpPaymentMethods; + } + /** + * Get other Payment methods + */ + public function getOtherPaymentMethods() + { + $allMethods = $this->getMethods(); + $wpMethods = $this->getWorldpayMethodsCode(); + $otherPaymentMethods = []; + foreach ($allMethods as $method) { + if (!in_array($method->getCode(), $wpMethods)) { + $otherPaymentMethods[] = $method; + } + } + return $otherPaymentMethods; + } } diff --git a/Block/Edit.php b/Block/Edit.php index f947a22..da5ca0f 100644 --- a/Block/Edit.php +++ b/Block/Edit.php @@ -14,6 +14,11 @@ class Edit extends \Magento\Framework\View\Element\Template * @var \Magento\Customer\Model\Session */ protected $_customerSession; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; /** * @var array */ diff --git a/Block/Form/Card.php b/Block/Form/Card.php index f2ca0f9..67e90a2 100644 --- a/Block/Form/Card.php +++ b/Block/Form/Card.php @@ -18,6 +18,46 @@ class Card extends \Magento\Payment\Block\Form * @var worldpayPaymentsMoto */ private $worldpayPaymentsMoto; + + /** + * @var \Sapient\Worldpay\Model\WorldpayConfigProvider + */ + private $configProvider; + + /** + * @var \Magento\Framework\Registry + */ + private $_coreRegistry; + + /** + * @var \Magento\Backend\Model\Session\Quote + */ + private $adminquotesession; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + private $worldpayhelper; + + /** + * @var \Sapient\Worldpay\Model\Payment\LatAmInstalTypes + */ + private $latamtypes; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\PaymentTypes + */ + private $paymenttypes; + + /** + * @var \Magento\Backend\Model\Session\Quote + */ + private $adminsessionquote; /** * Constructor * diff --git a/Block/GooglePay/Button.php b/Block/GooglePay/Button.php index 19ec4e5..3a8505d 100644 --- a/Block/GooglePay/Button.php +++ b/Block/GooglePay/Button.php @@ -33,6 +33,11 @@ class Button extends Template * @var SessionManagerInterface */ protected $session; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; /** * Button constructor. diff --git a/Block/Jwt.php b/Block/Jwt.php index 9851d47..4906c3b 100644 --- a/Block/Jwt.php +++ b/Block/Jwt.php @@ -6,10 +6,10 @@ class Jwt extends \Magento\Framework\View\Element\Template { /** - * @var Sapient\Worldpay\Helper\Data; + * @var Data; */ - protected $helper; + protected $_helper; /** * @var \Magento\Framework\Url\DecoderInterface @@ -19,7 +19,7 @@ class Jwt extends \Magento\Framework\View\Element\Template /** * Jwt constructor * - * @param Context $context + * @param \Magento\Framework\View\Element\Template\Context $context * @param string $helper * @param \Magento\Framework\Url\DecoderInterface $decoder */ diff --git a/Block/Multishipping/Paybylink/Email/Addresses.php b/Block/Multishipping/Paybylink/Email/Addresses.php new file mode 100644 index 0000000..597947b --- /dev/null +++ b/Block/Multishipping/Paybylink/Email/Addresses.php @@ -0,0 +1,80 @@ + + */ +namespace Sapient\Worldpay\Block\Multishipping\Paybylink\Email; + + +/** + * Sales Order Email items. + * + * @api + * @since 100.0.2 + */ +class Addresses extends \Magento\Framework\View\Element\Template +{ + + /** + * @var \Magento\Customer\Model\Address\Config + */ + protected $_addressConfig = null; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + protected $quoteRepository; + /** + * constructor + * + * @param \Magento\Backend\Block\Template\Context $context + * @param \Magento\Customer\Model\Address\Config $addressConfig, + * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger + * @param array $data + */ + public function __construct( + \Magento\Backend\Block\Template\Context $context, + \Magento\Customer\Model\Address\Config $addressConfig, + \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, + \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, + array $data = [] + ) { + $this->wplogger = $wplogger; + $this->_addressConfig = $addressConfig; + $this->quoteRepository = $quoteRepository; + parent::__construct($context, $data); + } + + /** + * Get Multishipping Shipment Addresses + */ + public function getQuote() + { + $quote_id = $this->getData('quote_id'); + $quote = $this->quoteRepository->get($quote_id); + return $quote; + } + + /** + * Format Shipping Address + * + * @param array $address + * @return array + */ + public function getFormatAddressByCode($address) + { + $renderer = $this->_addressConfig->getFormatByCode('html')->getRenderer(); + return $renderer->renderArray($address); + } +} diff --git a/Block/Multishipping/Paybylink/Success.php b/Block/Multishipping/Paybylink/Success.php new file mode 100644 index 0000000..6619b8b --- /dev/null +++ b/Block/Multishipping/Paybylink/Success.php @@ -0,0 +1,21 @@ +httpContext = $httpContext; $this->customerSession = $customerSession; $this->_customerUrl = $customerUrl; + $this->jsLayout = isset($data['jsLayout']) && is_array($data['jsLayout']) ? $data['jsLayout'] : []; + $this->serializer = $serializer; } /** @@ -163,4 +181,14 @@ public function checkCustomerLogin() } return false; } + + /** + * Get JS layout + * + * @return string + */ + public function getJsLayout() + { + return $this->serializer->serialize($this->jsLayout); + } } diff --git a/Block/PaymentRequestApi.php b/Block/PaymentRequestApi.php deleted file mode 100644 index 6bd7b05..0000000 --- a/Block/PaymentRequestApi.php +++ /dev/null @@ -1,72 +0,0 @@ -httpHeader = $httpHeader; - parent::__construct( - $context, - $data - ); - } - /** - * Get User Agent - * - * @return string - */ - - public function getUserAgent() - { - return $this->httpHeader->getHttpUserAgent(); - } - /** - * Get Payment Api Script - * - * @return string - */ - - public function getPaymentApiScript() - { - $script = ''; - return $script; - } -} diff --git a/Block/Recurring/Customer/Subscriptions/Edit.php b/Block/Recurring/Customer/Subscriptions/Edit.php index d85931c..9964c3e 100644 --- a/Block/Recurring/Customer/Subscriptions/Edit.php +++ b/Block/Recurring/Customer/Subscriptions/Edit.php @@ -20,7 +20,7 @@ //use Sapient\Worldpay\Model\Ui\CcConfigProvider; -class Edit extends \Magento\Framework\View\Element\Template +class Edit extends Template { /** * @var \Sapient\Worldpay\Model\Recurring\Subscription|null @@ -54,6 +54,10 @@ class Edit extends \Magento\Framework\View\Element\Template * @var IconsProvider */ private $iconsProvider; + /** + * @var Data + */ + private $helper; /** * @param Template\Context $context diff --git a/Block/SavedCardLink.php b/Block/SavedCardLink.php index 371dc81..b7b428c 100644 --- a/Block/SavedCardLink.php +++ b/Block/SavedCardLink.php @@ -27,6 +27,14 @@ class SavedCardLink extends \Magento\Framework\View\Element\Html\Link\Current */ protected $_scopeConfig = null; + /** + * @var WorldpayConfigProvider + */ + protected $config; + /** + * @var Data + */ + protected $helper; /** * Constructor * diff --git a/Block/Savedcard.php b/Block/Savedcard.php index 5197158..f68de54 100644 --- a/Block/Savedcard.php +++ b/Block/Savedcard.php @@ -16,6 +16,25 @@ class Savedcard extends \Magento\Framework\View\Element\Template * @var \Magento\Customer\Model\Session */ protected $_customerSession; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worlpayhelper; + /** + * @var \Magento\Customer\Helper\Session\CurrentCustomerAddress + */ + protected $currentCustomerAddress; + + /** + * @var \Magento\Customer\Model\Address\Config + */ + protected $_addressConfig; + + /** + * @var \Magento\Customer\Model\Address\Mapper + */ + protected $addressMapper; + /** * @var SerializerInterface */ diff --git a/Block/SubscriptionsLink.php b/Block/SubscriptionsLink.php index 3126eeb..8bccda9 100644 --- a/Block/SubscriptionsLink.php +++ b/Block/SubscriptionsLink.php @@ -27,6 +27,20 @@ class SubscriptionsLink extends \Magento\Framework\View\Element\Html\Link\Curren * @var _scopeConfig */ protected $_scopeConfig = null; + /** + * @var Subscriptions + */ + protected $subscriptionconfig; + + /** + * @var Recurring + */ + protected $helper; + + /** + * @var Recurring + */ + protected $worldpayHelper; /** * Constructor diff --git a/Block/Wallets.php b/Block/Wallets.php index 0e3b17c..8c4d62f 100644 --- a/Block/Wallets.php +++ b/Block/Wallets.php @@ -36,6 +36,41 @@ class Wallets extends \Magento\Catalog\Block\Product\AbstractProduct */ protected $session; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var CustomerRepository + */ + protected $customerRepository; + + /** + * @var CustomerSession + */ + protected $customerSession; + + /** + * @var CustomerAddressDataProvider + */ + protected $customerAddressData; + + /** + * @var \Magento\Directory\Helper\Data + */ + protected $directoryData; + + /** + * @var \Sapient\Worldpay\Helper\Recurring + */ + protected $recurringHelper; + /** * Button constructor * @@ -54,7 +89,7 @@ class Wallets extends \Magento\Catalog\Block\Product\AbstractProduct public function __construct( \Magento\Catalog\Block\Product\Context $context, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, - \Magento\Framework\Session\SessionManagerInterface $session, + SessionManagerInterface $session, \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, \Sapient\Worldpay\Helper\Data $helper, CustomerRepository $customerRepository, diff --git a/Block/Webpayment.php b/Block/Webpayment.php index 4b388ce..f919db8 100644 --- a/Block/Webpayment.php +++ b/Block/Webpayment.php @@ -65,8 +65,33 @@ class Webpayment extends Template private $serializer; /** - * @var httpRequest + * @var Data */ + protected $_helper; + + /** + * @var AbstractCart + */ + protected $_cart; + + /** + * @var Session + */ + protected $_customerSession; + + /** + * @var \Magento\Integration\Model\Oauth\TokenFactory + */ + protected $_tokenModelFactory; + + /** + * @var SessionManagerInterface + */ + protected $session; + + /** + * @var \Magento\Framework\App\Request\Http + */ protected $httpRequest; /** diff --git a/Controller/Adminhtml/Cancel/Index.php b/Controller/Adminhtml/Cancel/Index.php index 96279a4..2ac7962 100644 --- a/Controller/Adminhtml/Cancel/Index.php +++ b/Controller/Adminhtml/Cancel/Index.php @@ -21,6 +21,30 @@ class Index extends \Magento\Backend\App\Action * @var $pageFactory */ protected $pageFactory; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $worldpaytoken; + /** * @var $_rawBody */ diff --git a/Controller/Adminhtml/Recurring/Plan/Save.php b/Controller/Adminhtml/Recurring/Plan/Save.php index 2a31543..816875b 100644 --- a/Controller/Adminhtml/Recurring/Plan/Save.php +++ b/Controller/Adminhtml/Recurring/Plan/Save.php @@ -23,6 +23,15 @@ class Save extends \Sapient\Worldpay\Controller\Adminhtml\Recurring\Plan * @var \Magento\Store\Model\StoreManagerInterface */ private $storeManager; + /** + * @var \Magento\Framework\Locale\FormatInterface + */ + private $localeFormat; + + /** + * @var \Laminas\Uri\Uri + */ + private $uri; /** * Constructor diff --git a/Controller/Adminhtml/Syncstatus/Index.php b/Controller/Adminhtml/Syncstatus/Index.php index d316e49..36197ba 100644 --- a/Controller/Adminhtml/Syncstatus/Index.php +++ b/Controller/Adminhtml/Syncstatus/Index.php @@ -52,6 +52,31 @@ class Index extends \Magento\Backend\App\Action */ private $abstractMethod; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + private $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + private $worldpaytoken; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + private $orderservice; + + /** + * @var JsonFactory + */ + private $resultJsonFactory; + /** * Constructor * diff --git a/Controller/Adminhtml/VoidSale/Index.php b/Controller/Adminhtml/VoidSale/Index.php index 1bfae62..6801481 100644 --- a/Controller/Adminhtml/VoidSale/Index.php +++ b/Controller/Adminhtml/VoidSale/Index.php @@ -52,6 +52,32 @@ class Index extends \Magento\Backend\App\Action */ private $abstractMethod; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + + private $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + + private $orderservice; + + /** + * @var JsonFactory + */ + private $resultJsonFactory; + + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + private $worldpaytoken; + /** * Constructor * diff --git a/Controller/Adminhtml/motoRedirectResult/Cancel.php b/Controller/Adminhtml/motoRedirectResult/Cancel.php index 8dccd09..8ed8a2d 100644 --- a/Controller/Adminhtml/motoRedirectResult/Cancel.php +++ b/Controller/Adminhtml/motoRedirectResult/Cancel.php @@ -31,6 +31,43 @@ class Cancel extends \Magento\Backend\App\Action private $_paymentUpdate; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + + protected $orderservice; + + /** + * @var JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var \Sapient\Worldpay\Model\Adminhtml\Order\Service + */ + protected $adminorderservice; + /** + * @var \Sapient\Worldpay\Model\Request\AuthenticationService + */ + protected $authenticatinservice; + /** + * @var \Sapient\Worldpay\Model\Payment\StateResponse + */ + protected $paymentStateResponse; + /** + * @var \Sapient\Worldpay\Model\Payment\WpResponse + */ + protected $wpresponse; /** * Constructor * diff --git a/Controller/Adminhtml/motoRedirectResult/Failure.php b/Controller/Adminhtml/motoRedirectResult/Failure.php index 9068ebc..71d5aae 100644 --- a/Controller/Adminhtml/motoRedirectResult/Failure.php +++ b/Controller/Adminhtml/motoRedirectResult/Failure.php @@ -14,7 +14,26 @@ */ class Failure extends \Magento\Backend\App\Action { - + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + + protected $orderservice; + + /** + * @var JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var \Sapient\Worldpay\Model\Adminhtml\Order\Service + */ + protected $adminorderservice; /** * Constructor * diff --git a/Controller/Adminhtml/motoRedirectResult/Success.php b/Controller/Adminhtml/motoRedirectResult/Success.php index b34131c..3b4f18d 100644 --- a/Controller/Adminhtml/motoRedirectResult/Success.php +++ b/Controller/Adminhtml/motoRedirectResult/Success.php @@ -14,6 +14,21 @@ */ class Success extends \Magento\Backend\App\Action { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + + protected $orderservice; + + /** + * @var JsonFactory + */ + protected $resultJsonFactory; /** * Constructor * diff --git a/Controller/Applepay/Index.php b/Controller/Applepay/Index.php index a86a551..3bc17a2 100644 --- a/Controller/Applepay/Index.php +++ b/Controller/Applepay/Index.php @@ -23,7 +23,37 @@ class Index extends \Magento\Framework\App\Action\Action * @var curlHelper */ public $curlHelper; - + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + public $wplogger; + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + public $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + public $orderservice; + /** + * @var JsonFactory + */ + public $resultJsonFactory; + /** + * @var \Magento\Framework\App\Request\Http + */ + public $request; + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + public $scopeConfig; + /** + * @var \Magento\Checkout\Model\Cart + */ + public $cart; + /** * Constructor * @@ -33,6 +63,7 @@ class Index extends \Magento\Framework\App\Action\Action * @param \Sapient\Worldpay\Model\Payment\Service $paymentservice * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Framework\App\Request\Http $request + * @param \Magento\Checkout\Model\Cart $cart * @param \Sapient\Worldpay\Helper\CurlHelper $curlHelper * @param \Magento\Framework\Filesystem\Driver\file $fileDriver */ @@ -44,6 +75,7 @@ public function __construct( \Sapient\Worldpay\Model\Payment\Service $paymentservice, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\App\Request\Http $request, + \Magento\Checkout\Model\Cart $cart, \Sapient\Worldpay\Helper\CurlHelper $curlHelper, \Magento\Framework\Filesystem\Driver\file $fileDriver ) { @@ -53,6 +85,7 @@ public function __construct( $this->resultJsonFactory = $resultJsonFactory; $this->scopeConfig = $scopeConfig; $this->request = $request; + $this->cart = $cart; $this->curlHelper = $curlHelper; $this->fileDriver = $fileDriver; } @@ -82,12 +115,8 @@ public function execute() $validation_url = $this->request->getParam('u'); if ($validation_url == 'getTotal') { - - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $cart = $objectManager->get(\Magento\Checkout\Model\Cart::class); - - $subTotal = $cart->getQuote()->getSubtotal(); - $grandTotal = $cart->getQuote()->getGrandTotal(); + $subTotal = $this->cart->getQuote()->getSubtotal(); + $grandTotal = $this->cart->getQuote()->getGrandTotal(); $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); $resultJson->setData($grandTotal); diff --git a/Controller/Button/PlaceOrder.php b/Controller/Button/PlaceOrder.php index 923331d..fa711eb 100644 --- a/Controller/Button/PlaceOrder.php +++ b/Controller/Button/PlaceOrder.php @@ -76,6 +76,15 @@ class PlaceOrder extends Action */ private $orderRepository; + /** + * @var \Magento\Checkout\Model\Session + */ + private $checkoutSession; + /** + * @var \Magento\Framework\App\Response\RedirectInterface + */ + private $redirect; + /** * @param Context $context * @param StoreManagerInterface $storeManager diff --git a/Controller/Cartdetails/Chromepay.php b/Controller/Cartdetails/Chromepay.php index 8d580b0..98524c1 100644 --- a/Controller/Cartdetails/Chromepay.php +++ b/Controller/Cartdetails/Chromepay.php @@ -19,6 +19,11 @@ class Chromepay extends \Magento\Framework\App\Action\Action * @var $_authSession */ protected $_authSession; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; /** * Constructor * diff --git a/Controller/Hostedpaymentpage/Challenge.php b/Controller/Hostedpaymentpage/Challenge.php index 2f244bc..27a28aa 100644 --- a/Controller/Hostedpaymentpage/Challenge.php +++ b/Controller/Hostedpaymentpage/Challenge.php @@ -19,6 +19,16 @@ class Challenge extends \Magento\Framework\App\Action\Action * @var $cookieMetadataFactory */ protected $cookieMetadataFactory; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; /** * Constructor * diff --git a/Controller/Hostedpaymentpage/Pay.php b/Controller/Hostedpaymentpage/Pay.php index 467e5f6..02c4d42 100644 --- a/Controller/Hostedpaymentpage/Pay.php +++ b/Controller/Hostedpaymentpage/Pay.php @@ -14,7 +14,7 @@ class Pay extends \Magento\Framework\App\Action\Action { /** - * @var Magento\Framework\View\Result\PageFactory + * @var \Magento\Framework\View\Result\PageFactory */ protected $pageFactory; @@ -22,6 +22,21 @@ class Pay extends \Magento\Framework\App\Action\Action * @var \Sapient\Worldpay\Model\Checkout\Hpp\State */ protected $_status; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Checkout\Hpp\State + */ + protected $hppstate; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; + /** * Constructor * diff --git a/Controller/Notification/Index.php b/Controller/Notification/Index.php index 8f93431..368f221 100644 --- a/Controller/Notification/Index.php +++ b/Controller/Notification/Index.php @@ -46,6 +46,39 @@ class Index extends \Magento\Framework\App\Action\Action */ protected $fileDriver; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + public $wplogger; + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + public $paymentservice; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + public $orderservice; + /** + * @var JsonFactory + */ + public $resultJsonFactory; + + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + public $worldpaytoken; + + /** + * @var object + */ + public $_paymentUpdate; + + /** + * @var object + */ + public $_order; + /** * Constructor * @@ -256,4 +289,4 @@ private function _updateOrderStatus() $this->abstractMethod->updateOrderStatusForVoidSale($this->_order); $this->abstractMethod->updateOrderStatusForCancelOrder($this->_order); } -} +} \ No newline at end of file diff --git a/Controller/Paybylink/Cancel.php b/Controller/Paybylink/Cancel.php index 5bb31e1..65bca3c 100644 --- a/Controller/Paybylink/Cancel.php +++ b/Controller/Paybylink/Cancel.php @@ -19,6 +19,59 @@ class Cancel extends \Magento\Framework\App\Action\Action */ protected $pageFactory; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + /** + * @var \Sapient\Worldpay\Model\Checkout\Service + */ + protected $checkoutservice; + + /** + * @var \Sapient\Worldpay\Model\Request\AuthenticationService + */ + protected $authenticatinservice; + /** + * @var \Sapient\Worldpay\Model\Payment\StateResponse + */ + protected $paymentStateResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\WpResponse + */ + protected $wpresponse; + + /** + * @var \Magento\Sales\Model\Order + */ + protected $order; + + /** + * @var \Sapient\Worldpay\Model\Payment\MultishippingStateResponse + */ + protected $multishippingStateResponse; + + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + protected $quoteRepository; + + /** + * @var \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection + */ + protected $wpMultishippingCollection; + /** * Constructor * @@ -31,7 +84,10 @@ class Cancel extends \Magento\Framework\App\Action\Action * @param \Sapient\Worldpay\Model\Payment\StateResponse $paymentStateResponse * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger * @param \Sapient\Worldpay\Model\Payment\WpResponse $wpresponse - * @param \Magento\Sales\Model\Order $orderItemsDetails + * @param \Magento\Sales\Model\Order $order + * @param \Sapient\Worldpay\Model\Payment\MultishippingStateResponse $multishippingStateResponse + * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository + * @param \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection $wpMultishippingCollection */ public function __construct( Context $context, @@ -43,7 +99,10 @@ public function __construct( \Sapient\Worldpay\Model\Payment\StateResponseFactory $paymentStateResponse, \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, \Sapient\Worldpay\Model\Payment\WpResponse $wpresponse, - \Magento\Sales\Model\Order $orderItemsDetails + \Magento\Sales\Model\Order $order, + \Sapient\Worldpay\Model\Payment\MultishippingStateResponse $multishippingStateResponse, + \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, + \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection $wpMultishippingCollection ) { $this->pageFactory = $pageFactory; $this->orderservice = $orderservice; @@ -53,7 +112,10 @@ public function __construct( $this->authenticatinservice = $authenticatinservice; $this->paymentStateResponse = $paymentStateResponse; $this->wpresponse = $wpresponse; - $this->orderItemsDetails = $orderItemsDetails; + $this->order = $order; + $this->multishippingStateResponse = $multishippingStateResponse; + $this->quoteRepository = $quoteRepository; + $this->wpMultishippingCollection = $wpMultishippingCollection; return parent::__construct($context); } /** @@ -68,15 +130,37 @@ public function execute() $this->wplogger->info('Params : '.json_encode($params, true)); if (!empty($params['orderKey'])) { preg_match('/\^(\d+)-/', $params['orderKey'], $matches); - $order = $this->orderItemsDetails->loadByIncrementId($matches[1]); + $order = $this->order->loadByIncrementId($matches[1]); if ($order->getId()) { $magentoorder = $order; - $notice = $this->_getCancellationNoticeForOrder($order); - $this->messageManager->addNotice($notice); - $params = $this->getRequest()->getParams(); - if ($this->authenticatinservice->requestAuthenticated($params)) { - if (isset($params['orderKey'])) { - $this->_applyPaymentUpdate($this->wpresponse->createFromCancelledResponse($params), $order); + $quoteId = $order->getQuoteId(); + $quoteObj = $this->quoteRepository->get($quoteId); + if ($quoteObj->getIsMultiShipping()) { + $params = $this->getRequest()->getParams(); + $multiShippingOrders = $this->wpMultishippingCollection->getMultishippingOrderIds($quoteId); + if (count($multiShippingOrders) > 0) { + foreach ($multiShippingOrders as $orderId) { + $orderObj = $this->order->loadByIncrementId($orderId); + $notice = $this->_getCancellationNoticeForOrder($order); + $this->messageManager->addNotice($notice); + $this->_applyPaymentUpdate( + $this->multishippingStateResponse->createResponse( + $params, + $magentoorder->getIncrementId(), + 'cancelled' + ), + $orderObj + ); + } + } + } else { + $notice = $this->_getCancellationNoticeForOrder($order); + $this->messageManager->addNotice($notice); + $params = $this->getRequest()->getParams(); + if ($this->authenticatinservice->requestAuthenticated($params)) { + if (isset($params['orderKey'])) { + $this->_applyPaymentUpdate($this->wpresponse->createFromCancelledResponse($params), $order); + } } } return $this->resultRedirectFactory->create()->setPath('checkout/cart', ['_current' => true]); diff --git a/Controller/Paybylink/Failure.php b/Controller/Paybylink/Failure.php index 8908706..564af03 100644 --- a/Controller/Paybylink/Failure.php +++ b/Controller/Paybylink/Failure.php @@ -29,6 +29,26 @@ class Failure extends \Magento\Framework\App\Action\Action */ private $transactionsFactory; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + + /** + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender + */ + protected $emailsender; + /** * Constructor * diff --git a/Controller/Paybylink/Multishipping/Orderplaced.php b/Controller/Paybylink/Multishipping/Orderplaced.php new file mode 100644 index 0000000..fce0112 --- /dev/null +++ b/Controller/Paybylink/Multishipping/Orderplaced.php @@ -0,0 +1,59 @@ +state = $state; + $this->multishipping = $multishipping; + parent::__construct($context); + } + /** + * Multishipping checkout success page + * + * @return void + */ + public function execute() + { + if (!$this->state->getCompleteStep(State::STEP_OVERVIEW)) { + return $this->resultRedirectFactory->create()->setPath('checkout/cart'); + } + $this->_view->loadLayout(); + $ids = $this->multishipping->getOrderIds(); + $this->_eventManager->dispatch('multishipping_checkout_controller_success_action', ['order_ids' => $ids]); + $this->_view->renderLayout(); + } +} diff --git a/Controller/Paybylink/Multishipping/Success.php b/Controller/Paybylink/Multishipping/Success.php new file mode 100644 index 0000000..5d38ea1 --- /dev/null +++ b/Controller/Paybylink/Multishipping/Success.php @@ -0,0 +1,96 @@ +state = $state; + $this->multishipping = $multishipping; + $this->order = $order; + $this->wpMultishippingCollection = $wpMultishippingCollection; + $this->quoteRepository = $quoteRepository; + parent::__construct($context); + } + /** + * Multishipping checkout success page + * + * @return void + */ + public function execute() + { + $params = $this->getRequest()->getParams(); + if (empty($params['orderKey'])) { + $this->messageManager->addNotice(__("Order key not found.")); + return $this->resultRedirectFactory->create()->setPath('checkout/cart', ['_current' => true]); + } + preg_match('/\^(\d+)-/', $params['orderKey'], $matches); + $order = $this->order->loadByIncrementId($matches[1]); // load order by common multishipping order code + if ($order->getId()) { + $quoteId = $order->getQuoteId(); + $quoteObj = $this->quoteRepository->get($quoteId); + $multiShippingOrders = $this->wpMultishippingCollection->getMultishippingOrderIds($quoteId); + if (count($multiShippingOrders) == 0) { + $this->messageManager->addNotice("Multishipping orders not found"); + return $this->resultRedirectFactory->create()->setPath('checkout/cart', ['_current' => true]); + } + $this->_view->loadLayout(); + $ids = $multiShippingOrders; + $this->_eventManager->dispatch('multishipping_checkout_controller_success_action', ['order_ids' => $ids]); + $this->_view->renderLayout(); + return; + } + $this->messageManager->addNotice("Order not found"); + return $this->resultRedirectFactory->create()->setPath('checkout/cart', ['_current' => true]); + } +} diff --git a/Controller/Paybylink/Orderplaced.php b/Controller/Paybylink/Orderplaced.php index d224ef4..82be7e7 100644 --- a/Controller/Paybylink/Orderplaced.php +++ b/Controller/Paybylink/Orderplaced.php @@ -19,6 +19,11 @@ class Orderplaced extends \Magento\Checkout\Controller\Onepage implements HttpGe */ protected $orderservice; + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + /** * Constructor * @@ -87,7 +92,7 @@ public function __construct( public function execute() { $session = $this->getOnepage()->getCheckout(); - if (!$this->_objectManager->get(\Magento\Checkout\Model\Session\SuccessValidator::class)->isValid()) { + if (!$this->isValid()) { return $this->resultRedirectFactory->create()->setPath('checkout/cart'); } $session->clearQuote(); @@ -103,4 +108,21 @@ public function execute() return $resultPage; } + + /** + * Check if valid quote + * + * @return bool + */ + public function isValid() + { + if (!$this->checkoutsession->getLastSuccessQuoteId()) { + return false; + } + + if (!$this->checkoutsession->getLastQuoteId() || !$this->checkoutsession->getLastOrderId()) { + return false; + } + return true; + } } diff --git a/Controller/Paybylink/Process.php b/Controller/Paybylink/Process.php index 96ef4a1..5ac3369 100644 --- a/Controller/Paybylink/Process.php +++ b/Controller/Paybylink/Process.php @@ -25,6 +25,56 @@ class Process extends \Magento\Framework\App\Action\Action */ protected $quoteFactory; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Sales\Model\Order + */ + protected $orderItemsDetails; + + /** + * @var \Magento\Sales\Model\Order + */ + protected $worldpayhelper; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Request\AuthenticationService + */ + protected $authenticatinservice; + + /** + * @var \Sapient\Worldpay\Model\Payment\WpResponse + */ + protected $wpresponse; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $_checkoutSession; + + /** + * @var \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection + */ + protected $wpMultishippingCollection; + + /** + * @var \Sapient\Worldpay\Model\Payment\MultishippingStateResponse + */ + protected $multishippingStateResponse; + /** * Constructor * @@ -36,6 +86,13 @@ class Process extends \Magento\Framework\App\Action\Action * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger * @param \Magento\Framework\Controller\Result\Redirect $resultRedirectFactory * @param \Magento\Sales\Model\Order $orderItemsDetails + * @param \Sapient\Worldpay\Helper\Data $worldpayhelper + * @param \Sapient\Worldpay\Model\Payment\Service $paymentservice + * @param \Sapient\Worldpay\Model\Request\AuthenticationService $authenticatinservice + * @param \Sapient\Worldpay\Model\Payment\WpResponse $wpresponse + * @param \Magento\Checkout\Model\Session $checkoutSession + * @param \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection $wpMultishippingCollection + * @param \Sapient\Worldpay\Model\Payment\MultishippingStateResponse $multishippingStateResponse */ public function __construct( \Magento\Framework\App\Action\Context $context, @@ -45,7 +102,14 @@ public function __construct( \Sapient\Worldpay\Model\PaymentMethods\PayByLink $paybylink, \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, \Magento\Framework\Controller\Result\Redirect $resultRedirectFactory, - \Magento\Sales\Model\Order $orderItemsDetails + \Magento\Sales\Model\Order $orderItemsDetails, + \Sapient\Worldpay\Helper\Data $worldpayhelper, + \Sapient\Worldpay\Model\Payment\Service $paymentservice, + \Sapient\Worldpay\Model\Request\AuthenticationService $authenticatinservice, + \Sapient\Worldpay\Model\Payment\WpResponse $wpresponse, + \Magento\Checkout\Model\Session $checkoutSession, + \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection $wpMultishippingCollection, + \Sapient\Worldpay\Model\Payment\MultishippingStateResponse $multishippingStateResponse ) { $this->request = $request; $this->orderservice = $orderservice; @@ -54,6 +118,13 @@ public function __construct( $this->wplogger = $wplogger; $this->resultRedirectFactory = $resultRedirectFactory; $this->orderItemsDetails = $orderItemsDetails; + $this->worldpayhelper = $worldpayhelper; + $this->paymentservice = $paymentservice; + $this->authenticatinservice = $authenticatinservice; + $this->wpresponse = $wpresponse; + $this->_checkoutSession = $checkoutSession; + $this->wpMultishippingCollection = $wpMultishippingCollection; + $this->multishippingStateResponse = $multishippingStateResponse; return parent::__construct($context); } @@ -79,6 +150,47 @@ public function execute() $magentoorder = $order->getOrder(); $quoteId = $magentoorder->getQuoteId(); $quote = $this->getPaybylinkquote($quoteId); + /* Start Expiry Code */ + $currentDate = date("Y-m-d H:i:s"); + $orderDate = $orderInfo->getCreatedAt(); + $interval = $this->worldpayhelper->findPblOrderIntervalTime($currentDate, $orderDate); + $expiryTime = $this->worldpayhelper->getPayByLinkExpiryTime(); + $isResendEnable = $this->worldpayhelper->isPayByLinkResendEnable(); + if ($isResendEnable) { + $expiryTime = $this->worldpayhelper->calculatePblResendExpiryTime($expiryTime); + } + if ($interval >= $expiryTime) { + $this->wplogger->info('Pay by link expired. Cancelling the order.'); + $this->_checkoutSession->setauthenticatedOrderId($order->getIncrementId()); + $worldPayPayment = $order->getWorldPayPayment(); + $merchantCode = $worldPayPayment->getMerchantId(); + if ($quote->getIsMultiShipping()) { + $multiShippingOrders = $this->wpMultishippingCollection->getMultishippingOrderIds($quoteId); + if (count($multiShippingOrders) > 0) { + foreach ($multiShippingOrders as $orderId) { + $orderObj = $this->orderItemsDetails->loadByIncrementId($orderId); + $notice = $this->_getCancellationNoticeForOrder($orderObj); + $this->messageManager->addNotice($notice); + $this->_applyPaymentUpdate( + $this->multishippingStateResponse->createCancelledResponse( + $orderCode, + $merchantCode + ), + $orderObj + ); + } + } + } else { + $notice = $this->_getCancellationNoticeForOrder($order); + $this->messageManager->addNotice($notice); + $this->_applyPaymentUpdate( + $this->wpresponse->createFromPblCancelledResponse($orderCode, $merchantCode), + $orderInfo + ); + } + return $this->resultRedirectFactory->create()->setPath('checkout/cart', ['_current' => true]); + } + /* End Expiry Code */ $payment = $magentoorder->getPayment(); $paymentDetails = []; $paymentDetails['additional_data']['cc_type'] = 'ALL'; @@ -103,6 +215,41 @@ public function execute() } } + /** + * Get Cancellation NoticeFor Order + * + * @param array $order + * @return string + */ + private function _getCancellationNoticeForOrder($order) + { + + $incrementId = $order->getIncrementId(); + $message = $incrementId === null + ? __('Order Cancelled') + : __('Order #'. $incrementId.' Cancelled'); + + return $message; + } + + /** + * Apply Payment Update + * + * @param string $paymentState + * @param array $order + * @return string + */ + private function _applyPaymentUpdate($paymentState, $order) + { + try { + $this->_paymentUpdate = $this->paymentservice + ->createPaymentUpdateFromWorldPayResponse($paymentState); + $this->_paymentUpdate->apply($order->getPayment(), $order); + } catch (\Exception $e) { + $this->wplogger->error($e->getMessage()); + } + } + /** * Get pay by link order * diff --git a/Controller/Paybylink/Success.php b/Controller/Paybylink/Success.php index ea288c9..2baab88 100644 --- a/Controller/Paybylink/Success.php +++ b/Controller/Paybylink/Success.php @@ -22,6 +22,26 @@ class Success extends \Magento\Framework\App\Action\Action */ protected $orderItemsDetails; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $_checkoutSession; + + /** + * @var \Magento\Quote\Model\QuoteFactory + */ + protected $quoteFactory; + /** * Constructor * @@ -31,6 +51,7 @@ class Success extends \Magento\Framework\App\Action\Action * @param \Magento\Sales\Model\Order $orderItemsDetails * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger * @param \Magento\Checkout\Model\Session $checkoutSession + * @param \Magento\Quote\Model\QuoteFactory $quoteFactory */ public function __construct( Context $context, @@ -38,13 +59,15 @@ public function __construct( \Sapient\Worldpay\Model\Order\Service $orderservice, \Magento\Sales\Model\Order $orderItemsDetails, \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, - \Magento\Checkout\Model\Session $checkoutSession + \Magento\Checkout\Model\Session $checkoutSession, + \Magento\Quote\Model\QuoteFactory $quoteFactory ) { $this->pageFactory = $pageFactory; $this->orderservice = $orderservice; $this->wplogger = $wplogger; $this->orderItemsDetails = $orderItemsDetails; $this->_checkoutSession = $checkoutSession; + $this->quoteFactory = $quoteFactory; return parent::__construct($context); } @@ -57,7 +80,6 @@ public function execute() { $this->wplogger->info('worldpay returned Pay by link success url'); $params = $this->getRequest()->getParams(); - $this->wplogger->info('Params : '.json_encode($params, true)); if (!empty($params['orderKey'])) { preg_match('/\^(\d+)-/', $params['orderKey'], $matches); $order = $this->orderItemsDetails->loadByIncrementId($matches[1]); @@ -65,8 +87,16 @@ public function execute() $this->setOrderSessionData($order); $this->orderservice->redirectOrderSuccess(); $this->orderservice->removeAuthorisedOrder(); - return $this->resultRedirectFactory->create() - ->setPath('checkout/onepage/success', ['_current' => true]); + $quote = $this->quoteFactory->create()->load($order->getQuoteId()); + $isMultiShipping = $quote->getIsMultiShipping(); + if ($isMultiShipping) { + $url = 'worldpay/paybylink_multishipping/success?orderKey='.$params['orderKey']; + return $this->resultRedirectFactory->create() + ->setPath($url); + } else { + return $this->resultRedirectFactory->create() + ->setPath('checkout/onepage/success', ['_current' => true]); + } } else { $this->wplogger->info('Order not found.Redirecting to checkout cart page'); return $this->resultRedirectFactory->create()->setPath('checkout/cart', ['_current' => true]); diff --git a/Controller/Payment/Pay.php b/Controller/Payment/Pay.php index dcd292b..9e35aed 100644 --- a/Controller/Payment/Pay.php +++ b/Controller/Payment/Pay.php @@ -16,16 +16,16 @@ class Pay extends \Magento\Framework\App\Action\Action { /** - * @var PAYMENT_MANIFEST_JSON + * @var string */ public const PAYMENT_MANIFEST_JSON = 'payment-manifest.json'; /** - * @var MANIFEST_JSON + * @var string */ public const MANIFEST_JSON = 'manifest.json'; /** - * @var curlHelper + * @var \Sapient\Worldpay\Helper\CurlHelper */ public $curlHelper; /** @@ -36,6 +36,51 @@ class Pay extends \Magento\Framework\App\Action\Action * @var _assetRepo */ protected $_assetRepo; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + public $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + public $paymentservice; + + /** + * @var JsonFactory + */ + public $resultJsonFactory; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + public $scopeConfig; + + /** + * @var \Magento\Framework\App\Request\Http + */ + public $request; + + /** + * @var \Magento\Framework\Filesystem + */ + public $_filesystem; + + /** + * @var \Magento\Framework\Setup\JsonPersistor + */ + public $jsonPersistor; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + public $wpHelper; + + /** + * @var \Magento\Framework\Filesystem\Io\File + */ + public $file; /** * Constructor diff --git a/Controller/Recurring/Cancel.php b/Controller/Recurring/Cancel.php index 12901b7..0ba25fd 100644 --- a/Controller/Recurring/Cancel.php +++ b/Controller/Recurring/Cancel.php @@ -38,25 +38,34 @@ class Cancel extends \Magento\Framework\App\Action\Action private $helper; + /** + * @var \Magento\Customer\Model\Url + */ + + private $customerUrl; + /** * @param Context $context * @param Session $customerSession * @param SubscriptionFactory $subscriptionFactory * @param TransactionsFactory $transactionFactory * @param MyAccountException $helper + * @param \Magento\Customer\Model\Url $customerUrl */ public function __construct( Context $context, Session $customerSession, SubscriptionFactory $subscriptionFactory, TransactionsFactory $transactionFactory, - MyAccountException $helper + MyAccountException $helper, + \Magento\Customer\Model\Url $customerUrl ) { parent::__construct($context); $this->customerSession = $customerSession; $this->subscriptionFactory = $subscriptionFactory; $this->transactionFactory = $transactionFactory; $this->helper = $helper; + $this->customerUrl = $customerUrl; } /** @@ -67,8 +76,7 @@ public function __construct( */ public function dispatch(RequestInterface $request) { - $loginUrl = $this->_objectManager->get(\Magento\Customer\Model\Url::class)->getLoginUrl(); - + $loginUrl = $this->customerUrl->getLoginUrl(); if (!$this->customerSession->authenticate($loginUrl)) { $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true); } diff --git a/Controller/Recurring/Edit.php b/Controller/Recurring/Edit.php index f81357e..f016b03 100644 --- a/Controller/Recurring/Edit.php +++ b/Controller/Recurring/Edit.php @@ -36,25 +36,33 @@ class Edit extends \Magento\Framework\App\Action\Action */ private $helper; + /** + * @var \Magento\Customer\Model\Url + */ + private $customerUrl; + /** * @param Context $context * @param Session $customerSession * @param PageFactory $resultPageFactory * @param SubscriptionFactory $subscriptionFactory * @param Sapient\Worldpay\Helper\GeneralException $helper + * @param \Magento\Customer\Model\Url $customerUrl */ public function __construct( Context $context, Session $customerSession, PageFactory $resultPageFactory, SubscriptionFactory $subscriptionFactory, - \Sapient\Worldpay\Helper\GeneralException $helper + \Sapient\Worldpay\Helper\GeneralException $helper, + \Magento\Customer\Model\Url $customerUrl ) { $this->customerSession = $customerSession; parent::__construct($context); $this->resultPageFactory = $resultPageFactory; $this->subscriptionFactory = $subscriptionFactory; $this->helper = $helper; + $this->customerUrl = $customerUrl; } /** @@ -65,8 +73,7 @@ public function __construct( */ public function dispatch(RequestInterface $request) { - $loginUrl = $this->_objectManager->get(\Magento\Customer\Model\Url::class)->getLoginUrl(); - + $loginUrl = $this->customerUrl->getLoginUrl(); if (!$this->customerSession->authenticate($loginUrl)) { $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true); } diff --git a/Controller/Recurring/FormPost.php b/Controller/Recurring/FormPost.php index 756572b..b5602f0 100644 --- a/Controller/Recurring/FormPost.php +++ b/Controller/Recurring/FormPost.php @@ -48,6 +48,11 @@ class FormPost extends \Magento\Framework\App\Action\Action */ protected $helper; + /** + * @var \Magento\Customer\Model\Url + */ + private $customerUrl; + /** * @param Context $context * @param Session $customerSession @@ -56,6 +61,7 @@ class FormPost extends \Magento\Framework\App\Action\Action * @param PaymentTokenFactory $tokenFactory * @param CollectionFactory $regionCollectionFactory * @param MyAccountException $helper + * @param \Magento\Customer\Model\Url $customerUrl */ public function __construct( Context $context, @@ -64,7 +70,8 @@ public function __construct( SubscriptionFactory $subscriptionFactory, PaymentTokenFactory $tokenFactory, CollectionFactory $regionCollectionFactory, - MyAccountException $helper + MyAccountException $helper, + \Magento\Customer\Model\Url $customerUrl ) { parent::__construct($context); $this->customerSession = $customerSession; @@ -73,6 +80,7 @@ public function __construct( $this->tokenFactory = $tokenFactory; $this->regionCollectionFactory = $regionCollectionFactory; $this->helper = $helper; + $this->customerUrl = $customerUrl; } /** @@ -83,8 +91,7 @@ public function __construct( */ public function dispatch(RequestInterface $request) { - $loginUrl = $this->_objectManager->get(\Magento\Customer\Model\Url::class)->getLoginUrl(); - + $loginUrl = $this->customerUrl->getLoginUrl(); if (!$this->customerSession->authenticate($loginUrl)) { $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true); } diff --git a/Controller/Recurring/Index.php b/Controller/Recurring/Index.php index 928d386..b09d55f 100644 --- a/Controller/Recurring/Index.php +++ b/Controller/Recurring/Index.php @@ -16,18 +16,31 @@ class Index extends \Magento\Framework\App\Action\Action implements HttpGetActio */ private $customerSession; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + private $worldpayHelper; + + /** + * @var \Magento\Customer\Model\Url + */ + private $customerUrl; + /** * @param \Magento\Framework\App\Action\Context $context * @param \Magento\Customer\Model\Session $customerSession * @param \Sapient\Worldpay\Helper\Data $worldpayHelper + * @param \Magento\Customer\Model\Url $customerUrl */ public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Customer\Model\Session $customerSession, - \Sapient\Worldpay\Helper\Data $worldpayHelper + \Sapient\Worldpay\Helper\Data $worldpayHelper, + \Magento\Customer\Model\Url $customerUrl ) { $this->customerSession = $customerSession; $this->worldpayHelper = $worldpayHelper; + $this->customerUrl = $customerUrl; parent::__construct($context); } @@ -39,8 +52,7 @@ public function __construct( */ public function dispatch(RequestInterface $request) { - $loginUrl = $this->_objectManager->get(\Magento\Customer\Model\Url::class)->getLoginUrl(); - + $loginUrl = $this->customerUrl->getLoginUrl(); if (!$this->customerSession->authenticate($loginUrl)) { $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true); } diff --git a/Controller/Redirectresult/Cancel.php b/Controller/Redirectresult/Cancel.php index 5d02e20..3038f35 100644 --- a/Controller/Redirectresult/Cancel.php +++ b/Controller/Redirectresult/Cancel.php @@ -15,10 +15,50 @@ class Cancel extends \Magento\Framework\App\Action\Action { /** - * @var Magento\Framework\View\Result\PageFactory + * @var \Magento\Framework\View\Result\PageFactory */ protected $pageFactory; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Checkout\Service + */ + protected $checkoutservice; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Request\AuthenticationService + */ + protected $authenticatinservice; + + /** + * @var \Sapient\Worldpay\Model\Payment\StateResponse + */ + protected $paymentStateResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\WpResponse + */ + protected $wpresponse; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** * Constructor * diff --git a/Controller/Redirectresult/Error.php b/Controller/Redirectresult/Error.php index 313bbad..ad7b83f 100644 --- a/Controller/Redirectresult/Error.php +++ b/Controller/Redirectresult/Error.php @@ -35,6 +35,26 @@ class Error extends \Magento\Framework\App\Action\Action */ protected $helper; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** * Constructor * diff --git a/Controller/Redirectresult/Failure.php b/Controller/Redirectresult/Failure.php index 406c685..0aa35a6 100644 --- a/Controller/Redirectresult/Failure.php +++ b/Controller/Redirectresult/Failure.php @@ -29,6 +29,31 @@ class Failure extends \Magento\Framework\App\Action\Action */ private $transactionsFactory; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + private $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + + /** + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender + */ + protected $emailsender; + /** * Constructor * diff --git a/Controller/Redirectresult/Iframe.php b/Controller/Redirectresult/Iframe.php index 217418a..db01003 100644 --- a/Controller/Redirectresult/Iframe.php +++ b/Controller/Redirectresult/Iframe.php @@ -21,7 +21,27 @@ class Iframe extends \Magento\Framework\App\Action\Action /** * @var \Sapient\Worldpay\Model\Checkout\Hpp\State */ - protected $_status; + protected $hppstate; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var ResultFactory + */ + protected $resultPageFactory; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + + /** + * @var mixed + */ + public $_status; /** * Constructor diff --git a/Controller/Redirectresult/Pending.php b/Controller/Redirectresult/Pending.php index f7531c7..48d7a9d 100644 --- a/Controller/Redirectresult/Pending.php +++ b/Controller/Redirectresult/Pending.php @@ -17,7 +17,42 @@ class Pending extends \Magento\Framework\App\Action\Action * @var Magento\Framework\View\Result\PageFactory */ protected $pageFactory; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Model\Checkout\Service + */ + protected $checkoutservice; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Payment\StateResponseFactory + */ + protected $paymentStateResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\WpResponse + */ + protected $wpresponse; + /** + * @var object + */ + protected $_paymentUpdate; + /** * Constructor * diff --git a/Controller/Redirectresult/Redirect.php b/Controller/Redirectresult/Redirect.php index 2f45ade..f61d4ce 100644 --- a/Controller/Redirectresult/Redirect.php +++ b/Controller/Redirectresult/Redirect.php @@ -19,6 +19,16 @@ class Redirect extends \Magento\Framework\App\Action\Action */ protected $pageFactory; + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + + /** + * @var \Magento\Sales\Model\Order + */ + protected $mageOrder; + /** * Constructor * diff --git a/Controller/Redirectresult/Success.php b/Controller/Redirectresult/Success.php index 73ff75f..b7c938a 100644 --- a/Controller/Redirectresult/Success.php +++ b/Controller/Redirectresult/Success.php @@ -13,10 +13,19 @@ class Success extends \Magento\Framework\App\Action\Action { /** - * @var Magento\Framework\View\Result\PageFactory + * @var \Magento\Framework\View\Result\PageFactory */ protected $pageFactory; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; /** * Constructor * diff --git a/Controller/Samsungpay/CallBack.php b/Controller/Samsungpay/CallBack.php index 64a6b0f..e4cc68b 100644 --- a/Controller/Samsungpay/CallBack.php +++ b/Controller/Samsungpay/CallBack.php @@ -44,6 +44,50 @@ class CallBack extends \Magento\Framework\App\Action\Action */ public $quoteRepository; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + /** + * @var \Magento\Framework\App\Request\Http + */ + protected $request; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $_paymentservicerequest; + + /** + * @var \Magento\Backend\Model\Auth\Session + */ + protected $_authSession; + + /** + * @var \Sapient\Worldpay\Model\WorldpaymentFactory + */ + protected $_worldpaymentFactory; + + /** + * @var \Sapient\Worldpay\Helper\CurlHelper + */ + protected $curlHelper; + /** * Constructor * diff --git a/Controller/Samsungpay/Index.php b/Controller/Samsungpay/Index.php index 17ac660..5c46618 100644 --- a/Controller/Samsungpay/Index.php +++ b/Controller/Samsungpay/Index.php @@ -34,6 +34,36 @@ class Index extends \Magento\Framework\App\Action\Action * @var $customerSession */ public $customerSession; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + public $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + public $paymentservice; + + /** + * @var JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + + /** + * @var \Magento\Framework\App\Request\Http + */ + protected $request; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; /** * Constructor * diff --git a/Controller/Savedcard/Addnewcard.php b/Controller/Savedcard/Addnewcard.php index 16ba30e..14125c0 100644 --- a/Controller/Savedcard/Addnewcard.php +++ b/Controller/Savedcard/Addnewcard.php @@ -19,6 +19,12 @@ class Addnewcard extends \Magento\Framework\App\Action\Action * @var \Magento\Customer\Model\Session */ protected $customerSession; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + /** * Constructor * diff --git a/Controller/Savedcard/AddnewcardPost.php b/Controller/Savedcard/AddnewcardPost.php index b9df28c..e68fa34 100644 --- a/Controller/Savedcard/AddnewcardPost.php +++ b/Controller/Savedcard/AddnewcardPost.php @@ -72,6 +72,75 @@ class AddnewcardPost extends \Magento\Customer\Controller\AbstractAccount protected $helper; + /** + * @var \Magento\Framework\Controller\Result\JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var StoreManagerInterface + */ + protected $_storeManager; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Customer\Api\AddressRepositoryInterface + */ + protected $addressRepository; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $_paymentservicerequest; + + /** + * @var \Magento\Framework\Session\SessionManagerInterface + */ + protected $session; + + /** + * @var \Sapient\Worldpay\Model\Response\DirectResponse + */ + protected $directResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $updateWorldPayPayment; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Magento\Integration\Model\Oauth\TokenFactory + */ + protected $_tokenModelFactory; + + /** + * @var \Magento\SalesSequence\Model\Manager + */ + protected $sequenceManager; + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + /** * Constructor * diff --git a/Controller/Savedcard/Delete.php b/Controller/Savedcard/Delete.php index 43a81d2..8767fc4 100644 --- a/Controller/Savedcard/Delete.php +++ b/Controller/Savedcard/Delete.php @@ -40,6 +40,41 @@ class Delete extends \Magento\Framework\App\Action\Action */ protected $resultRedirect; + /** + * @var StoreManagerInterface + */ + protected $_storeManager; + + /** + * @var SavedTokenFactory + */ + protected $savecard; + + /** + * @var \Sapient\Worldpay\Model\Token\Service + */ + protected $_tokenService; + + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $_worldpayToken; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var PaymentTokenRepositoryInterface + */ + protected $tokenRepository; + + /** + * @var PaymentTokenManagement + */ + protected $paymentTokenManagement; + /** * Constructor * diff --git a/Controller/Savedcard/Edit.php b/Controller/Savedcard/Edit.php index 11828ca..f3da1de 100644 --- a/Controller/Savedcard/Edit.php +++ b/Controller/Savedcard/Edit.php @@ -24,6 +24,16 @@ class Edit extends \Magento\Framework\App\Action\Action */ protected $customerSession; + /** + * @var SavedTokenFactory + */ + protected $savecard; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + /** * Constructor * diff --git a/Controller/Savedcard/EditPost.php b/Controller/Savedcard/EditPost.php index 7b96247..f516a1c 100644 --- a/Controller/Savedcard/EditPost.php +++ b/Controller/Savedcard/EditPost.php @@ -38,7 +38,38 @@ class EditPost extends \Magento\Customer\Controller\AbstractAccount * @var Magento\Framework\Serialize\Serializer\Json */ protected $serializer; + /** + * @var StoreManagerInterface + */ + protected $_storeManager; + + /** + * @var SavedTokenFactory + */ + protected $savecard; + /** + * @var \Sapient\Worldpay\Model\Token\Service + */ + protected $_tokenService; + + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $_worldpayToken; + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $wplogger; + /** + * @var PaymentTokenRepositoryInterface + */ + protected $tokenRepository; + + /** + * @var PaymentTokenManagement + */ + protected $paymentTokenManagement; /** * Constructor * diff --git a/Controller/Savedcard/Index.php b/Controller/Savedcard/Index.php index 2a9d863..10465ff 100644 --- a/Controller/Savedcard/Index.php +++ b/Controller/Savedcard/Index.php @@ -19,6 +19,12 @@ class Index extends \Magento\Framework\App\Action\Action * @var \Magento\Customer\Model\Session */ protected $customerSession; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + /** * Constructor * diff --git a/Controller/Savedcard/Instantredirect.php b/Controller/Savedcard/Instantredirect.php index bca36d9..c2145b7 100644 --- a/Controller/Savedcard/Instantredirect.php +++ b/Controller/Savedcard/Instantredirect.php @@ -19,6 +19,11 @@ class Instantredirect extends \Magento\Framework\App\Action\Action */ protected $redirect; + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $wplogger; + /** * Constructor * diff --git a/Controller/Savedcard/Multishippingredirect.php b/Controller/Savedcard/Multishippingredirect.php index 8713f2c..c0a00da 100644 --- a/Controller/Savedcard/Multishippingredirect.php +++ b/Controller/Savedcard/Multishippingredirect.php @@ -15,6 +15,11 @@ class Multishippingredirect extends \Magento\Framework\App\Action\Action protected $checkoutSession; + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $wplogger; + /** * Constructor * diff --git a/Controller/Savedcard/Redirect.php b/Controller/Savedcard/Redirect.php index 61439f0..49a5b27 100644 --- a/Controller/Savedcard/Redirect.php +++ b/Controller/Savedcard/Redirect.php @@ -15,6 +15,11 @@ class Redirect extends \Magento\Framework\App\Action\Action protected $checkoutSession; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + + protected $wplogger; /** * Constructor * diff --git a/Controller/ThreeDSecure/Auth.php b/Controller/ThreeDSecure/Auth.php index d70d67d..8902743 100644 --- a/Controller/ThreeDSecure/Auth.php +++ b/Controller/ThreeDSecure/Auth.php @@ -13,18 +13,41 @@ class Auth extends \Magento\Framework\App\Action\Action { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** * @var \Magento\Checkout\Model\Session */ protected $checkoutSession; + + /** + * @var \Magento\Framework\View\Result\PageFactory + */ + protected $_resultPageFactory; + /** * @var _assetRepo */ protected $_assetRepo; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var ResultFactory + */ + protected $resultFactory; + /** - * @var request + * @var \Magento\Framework\App\Request\Http */ protected $request; + /** * @var _cookieManager */ diff --git a/Controller/ThreeDSecure/AuthResponse.php b/Controller/ThreeDSecure/AuthResponse.php index f18f8ad..353dd0b 100644 --- a/Controller/ThreeDSecure/AuthResponse.php +++ b/Controller/ThreeDSecure/AuthResponse.php @@ -25,6 +25,47 @@ class AuthResponse extends \Magento\Framework\App\Action\Action * @var cookieMetadataFactory */ protected $cookieMetadataFactory; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Framework\Controller\Result\JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var string + */ + protected $urlBuilder; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + + /** + * @var \Magento\Sales\Model\OrderFactory + */ + protected $orderFactory; + + /** + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender + */ + protected $orderSender; + + /** + * @var \Sapient\Worldpay\Model\Authorisation\ThreeDSecureService + */ + protected $threedsredirectresponse; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $urlBuilders; + /** * Constructor * diff --git a/Controller/ThreeDSecure/ChallengeAuthResponse.php b/Controller/ThreeDSecure/ChallengeAuthResponse.php index 0dc4f7f..e997b45 100644 --- a/Controller/ThreeDSecure/ChallengeAuthResponse.php +++ b/Controller/ThreeDSecure/ChallengeAuthResponse.php @@ -9,10 +9,53 @@ class ChallengeAuthResponse extends \Magento\Framework\App\Action\Action { - /** - * @var CreditCardException - */ + /** + * @var CreditCardException + */ protected $helper; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Magento\Framework\Controller\Result\JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var string + */ + protected $urlBuilder; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + /** + * @var \Magento\Sales\Model\OrderFactory + */ + protected $orderFactory; + + /** + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender + */ + protected $orderSender; + + /** + * @var \Sapient\Worldpay\Model\Authorisation\ThreeDSecureChallenge + */ + protected $threedscredirectresponse; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $urlBuilders; + /** + * @var \Magento\Framework\Session\SessionManagerInterface + */ + protected $session; + /** * Constructor * diff --git a/Controller/ThreeDSecure/ChallengeRedirectResponse.php b/Controller/ThreeDSecure/ChallengeRedirectResponse.php index 30e8bdd..af74d36 100644 --- a/Controller/ThreeDSecure/ChallengeRedirectResponse.php +++ b/Controller/ThreeDSecure/ChallengeRedirectResponse.php @@ -6,6 +6,44 @@ class ChallengeRedirectResponse extends \Magento\Framework\App\Action\Action { + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Magento\Framework\Controller\Result\JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var string + */ + protected $urlBuilder; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + /** + * @var \Magento\Sales\Model\OrderFactory + */ + protected $orderFactory; + + /** + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender + */ + protected $orderSender; + + /** + * @var \Sapient\Worldpay\Model\Authorisation\ThreeDSecureChallenge + */ + protected $threedscredirectresponse; + + /** + * @var \Magento\Framework\View\Result\PageFactory + */ + protected $_resultPageFactory; /** * Constructor * diff --git a/Controller/Wallets/CancelCheckout.php b/Controller/Wallets/CancelCheckout.php index 9eef246..6b94b4a 100644 --- a/Controller/Wallets/CancelCheckout.php +++ b/Controller/Wallets/CancelCheckout.php @@ -10,6 +10,28 @@ class CancelCheckout extends \Magento\Framework\App\Action\Action implements HttpPostActionInterface { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Magento\Framework\Controller\Result\JsonFactory + */ + protected $_resultPageFactory; + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + protected $quoteRepository; + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + /** * Constructor * diff --git a/Controller/Wallets/MultishippingSuccess.php b/Controller/Wallets/MultishippingSuccess.php index e3a3b88..b82da31 100644 --- a/Controller/Wallets/MultishippingSuccess.php +++ b/Controller/Wallets/MultishippingSuccess.php @@ -11,6 +11,14 @@ class MultishippingSuccess extends \Magento\Framework\App\Action\Action { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Magento\Framework\View\Result\PageFactory + */ + protected $_resultPageFactory; /** * Constructor * diff --git a/Controller/Wallets/Success.php b/Controller/Wallets/Success.php index bf6c98c..94a597b 100644 --- a/Controller/Wallets/Success.php +++ b/Controller/Wallets/Success.php @@ -9,6 +9,14 @@ class Success extends \Magento\Framework\App\Action\Action { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Magento\Framework\View\Result\PageFactory + */ + protected $_resultPageFactory; /** * Constructor * diff --git a/Cron/OrderSyncStatus.php b/Cron/OrderSyncStatus.php index ab6ba74..78e3cd4 100644 --- a/Cron/OrderSyncStatus.php +++ b/Cron/OrderSyncStatus.php @@ -39,6 +39,35 @@ class OrderSyncStatus * @var _tokenState */ private $_tokenState; + + /** + * @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory + */ + private $_orderCollectionFactory; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + private $worldpayhelper; + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + private $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + private $orderservice; + + /** + * @var JsonFactory + */ + private $resultJsonFactory; + + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + private $worldpaytoken; /** * Constructor @@ -124,7 +153,7 @@ private function getOrderCollectionFactory() { if ($this->orderCollectionFactory === null) { - $this->orderCollectionFactory = ObjectManager::getInstance()->get(CollectionFactoryInterface::class); + $this->orderCollectionFactory = $this->_orderCollectionFactory; } return $this->orderCollectionFactory; } diff --git a/Cron/PayByLinkOrders.php b/Cron/PayByLinkOrders.php new file mode 100644 index 0000000..5ae2679 --- /dev/null +++ b/Cron/PayByLinkOrders.php @@ -0,0 +1,276 @@ +_logger = $wplogger; + $this->worldpayhelper = $worldpayhelper; + $this->paymentservice = $paymentservice; + $this->orderservice = $orderservice; + $this->wpresponse = $wpresponse; + $this->_storeManager = $_storeManager; + $this->pricingHelper = $pricingHelper; + $this->_addressConfig = $addressConfig; + $this->payByLinkEmail = $payByLinkEmail; + $this->quoteRepository = $quoteRepository; + $this->wpMultishippingCollection = $wpMultishippingCollection; + $this->multishippingStateResponse = $multishippingStateResponse; + $this->orderItemsDetails = $orderItemsDetails; + $this->pblOrder = $pblOrder; + } + + /** + * Get the list of orders to be expired or resend + */ + public function execute() + { + $this->_logger->info('Pay by link orders executed on - '.date('Y-m-d H:i:s')); + $curDate = date("Y-m-d H:i:s"); + $expiryTime = $this->worldpayhelper->getPayByLinkExpiryTime(); + $isResendEnable = $this->worldpayhelper->isPayByLinkResendEnable(); + $resendExpiryTime = ''; + if ($isResendEnable) { + $resendExpiryTime = $this->worldpayhelper->calculatePblResendExpiryTime($expiryTime); + } + $orderIds = $this->pblOrder->getPayByLinkOrderIds($curDate, $expiryTime, $resendExpiryTime); + if (!empty($orderIds)) { + foreach ($orderIds as $order) { + $createdAt = $order['created_at']; + $currentDate = date('Y-m-d H:i:s'); + $interval = $this->worldpayhelper->findPblOrderIntervalTime($currentDate, $createdAt); + $orderIncrementId = $order['increment_id']; + $order = $this->orderservice->getByIncrementId($orderIncrementId); + $magentoorder = $order->getOrder(); + $worldPayPayment = $order->getWorldPayPayment(); + $orderCode = $worldPayPayment->getWorldpayOrderId(); + $merchantCode = $worldPayPayment->getMerchantId(); + $quoteId = $order->getQuoteId(); + $quoteObj = $this->quoteRepository->get($quoteId); + if (empty($resendExpiryTime) || $interval == $resendExpiryTime) { + /* Cancel Order */ + $this->_logger->info('Pay by link expired. Cancelling the order.'); + if ($quoteObj->getIsMultiShipping()) { + $this->cancelMultiShippingOrders( + $quoteObj, + $orderCode, + $merchantCode + ); + } else { + $this->_applyPaymentUpdate( + $this->wpresponse->createFromPblCancelledResponse($orderCode, $merchantCode), + $magentoorder + ); + } + } else { + /* Resend Mail */ + $this->_logger->info('Pay by link resend mail.'); + $pblOrderCodeUrl = 'worldpay/paybylink/process?orderkey='.$orderCode; + $paybylink_url = $this->_storeManager->getStore() + ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB).$pblOrderCodeUrl; + $grandTotal = $this->getFormatGrandTotal($magentoorder); + $address = $magentoorder->getShippingAddress(); + if (empty($address)) { + $address = $magentoorder->getBillingAddress(); + } + $formatedAddress = $this->getFormatAddressByCode($address->getData()); + $customerEmail = $magentoorder->getCustomerEmail(); + $csName = $magentoorder->getCustomerFirstName().' '.$magentoorder->getCustomerLastName(); + $payByLinkParams['paybylink_url'] = $paybylink_url; + $payByLinkParams['orderId'] = $magentoorder->getIncrementId(); + $payByLinkParams['order_total'] = $grandTotal; + $payByLinkParams['formated_shipping'] = $formatedAddress; + $payByLinkParams['customerName'] = $csName; + $payByLinkParams['customerEmail'] = $customerEmail; + $payByLinkParams['is_resend'] = true; + $payByLinkParams['is_multishipping'] = false; + if ($quoteObj->getIsMultiShipping()) { + $payByLinkParams['is_multishipping'] = true; + } + $this->payByLinkEmail->sendPayBylinkEmail($payByLinkParams); + } + } + } + return $this; + } + /** + * Cancel Multishipping Orders + * + * @param object $quoteObj + * @param string $orderCode + * @param string $merchantCode + */ + private function cancelMultiShippingOrders($quoteObj, $orderCode, $merchantCode) + { + $multiShippingOrders = $this->wpMultishippingCollection->getMultishippingOrderIds($quoteObj->getId()); + if (count($multiShippingOrders) > 0) { + foreach ($multiShippingOrders as $orderId) { + $orderObj = $this->orderItemsDetails->loadByIncrementId($orderId); + $this->_applyPaymentUpdate( + $this->multishippingStateResponse->createCancelledResponse( + $orderCode, + $merchantCode + ), + $orderObj + ); + } + } + } + /** + * Apply Payment Update + * + * @param string $paymentState + * @param array $order + * @return string + */ + private function _applyPaymentUpdate($paymentState, $order) + { + try { + $this->_paymentUpdate = $this->paymentservice + ->createPaymentUpdateFromWorldPayResponse($paymentState); + $this->_paymentUpdate->apply($order->getPayment(), $order); + } catch (\Exception $e) { + $this->_logger->error($e->getMessage()); + } + } + /** + * Format Grand Total + * + * @param \Magento\Sales\Model\Order $mageOrder + * @return string + */ + public function getFormatGrandTotal($mageOrder) + { + if ($mageOrder->getGrandTotal()) { + $formattedTotal = $this->pricingHelper->currency($mageOrder->getGrandTotal(), true, false); + return $formattedTotal; + } + } + /** + * Format Shipping Address + * + * @param array $address + * @return array + */ + + public function getFormatAddressByCode($address) + { + $renderer = $this->_addressConfig->getFormatByCode('html')->getRenderer(); + return $renderer->renderArray($address); + } +} diff --git a/Cron/RecurringOrders.php b/Cron/RecurringOrders.php index 77b296f..d7add49 100644 --- a/Cron/RecurringOrders.php +++ b/Cron/RecurringOrders.php @@ -64,7 +64,52 @@ class RecurringOrders * @var CollectionFactory */ private $addressCollectionFactory; - + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + private $worldpayhelper; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + + /** + * @var JsonFactory + */ + protected $resultJsonFactory; + + /** + * @var \Sapient\Worldpay\Model\SavedToken + */ + protected $worldpaytoken; + + /** + * @var \Sapient\Worldpay\Helper\Recurring + */ + protected $recurringhelper; + + /** + * @var \Sapient\Worldpay\Model\Recurring\Subscription\TransactionsFactory + */ + protected $transactionFactory; + + /** + * @var \Sapient\Worldpay\Model\Recurring\PlanFactory + */ + protected $planFactory; + + /** + * @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory + */ + protected $_orderCollectionFactory; + /** * Constructor * @@ -78,7 +123,7 @@ class RecurringOrders * @param \Sapient\Worldpay\Model\Recurring\Subscription $subscriptions * @param \Sapient\Worldpay\Model\Recurring\Subscription\Transactions $recurringTransactions * @param \Sapient\Worldpay\Model\Recurring\Subscription\Address $subscriptionAddress - * @param Sapient\Worldpay\Helper\Recurring $recurringhelper + * @param \Sapient\Worldpay\Helper\Recurring $recurringhelper * @param SubscriptionFactory $subscriptionFactory * @param \Sapient\Worldpay\Model\Recurring\Subscription\TransactionsFactory $transactionsFactory * @param \Sapient\Worldpay\Model\Recurring\PlanFactory $planFactory @@ -129,8 +174,12 @@ public function execute() $totalInfo = $this->getTotalDetails($recurringOrderData); if ($totalInfo && isset($totalInfo['tokenData'][0])) { $orderDetails = $totalInfo['orderDetails'][0]; - $addressDetails['shipping'] = $totalInfo['addressData'][1]; $addressDetails['billing'] = $totalInfo['addressData'][0]; + if (!empty($totalInfo['addressData'][1])) { + $addressDetails['shipping'] = $totalInfo['addressData'][1]; + } else { + $addressDetails['shipping'] = $totalInfo['addressData'][0]; + } $subscriptionDetails = $totalInfo['subscriptionData'][0]; $tokenDetails = $totalInfo['tokenData'][0]; $orderData = [ @@ -289,7 +338,7 @@ private function getOrderCollectionFactory() { if ($this->orderCollectionFactory === null) { - $this->orderCollectionFactory = ObjectManager::getInstance()->get(CollectionFactoryInterface::class); + $this->orderCollectionFactory = $this->_orderCollectionFactory; } return $this->orderCollectionFactory; } diff --git a/Helper/Data.php b/Helper/Data.php index a705173..96fae65 100644 --- a/Helper/Data.php +++ b/Helper/Data.php @@ -50,6 +50,90 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper */ protected $worldpaypaymentmodel; + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + public $paymentlist; + + /** + * @var \Sapient\Worldpay\Helper\Merchantprofile + */ + public $merchantprofile; + + /** + * @var \Magento\Checkout\Model\Session + */ + public $_checkoutSession; + + /** + * @var \Magento\Sales\Model\OrderFactory + */ + public $orderFactory; + + /** + * @var \Sapient\Worldpay\Helper\Recurring + */ + public $recurringHelper; + + /** + * @var \Sapient\Worldpay\Helper\ExtendedResponseCodes + */ + public $extendedResponseCodes; + + /** + * @var \Sapient\Worldpay\Helper\Instalmentconfig + */ + public $instalmentconfig; + + /** + * @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory + */ + public $orderCollectionFactory; + + /** + * @var \Sapient\Worldpay\Model\SavedTokenFactory + */ + public $_savecard; + + /** + * @var \Magento\Sales\Model\Order\ItemFactory + */ + public $_itemFactory; + + /** + * @var \Sapient\Worldpay\Helper\Currencyexponents + */ + public $currencyexponents; + + /** + * @var \Sapient\Worldpay\Helper\KlarnaCountries + */ + public $klarnaCountries; + + /** + * @var \Magento\Backend\Model\Session\Quote + */ + public $adminsessionquote; + + /** + * @var \Magento\Framework\App\ProductMetadataInterface + */ + public $productMetaData; + + /** + * @var \Magento\Quote\Model\QuoteFactory + */ + public $quoteFactory; + + /** + * @var \Magento\Framework\Locale\CurrencyInterface + */ + public $localecurrency; + /** + * @var mixed + */ + public $quotes; + /** * Constructor * @@ -387,7 +471,6 @@ public function getApmTypes($code) $allApmMethods = [ 'CHINAUNIONPAY-SSL' => 'Union Pay', 'IDEAL-SSL' => 'IDEAL', - 'QIWI-SSL' => 'Qiwi', //'YANDEXMONEY-SSL' => 'Yandex.Money', 'PAYPAL-EXPRESS' => 'PayPal', 'SOFORT-SSL' => 'SoFort EU', @@ -407,7 +490,9 @@ public function getApmTypes($code) $activeMethods = []; foreach ($configMethods as $method) { if ($this->paymentlist->checkCurrency($code, $method)) { - $activeMethods[$method] = $allApmMethods[$method]; + if (isset($allApmMethods[$method])) { + $activeMethods[$method] = $allApmMethods[$method]; + } } } return $activeMethods; @@ -421,13 +506,11 @@ public function getApmTypes($code) public function getWalletsTypes($code) { $activeMethods = []; - if ($this->isMultiShipping()) { - if ($this->isGooglePayEnable()) { - $activeMethods['PAYWITHGOOGLE-SSL'] = 'Google Pay'; - } - if ($this->isApplePayEnable()) { - $activeMethods['APPLEPAY-SSL'] = 'Apple Pay'; - } + if ($this->isGooglePayEnable()) { + $activeMethods['PAYWITHGOOGLE-SSL'] = 'Google Pay'; + } + if ($this->isApplePayEnable()) { + $activeMethods['APPLEPAY-SSL'] = 'Apple Pay'; } if ($this->isSamsungPayEnable()) { $activeMethods['SAMSUNGPAY-SSL'] = 'Samsung Pay'; @@ -893,10 +976,24 @@ public function getOrderDescription() \Magento\Store\Model\ScopeInterface::SCOPE_STORE ); if ($this->isMultiShipping()) { - return 'Multishipping - '.$description; + return $this->getMultiShippingOrderDescription(); } return $description; } + + /** + * Get Multishipping OrderDescription + * + * @return string + */ + public function getMultiShippingOrderDescription() + { + $description = $this->_scopeConfig->getValue( + 'worldpay/general_config/order_description', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return __('Multishipping - ').$description; + } /** * Get MotoTitle * @@ -2608,18 +2705,19 @@ public function getCurrentMagentoVersionDetails() } /** * Get Plugin Tracker Details + * + * @param string $username + * @param SimpleXMLElement $xmlQuote */ - public function getPluginTrackerdetails() + public function getPluginTrackerdetails($username, $xmlQuote) { $details=[]; - $details['MERCHANT_ID'] = $this->_scopeConfig->getValue( - 'worldpay/general_config/merchant_code', - \Magento\Store\Model\ScopeInterface::SCOPE_STORE - ); - $details['API_USERNAME'] = $this->_scopeConfig->getValue( - 'worldpay/general_config/xml_username', - \Magento\Store\Model\ScopeInterface::SCOPE_STORE - ); + + $xmlquoteData = clone($xmlQuote); + $quoteData = new \SimpleXmlElement($xmlquoteData->saveXML()); + $merchantCode = (string) $quoteData['merchantCode']; + $details['MERCHANT_ID'] = $merchantCode; + $details['API_USERNAME'] = $username; $magento = $this->getCurrentMagentoVersionDetails(); $details['MAGENTO_EDITION'] = $magento['Edition']; $details['MAGENTO_VERSION'] = $magento['Version']; @@ -2794,6 +2892,26 @@ public function getPayByLinkButtonName() \Magento\Store\Model\ScopeInterface::SCOPE_STORE ); } + /** + * Get Pay by Link Expirt Lifetime + */ + public function getPayByLinkExpiryTime() + { + return $this->_scopeConfig->getValue( + 'worldpay/paybylink_config/paybylink_expiry_time', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + } + /** + * Check if Pay By Link resend option enable + */ + public function isPayByLinkResendEnable() + { + return $this->_scopeConfig->getValue( + 'worldpay/paybylink_config/paybylink_resend_link', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + } /** * GetWorldpayPayment Model */ @@ -2801,4 +2919,273 @@ public function getWorldpayPaymentModel() { return $this->worldpaypaymentmodel; } + /** + * Get Recurring MerchantCode + * + * @return string + */ + public function getRecurringMerchantCode() + { + $recurringMerchantCode = $this->_scopeConfig->getValue( + 'worldpay/recurring_merchant_config/recurring_merchant_code', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $recurringMerchantCode; + } + /** + * Get Recurring Merchant Username + * + * @return string + */ + public function getRecurringUsername() + { + $recurringMerchantUn = $this->_scopeConfig->getValue( + 'worldpay/recurring_merchant_config/recurring_username', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $recurringMerchantUn; + } + /** + * Get Recurring Merchant Password + * + * @return string + */ + public function getRecurringPassword() + { + $recurringMerchantPw = $this->_scopeConfig->getValue( + 'worldpay/recurring_merchant_config/recurring_password', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $recurringMerchantPw; + } + + /** + * Check if Pay By Link merchant code + */ + public function getPayByLinkMerchantCode() + { + $paybyLinkMC = $this->_scopeConfig->getValue( + 'worldpay/paybylink_config/pbl_merchant_code', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $paybyLinkMC; + } + + /** + * Get Pay by Link Merchant username + */ + public function getPayByLinkMerchantUsername() + { + $paybyLinkUn = $this->_scopeConfig->getValue( + 'worldpay/paybylink_config/pbl_xml_username', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $paybyLinkUn; + } + + /** + * Get Pay by Link merchant password + */ + public function getPayByLinkMerchantPassword() + { + $paybyLinkPw = $this->_scopeConfig->getValue( + 'worldpay/paybylink_config/pbl_xml_password', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $paybyLinkPw; + } + + /** + * Get multishipping merchant code + */ + public function getMultishippingMerchantCode() + { + $multishippingMC = $this->_scopeConfig->getValue( + 'worldpay/multishipping/ms_merchant_code', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $multishippingMC; + } + + /** + * Get multishipping Merchant username + */ + public function getMultishippingMerchantUsername() + { + $multishippingUn = $this->_scopeConfig->getValue( + 'worldpay/multishipping/ms_xml_username', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $multishippingUn; + } + + /** + * Get multishipping merchant password + */ + public function getMultishippingMerchantPassword() + { + $multishippingPw = $this->_scopeConfig->getValue( + 'worldpay/multishipping/ms_xml_password', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $multishippingPw; + } + /** + * Get multishipping Installation Id + */ + public function getMultishippingInstallationId() + { + $multishippingIID = $this->_scopeConfig->getValue( + 'worldpay/multishipping/ms_xml_installationId', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $multishippingIID; + } + + /** + * Get PaybyLink Installation Id + */ + public function getPayByLinkInstallationId() + { + $pblIId = $this->_scopeConfig->getValue( + 'worldpay/paybylink_config/pbl_xml_installationId', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + return $pblIId; + } + + /** + * Calculate Pay By Link Resend expiry time + * + * @param int $expiryTime + * @retrun int + */ + public function calculatePblResendExpiryTime($expiryTime) + { + return $expiryTime * 2; + } + + /** + * Find Pay By Link Interval time between order date and current date + * + * @param string $currentDate + * @param string $orderDate + * @retrun int + */ + public function findPblOrderIntervalTime($currentDate, $orderDate) + { + return round(abs(strtotime($currentDate) - strtotime($orderDate))/3600, 0); + } + + /** + * Find Pay By Link expiry date and time + * + * @param string $currentDate + * @param string $expiryTime + * @retrun int + */ + public function findPblOrderExpiryTime($currentDate, $expiryTime) + { + return strtotime(date("Y-m-d H:i:s", strtotime($currentDate)) . " -$expiryTime hour"); + } + + /** + * Find Pay By Link expiry date and time + * + * @param string $minDate + * @retrun array + */ + public function findFromToPblDateAndTime($minDate) + { + $dates = []; + $cronMinDate = date('Y-m-d H:i', $minDate).':00'; + $maxDate = strtotime(date("Y-m-d H:i:s", strtotime($cronMinDate)) . " +59 seconds"); + $cronMaxDate = date('Y-m-d H:i:s', $maxDate); + $dates['from'] = $cronMinDate; + $dates['to'] = $cronMaxDate; + + return $dates; + } + /** + * Get Capture Delay value + */ + public function getCaptureDelayValues() + { + $captureDelay = $this->_scopeConfig->getValue( + 'worldpay/dynamic_capture_delay/capture_delay', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + if ($captureDelay == \Sapient\Worldpay\Model\Config\Source\CaptureDelay::CUSTOM_CAPTURE_DELAY_KEY) { + $captureDelay = $this->_scopeConfig->getValue( + 'worldpay/dynamic_capture_delay/capture_delay_custom_value', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + } + return $captureDelay; + } + /** + * Get SEPA Details + * + * @return string + */ + public function getSEPADetails() + { + $integrationmode = $this->getCcIntegrationMode(); + $apmmethods = $this->getApmTypes('worldpay_apm'); + if (strtoupper($integrationmode) === 'DIRECT' && + array_key_exists("SEPA_DIRECT_DEBIT-SSL", $apmmethods)) { + $data = $this->getSEPAMandateTypes(); + if (!empty($data)) { + return explode(",", $data); + } + } + return []; + } + /** + * Get SEPA E-Mandate + * + * @return string + */ + public function getSepaEmandate(){ + return $this->_scopeConfig->getValue( + 'worldpay/apm_config/sepa_e_mandate', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + } + + /** + * Get SEPA Mandate Types + * + * @return string + */ + public function getSEPAMandateTypes() + { + return $this->_scopeConfig->getValue( + 'worldpay/apm_config/sepa_mandate_types', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + } + /** + * Get SEPA Merchant Number + * + * @return string + */ + + public function getSEPAMerchantNo() + { + return $this->_scopeConfig->getValue( + 'worldpay/apm_config/sepa_merchant_no', + \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ); + } + /** + * Get Order By OrderIncrementId + * + * @param string $orderIncId + * @return string + */ + public function getOrderByOrderIncId($orderIncId) + { + return $this->orderFactory->create()->loadByIncrementId($orderIncId); + } } diff --git a/Helper/Instalmentconfig.php b/Helper/Instalmentconfig.php index 55feb9c..3eae8c1 100644 --- a/Helper/Instalmentconfig.php +++ b/Helper/Instalmentconfig.php @@ -36,24 +36,32 @@ class Instalmentconfig * @var SerializerInterface */ private $serializer; + + /** + * @var \Magento\Framework\Serialize\Serializer\Json + */ + protected $json; /** * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Framework\Math\Random $mathRandom * @param \Sapient\Worldpay\Model\Config\Source\InstalmentTypes $instalmentTypes * @param SerializerInterface $serializer + * @param \Magento\Framework\Serialize\Serializer\Json $json */ public function __construct( \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Math\Random $mathRandom, \Sapient\Worldpay\Model\Config\Source\InstalmentTypes $instalmentTypes, - SerializerInterface $serializer + SerializerInterface $serializer, + \Magento\Framework\Serialize\Serializer\Json $json ) { $this->scopeConfig = $scopeConfig; $this->mathRandom = $mathRandom; $this->instalmentTypes = $instalmentTypes; $this->serializer = $serializer; + $this->json = $json; } /** @@ -328,9 +336,9 @@ public function getSerializedConfigValue($configPath, $store = null) } if ($this->isSerialized($value)) { - $unserializer = ObjectManager::getInstance()->get(\Magento\Framework\Unserialize\Unserialize::class); + $unserializer = $this->serializer; } else { - $unserializer = ObjectManager::getInstance()->get(\Magento\Framework\Serialize\Serializer\Json::class); + $unserializer = $this->json; } return $unserializer->unserialize($value); diff --git a/Helper/KlarnaCountries.php b/Helper/KlarnaCountries.php index f726188..be0d1c0 100644 --- a/Helper/KlarnaCountries.php +++ b/Helper/KlarnaCountries.php @@ -28,6 +28,11 @@ class KlarnaCountries * @var SerializerInterface */ private $serializer; + + /** + * @var \Sapient\Worldpay\Model\Config\Source\KlarnaCountries + */ + protected $klarnaCountries; /** * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig diff --git a/Helper/Multishipping.php b/Helper/Multishipping.php index 9efaf63..2b45ab5 100644 --- a/Helper/Multishipping.php +++ b/Helper/Multishipping.php @@ -39,6 +39,74 @@ class Multishipping */ public $generalexception; + /** + * @var \Magento\Multishipping\Model\Checkout\Type\Multishipping\State + */ + public $state; + /** + * @var \Magento\Framework\Session\SessionManagerInterface + */ + public $session; + /** + * @var \Magento\Checkout\Model\Session + */ + public $checkoutSession; + /** + * @var \Magento\Framework\Message\ManagerInterface + */ + public $messageManager; + /** + * @var \Magento\Framework\Event\ManagerInterface + */ + public $eventManager; + /** + * @var \Sapient\Worldpay\Model\Checkout\Type\MultishippingFactory + */ + public $multishippingCheckoutFactory; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + public $helper; + /** + * @var \Sapient\Worldpay\Model\Multishipping\OrderFactory + */ + public $multishippingOrderFactory; + /** + * @var \Sapient\Worldpay\Model\Multishipping\Order + */ + public $multishippingOrder; + /** + * @var \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection + */ + public $multishippingOrderCollection; + /** + * @var \Magento\Framework\App\Request\Http + */ + public $request; + + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + public $updateWorldPayPayment; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + public $orderservice; + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + public $storeManager; + + /** + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender + */ + public $emailsender; + + /** + * @var \Sapient\Worldpay\Helper\CreditCardException + */ + public $exceptionHelper; + /** * Constructor * @@ -164,7 +232,7 @@ protected function getFinalRedirectUrl($quoteId, $cc_type) // Redirect to the success page $this->state->setCompleteStep(State::STEP_OVERVIEW); $this->state->setActiveStep(State::STEP_SUCCESS); - if ($cc_type == 'ACH_DIRECT_DEBIT-SSL') { + if ($cc_type == 'ACH_DIRECT_DEBIT-SSL' || $cc_type == 'SEPA_DIRECT_DEBIT-SSL') { $url = $this->getUrl('worldpay/savedcard/Multishippingredirect'); $response['redirect'] = $url; } elseif ($cc_type == 'APPLEPAY-SSL') { @@ -622,4 +690,13 @@ public function getConfigValue($order, $paymenttype, $scope = null) $store = $this->storeManager->getStore($storeid)->getCode(); return $this->generalexception->getConfigValue($paymenttype, $store, $scope); } + /** + * Get multishipping order ids + * + * @param string $quoteId + */ + public function getMultishippingOrdersIds($quoteId){ + $multiShippingOrders = $this->multishippingOrderCollection->getMultishippingOrderIds($quoteId); + return $multiShippingOrders; + } } diff --git a/Helper/Recurring.php b/Helper/Recurring.php index a6ffb6b..060e3bb 100644 --- a/Helper/Recurring.php +++ b/Helper/Recurring.php @@ -87,6 +87,61 @@ class Recurring extends \Magento\Framework\App\Helper\AbstractHelper * @var curlHelper */ protected $curlHelper; + + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + protected $_storeManager; + + /** + * @var \Magento\Customer\Model\CustomerFactory + */ + protected $customerFactory; + + /** + * @var \Magento\Customer\Api\CustomerRepositoryInterface + */ + protected $customerRepository; + + /** + * @var \Magento\Sales\Model\Service\OrderService + */ + protected $orderService; + + /** + * @var \Magento\Quote\Model\Quote\Payment + */ + protected $payment; + + /** + * @var \Magento\Checkout\Model\Cart + */ + protected $cart; + + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + + /** + * @var \Magento\Integration\Model\Oauth\TokenFactory + */ + protected $tokenModelFactory; + + /** + * @var \Magento\Quote\Model\QuoteFactory + */ + protected $quote; + + /** + * @var \Magento\Quote\Model\QuoteManagement + */ + protected $quoteManagement; + + /** + * @var \Magento\Integration\Model\Oauth\TokenFactory + */ + protected $_tokenModelFactory; /** * Recurring constructor * @param \Magento\Framework\App\Helper\Context $context @@ -145,15 +200,12 @@ public function __construct( $this->localeDate = $localeDate; $this->scopeConfig = $scopeConfig; $this->_storeManager = $storeManager; - $this->_product = $product; - $this->_formkey = $formkey; $this->quote = $quote; $this->quoteManagement = $quoteManagement; $this->customerFactory = $customerFactory; $this->customerRepository = $customerRepository; $this->orderService = $orderService; $this->payment = $payment; - $this->_cart = $cart; $this->_customerSession = $customerSession; $this->_tokenModelFactory = $tokenModelFactory; $this->serializer = $serializer; @@ -607,8 +659,6 @@ public function createMageOrder($orderData, $paymentData) $customer->loadByEmail($orderData['email']);// load customet by email address $customerToken = $this->_tokenModelFactory->create(); $tokenKey = $customerToken->createCustomerToken($customer->getId())->getToken(); - $savedShippingMethod = explode('_', $orderData['shipping_method']); - $quoteId = $this->createEmptyQuote($tokenKey); $itemData = []; $itemData['cartItem'] = ['sku' => $orderData['product_sku'], @@ -621,20 +671,22 @@ public function createMageOrder($orderData, $paymentData) $this->updateCartItem($cartId, $itemId, $price, $orderData['qty']); $addressData = []; $addressData['address'] = $orderData['shipping_address']; - $shippingMethodResponse = $this->getShippingMethods($tokenKey, json_encode($addressData)); - foreach ($shippingMethodResponse as $shippingMethod) { - if ($shippingMethod['carrier_code'] == $savedShippingMethod[0]) { - $shippingCarrierCode = $shippingMethod['carrier_code']; - $shippingMethodCode = $shippingMethod['method_code']; + if (!empty($orderData['shipping_method'])) { + $savedShippingMethod = explode('_', $orderData['shipping_method']); + $shippingMethodResponse = $this->getShippingMethods($tokenKey, json_encode($addressData)); + foreach ($shippingMethodResponse as $shippingMethod) { + if ($shippingMethod['carrier_code'] == $savedShippingMethod[0]) { + $shippingCarrierCode = $shippingMethod['carrier_code']; + $shippingMethodCode = $shippingMethod['method_code']; + } } + $shippingInformation = []; + $shippingInformation['addressInformation']['shipping_address'] = $orderData['shipping_address']; + $shippingInformation['addressInformation']['billing_address'] = $orderData['billing_address']; + $shippingInformation['addressInformation']['shipping_carrier_code'] = $shippingCarrierCode; + $shippingInformation['addressInformation']['shipping_method_code'] = $shippingMethodCode; + $shippingResponse = $this->setShippingInformation($tokenKey, json_encode($shippingInformation)); } - $shippingInformation = []; - $shippingInformation['addressInformation']['shipping_address'] = $orderData['shipping_address']; - $shippingInformation['addressInformation']['billing_address'] = $orderData['billing_address']; - $shippingInformation['addressInformation']['shipping_carrier_code'] = $shippingCarrierCode; - $shippingInformation['addressInformation']['shipping_method_code'] = $shippingMethodCode; - - $shippingResponse = $this->setShippingInformation($tokenKey, json_encode($shippingInformation)); $paymentData = json_encode($paymentData); $orderId = $this->orderPayment($tokenKey, $paymentData); return $orderId; diff --git a/Helper/SendErrorReport.php b/Helper/SendErrorReport.php index 73fc8b3..7a90380 100644 --- a/Helper/SendErrorReport.php +++ b/Helper/SendErrorReport.php @@ -21,6 +21,21 @@ class SendErrorReport extends \Magento\Framework\App\Helper\AbstractHelper * @var \Sapient\Worldpay\Logger\WorldpayLogger */ protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Mail\Template\EmailTransportBuilder + */ + protected $transportBuilder; + + /** + * @var \Magento\Framework\Translate\Inline\StateInterface + */ + protected $inlineTranslation; + + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + protected $storeManager; /** * SendErrorReport constructor diff --git a/Helper/SendPayByLinkEmail.php b/Helper/SendPayByLinkEmail.php index 2357ab0..6aae960 100644 --- a/Helper/SendPayByLinkEmail.php +++ b/Helper/SendPayByLinkEmail.php @@ -11,6 +11,7 @@ class SendPayByLinkEmail extends \Magento\Framework\App\Helper\AbstractHelper { public const WORLDPAY_SALES_EMAIL_PAYBYLINK_TEMPLATE = "wp_sales_email_paybylink"; + public const WORLDPAY_SALES_EMAIL_PAYBYLINK_MULTISHIPPING_TEMPLATE = "wp_sales_email_paybylink_multishipping"; /** * @var ScopeConfigInterface @@ -20,15 +21,29 @@ class SendPayByLinkEmail extends \Magento\Framework\App\Helper\AbstractHelper * @var \Sapient\Worldpay\Logger\WorldpayLogger */ protected $wplogger; + + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + protected $storeManager; + + /** + * @var \Magento\Framework\Translate\Inline\StateInterface + */ + protected $inlineTranslation; + /** + * @var \Sapient\Worldpay\Model\Mail\Template\EmailTransportBuilder + */ + protected $transportBuilder; /** * @var \Magento\Customer\Model\Session */ protected $_customerSession; - /** - * @var CheckoutSession - */ - private $checkoutSession; + /** + * @var CheckoutSession + */ + private $checkoutSession; /** * SendPayByLinkEmail constructor * @@ -86,6 +101,21 @@ public function getCustomerEmail() } return []; } + /** + * Get Customer Emails + * + * @param string $customerEmail + */ + public function getCustomerEmailForResend($customerEmail) + { + if (!empty($customerEmail)) { + $allEmails = explode(',', $customerEmail); + if (!empty($allEmails)) { + return $allEmails; + } + } + return []; + } /** * Send Email * @@ -96,12 +126,26 @@ public function sendEmail($params, $toEmail) { $senderDetails = $this->getAdminContactEmail(); $templateId = self::WORLDPAY_SALES_EMAIL_PAYBYLINK_TEMPLATE; + if ($params['is_multishipping']) { + $templateId = self::WORLDPAY_SALES_EMAIL_PAYBYLINK_MULTISHIPPING_TEMPLATE; + } try { // template variables pass here $templateVars = $params; - $templateVars['mail_subject'] = __("WORLDPAY: "). + $subject = __("WORLDPAY: "). "Pay by Link for Order".' '.$this->checkoutSession->getAuthenticatedOrderId(); + + if ($params['is_multishipping']) { + $subject = __("WORLDPAY: "). + "Pay by Link for Multishipping Order".' '.$params['orderId']; + } + + if ($params['is_resend']) { + $subject = __("WORLDPAY: "). + "Resend Pay by Link for Order".' '.$params['orderId']; + } + $templateVars['mail_subject'] = $subject; $storeId = $this->storeManager->getStore()->getId(); $from = ['email' => $senderDetails['email'], 'name' => $senderDetails['name']]; $this->inlineTranslation->suspend(); @@ -149,7 +193,11 @@ public function sendPayBylinkEmail($params) { try { if ($this->isEnablePayByLink()) { - $customerEmail = $this->getCustomerEmail(); + if ($params['is_resend']) { + $customerEmail = $this->getCustomerEmailForResend($params['customerEmail']); + } else { + $customerEmail = $this->getCustomerEmail(); + } if (!empty($customerEmail)) { foreach ($customerEmail as $recipientEmail) { $this->sendEmail($params, $recipientEmail); diff --git a/Logger/WorldpayLogger.php b/Logger/WorldpayLogger.php index 12e2dfc..91d6c94 100644 --- a/Logger/WorldpayLogger.php +++ b/Logger/WorldpayLogger.php @@ -4,8 +4,41 @@ */ namespace Sapient\Worldpay\Logger; +use DateTimeZone; +use Monolog\Handler\HandlerInterface; + class WorldpayLogger extends \Monolog\Logger { + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + public $scopeConfig; + + /** + * Constructor + * + * @param string $name + * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + * @param array $handlers + * @param array $processors + * @param DateTimeZone $timezone + * + */ + public function __construct( + string $name, + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + array $handlers = [], + array $processors = [], + ?DateTimeZone $timezone = null + ) { + $this->scopeConfig = $scopeConfig; + parent::__construct( + $name, + $handlers, + $processors, + $timezone ?: new DateTimeZone(date_default_timezone_get() ?: 'UTC') + ); + } /** * Adds a log record. * @@ -17,9 +50,8 @@ class WorldpayLogger extends \Monolog\Logger */ public function addRecord($level, $message, array $context = [], $datetime = null) : bool { - $ObjectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $logEnabled = (bool) $ObjectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) - ->getValue('worldpay/general_config/enable_logging'); + $logEnabled = (bool) $this->scopeConfig->getValue('worldpay/general_config/enable_logging'); + if ($logEnabled) { return parent::addRecord($level, $message, $context); } diff --git a/Model/Adminhtml/Order/Service.php b/Model/Adminhtml/Order/Service.php index f7d7b49..d56723d 100644 --- a/Model/Adminhtml/Order/Service.php +++ b/Model/Adminhtml/Order/Service.php @@ -6,6 +6,15 @@ class Service { + /** + * @var \Magento\Backend\Model\Session\Quote + */ + protected $adminsessionquote; + + /** + * @var \Magento\Sales\Model\AdminOrder\Create + */ + protected $adminordercreate; /** * Service constructor * diff --git a/Model/Authorisation/DirectService.php b/Model/Authorisation/DirectService.php index bdd460f..873765b 100644 --- a/Model/Authorisation/DirectService.php +++ b/Model/Authorisation/DirectService.php @@ -17,6 +17,51 @@ class DirectService extends \Magento\Framework\DataObject * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory */ protected $updateWorldPayPayment; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $mappingservice; + + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Response\DirectResponse + */ + protected $directResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $urlBuilders; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; /** * @var \Magento\Framework\DataObject\Copy @@ -118,6 +163,14 @@ public function authorizePayment( $paymentDetails ); $response = $this->paymentservicerequest->achOrder($directOrderParams); + } elseif ($paymentDetails['additional_data']['cc_type'] == 'SEPA_DIRECT_DEBIT-SSL') { + $directOrderParams = $this->mappingservice->collectSEPAOrderParameters( + $orderCode, + $quote, + $orderStoreId, + $paymentDetails + ); + $response = $this->paymentservicerequest->sepaOrder($directOrderParams); } else { $directOrderParams = $this->mappingservice->collectDirectOrderParameters( $orderCode, diff --git a/Model/Authorisation/HostedPaymentPageService.php b/Model/Authorisation/HostedPaymentPageService.php index 2895378..9d3a972 100644 --- a/Model/Authorisation/HostedPaymentPageService.php +++ b/Model/Authorisation/HostedPaymentPageService.php @@ -13,6 +13,48 @@ class HostedPaymentPageService extends \Magento\Framework\DataObject protected $_status; /** @var \Sapient\Worldpay\Model\Response\RedirectResponse */ protected $_redirectResponseModel; + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $mappingservice; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + + /** + * @var \Sapient\Worldpay\Model\Checkout\Hpp\State + */ + protected $hppstate; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $_urlInterface; + /** + * @var \Sapient\Worldpay\Model\Response\RedirectResponse + */ + protected $redirectresponse; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; /** * Constructor diff --git a/Model/Authorisation/MotoRedirectService.php b/Model/Authorisation/MotoRedirectService.php index c426060..d3137f6 100644 --- a/Model/Authorisation/MotoRedirectService.php +++ b/Model/Authorisation/MotoRedirectService.php @@ -17,6 +17,55 @@ class MotoRedirectService extends \Magento\Framework\DataObject */ protected $_redirectResponseModel; + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $mappingservice; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Response\RedirectResponse + */ + protected $redirectresponse; + + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + protected $paymentlist; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $_urlBuilder; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; + /** * MotoRedirectService constructor * diff --git a/Model/Authorisation/PayByLinkService.php b/Model/Authorisation/PayByLinkService.php index 18fde4a..443c8fd 100644 --- a/Model/Authorisation/PayByLinkService.php +++ b/Model/Authorisation/PayByLinkService.php @@ -24,6 +24,87 @@ class PayByLinkService extends \Magento\Framework\DataObject */ protected $_storeManager; + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $mappingservice; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Response\RedirectResponse + */ + protected $redirectresponse; + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + protected $paymentlist; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + /** + * @var \Magento\Framework\UrlInterface + */ + protected $_urlBuilder; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; + + /** + * @var \Sapient\Worldpay\Helper\SendPayByLinkEmail + */ + protected $payByLinkEmail; + + /** + * @var \Sapient\Worldpay\Model\Request + */ + protected $_request; + + /** + * @var \Magento\Framework\Message\ManagerInterface + */ + protected $_messageManager; + + /** + * @var \Magento\Checkout\Model\Cart + */ + protected $cart; + /** + * @var \Magento\Customer\Model\Address\Config + */ + protected $_addressConfig; + + /** + * @var \Magento\Framework\Pricing\Helper\Data + */ + protected $pricingHelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** * MotoRedirectService constructor * @@ -44,6 +125,7 @@ class PayByLinkService extends \Magento\Framework\DataObject * @param \Magento\Checkout\Model\Cart $cart * @param \Magento\Customer\Model\Address\Config $addressConfig * @param \Magento\Framework\Pricing\Helper\Data $pricingHelper + * @param \Sapient\Worldpay\Helper\Multishipping $multishippingHelper */ public function __construct( \Sapient\Worldpay\Model\Mapping\Service $mappingservice, @@ -62,7 +144,8 @@ public function __construct( \Magento\Framework\Message\ManagerInterface $messageManager, \Magento\Checkout\Model\Cart $cart, \Magento\Customer\Model\Address\Config $addressConfig, - \Magento\Framework\Pricing\Helper\Data $pricingHelper + \Magento\Framework\Pricing\Helper\Data $pricingHelper, + \Sapient\Worldpay\Helper\Multishipping $multishippingHelper ) { $this->mappingservice = $mappingservice; $this->paymentservicerequest = $paymentservicerequest; @@ -81,6 +164,7 @@ public function __construct( $this->cart = $cart; $this->_addressConfig = $addressConfig; $this->pricingHelper = $pricingHelper; + $this->multishippingHelper = $multishippingHelper; } /** @@ -104,14 +188,36 @@ public function authorizePayment( $payment ) { $this->checkoutsession->setauthenticatedOrderId($mageOrder->getIncrementId()); - + /** Start Multishipping Code */ + $isMultishipping = false; + if ($this->multishippingHelper->isMultiShipping($quote)) { + $isMultishipping = true; + $sessionOrderCode = $this->multishippingHelper->getOrderCodeFromSession(); + if (!empty($sessionOrderCode)) { + $orgWorldpayPayment = $this->multishippingHelper->getOrgWorldpayId($sessionOrderCode); + $orgOrderId = $orgWorldpayPayment['order_id']; + $isOrg = false; + $this->multishippingHelper->_createWorldpayMultishipping($mageOrder, $sessionOrderCode, $isOrg); + $this->multishippingHelper->_copyWorldPayPayment($orgOrderId, $orderCode); + $payment->setIsTransactionPending(1); + return; + } else { + $isOrg = true; + $this->multishippingHelper->_createWorldpayMultishipping($mageOrder, $orderCode, $isOrg); + } + } + /** End Multishipping Code */ + $paymentDetails['is_paybylink_order'] = 1; $redirectOrderParams = $this->mappingservice->collectRedirectOrderParameters( $orderCode, $quote, $orderStoreId, $paymentDetails ); - + $redirectOrderParams['is_paybylink_order'] = 1; + if ($isMultishipping) { + $redirectOrderParams['isMultishippingOrder'] = 1; + } $responseXml = $this->paymentservicerequest->redirectOrder($redirectOrderParams); $successUrl = $this->_buildRedirectUrl( @@ -120,24 +226,46 @@ public function authorizePayment( $this->_getCountryForQuote($quote), $orderCode ); + $this->wplogger->info('Multishipping Payment URL =>'); + $this->wplogger->info($successUrl); $payment->setIsTransactionPending(1); $this->registryhelper->setworldpayRedirectUrl($successUrl); $this->checkoutsession->setPayByLinkRedirecturl($successUrl); $paybylink_url = $this->_storeManager->getStore() - ->getBaseUrl().'worldpay/paybylink/process?orderkey='.$orderCode; - + ->getBaseUrl().'worldpay/paybylink/process?orderkey='.$orderCode; + $this->wplogger->info('Pay By link URl '.$paybylink_url); $grandTotal = $this->getFormatGrandTotal($mageOrder); $address = $mageOrder->getShippingAddress(); if (empty($address)) { $address = $mageOrder->getBillingAddress(); } + $quote_id = $quote->getId(); $formatedAddress = $this->getFormatAddressByCode($address->getData()); + $multishippingOrderIds = $this->multishippingHelper->getMultishippingOrdersIds($quote_id); $this->payByLinkEmail->sendPayBylinkEmail([ 'paybylink_url'=>$paybylink_url, 'orderId'=> $mageOrder->getIncrementId(), 'order_total'=> $grandTotal, 'formated_shipping'=> $formatedAddress, - 'customerName' => $mageOrder->getCustomerFirstName().' '.$mageOrder->getCustomerLastName()]); + 'customerName' => $mageOrder->getCustomerFirstName().' '.$mageOrder->getCustomerLastName(), + 'is_multishipping' => $isMultishipping, + 'is_resend' => false, + 'customerEmail' => false, + 'quote_id' => $quote_id, + 'pblexpirytime' => $this->getPayByLinkExpiryTime(), + 'multishipping_order_ids'=> $multishippingOrderIds + ]); + } + + /** + * Get PBL expiry time + * + */ + public function getPayByLinkExpiryTime(){ + $currentDate = date('Y-m-d H:i:s'); + $pblExpiryConfiguration = $this->worldpayhelper->getPayByLinkExpiryTime(); + $interval = date("Y-m-d H:i:s", $this->worldpayhelper->findPblOrderExpiryTime($currentDate, $pblExpiryConfiguration)); + return $interval; } /** @@ -189,6 +317,7 @@ public function authorizeRegenaretPayment( $this->checkoutsession->setauthenticatedOrderId($mageOrder->getIncrementId()); try { + $paymentDetails['is_paybylink_order'] = 1; $redirectOrderParams = $this->mappingservice->collectRedirectOrderParameters( $orderCode, $quote, @@ -197,15 +326,32 @@ public function authorizeRegenaretPayment( ); /* Sending Order Inquiry */ $this->xmlinquiry = new \Sapient\Worldpay\Model\XmlBuilder\Inquiry(); + + $merchantCode = $redirectOrderParams['merchantCode']; + $merchantUsername = $this->worldpayhelper->getXmlUsername($redirectOrderParams['paymentType']); + $merchantPassword = $this->worldpayhelper->getXmlPassword($redirectOrderParams['paymentType']); + $installationId = $this->worldpayhelper->getInstallationId($redirectOrderParams['paymentType']); + // pbl merchant configurations + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblInstallationId = $this->worldpayhelper->getPayByLinkInstallationId(); + + $merchantUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $merchantUsername ; + $merchantPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $merchantPassword ; + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode ; + $installationId = !empty($pblInstallationId) ? $pblInstallationId : $installationId ; + $inquirySimpleXml = $this->xmlinquiry->build( - $redirectOrderParams['merchantCode'], + $merchantCode, $orderCode ); /* Response Order Inquiry */ $responseInquiry = $this->_sendRequest( dom_import_simplexml($inquirySimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($redirectOrderParams['paymentType']), - $this->worldpayhelper->getXmlPassword($redirectOrderParams['paymentType']) + $merchantUsername, + $merchantPassword, + \Sapient\Worldpay\Model\Request\PaymentServiceRequest::SEND_ADDITIONAL_HEADER ); $paymentService = new \SimpleXmlElement($responseInquiry); @@ -214,6 +360,11 @@ public function authorizeRegenaretPayment( if (!empty($error) && $error[0] == 'Could not find payment for order') { $this->wplogger->info('Could not find payment for order ########'.$orderCode); + if ($quote->getIsMultiShipping()) { + $multiDesc = $this->worldpayhelper->getMultiShippingOrderDescription(); + $redirectOrderParams['orderDescription'] = $multiDesc; + } + $redirectOrderParams['is_paybylink_order'] = 1; $responseXml = $this->paymentservicerequest->redirectOrder($redirectOrderParams); $successUrl = $this->_buildRedirectUrl( $responseXml, @@ -390,11 +541,12 @@ private function _setredirectpaybylinkhpp($redirectLink) * @param SimpleXmlElement $xml * @param string $username * @param string $password + * @param bool $additionalHeader * @return SimpleXmlElement $response */ - protected function _sendRequest($xml, $username, $password) + protected function _sendRequest($xml, $username, $password, $additionalHeader) { - $response = $this->_request->sendRequest($xml, $username, $password); + $response = $this->_request->sendRequest($xml, $username, $password, $additionalHeader); return $response; } /** diff --git a/Model/Authorisation/PaymentOptionsService.php b/Model/Authorisation/PaymentOptionsService.php index 211dfbc..ae3647d 100644 --- a/Model/Authorisation/PaymentOptionsService.php +++ b/Model/Authorisation/PaymentOptionsService.php @@ -8,6 +8,22 @@ class PaymentOptionsService extends \Magento\Framework\DataObject { + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $mappingservice; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; /** * Constructor @@ -40,14 +56,18 @@ public function collectPaymentOptions( $countryId, $paymenttype ) { + + $isMultishipping = false; + if ($this->worldpayhelper->isMultiShipping()) { + $isMultishipping = true; + } $paymentOptionParams = $this->mappingservice->collectPaymentOptionsParameters( $countryId, - $paymenttype + $paymenttype, + $isMultishipping ); - - $response = $this->paymentservicerequest->paymentOptionsByCountry($paymentOptionParams); + $response = $this->paymentservicerequest->paymentOptionsByCountry($paymentOptionParams, $isMultishipping); $responsexml = simplexml_load_string($response); - $paymentoptions = $this->getPaymentOptions($responsexml); if ($this->worldpayhelper->isGlobalApmEnable()) { diff --git a/Model/Authorisation/RedirectService.php b/Model/Authorisation/RedirectService.php index 22e4ee1..42d755b 100644 --- a/Model/Authorisation/RedirectService.php +++ b/Model/Authorisation/RedirectService.php @@ -9,9 +9,54 @@ class RedirectService extends \Magento\Framework\DataObject { + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $mappingservice; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** @var \Sapient\Worldpay\Model\Response\RedirectResponse */ protected $_redirectResponseModel; + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + /** + * @var \Sapient\Worldpay\Model\Response\RedirectResponse + */ + protected $redirectresponse; + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + protected $paymentlist; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** * Constructor * @param \Sapient\Worldpay\Model\Mapping\Service $mappingservice diff --git a/Model/Authorisation/ThreeDSecureChallenge.php b/Model/Authorisation/ThreeDSecureChallenge.php index d0e5a9f..10ee72c 100644 --- a/Model/Authorisation/ThreeDSecureChallenge.php +++ b/Model/Authorisation/ThreeDSecureChallenge.php @@ -12,7 +12,60 @@ class ThreeDSecureChallenge extends \Magento\Framework\DataObject protected $updateWorldPayPayment; public const CART_URL = 'checkout/cart'; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Response\DirectResponse + */ + protected $directResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + /** + * @var \Magento\Framework\UrlInterface + */ + protected $urlBuilders; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + /** + * @var \Magento\Framework\Message\ManagerInterface + */ + protected $_messageManager; + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $worldpaytoken; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; /** * ThreeDSecureChallenge Constructor * diff --git a/Model/Authorisation/ThreeDSecureService.php b/Model/Authorisation/ThreeDSecureService.php index 4620895..a79c1f1 100644 --- a/Model/Authorisation/ThreeDSecureService.php +++ b/Model/Authorisation/ThreeDSecureService.php @@ -12,6 +12,73 @@ class ThreeDSecureService extends \Magento\Framework\DataObject protected $updateWorldPayPayment; public const CART_URL = 'checkout/cart'; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $paymentservicerequest; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Response\DirectResponse + */ + protected $directResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $urlBuilders; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + protected $orderservice; + /** + * @var \Magento\Framework\Message\ManagerInterface + */ + protected $_messageManager; + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + /** + * @var \Sapient\Worldpay\Model\Token\WorldpayToken + */ + protected $worldpaytoken; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + + /** + * @var object + */ + protected $_paymentUpdate; + /** + * @var object + */ + protected $_order; + /** + * @var object + */ + protected $response; /** * Constructor diff --git a/Model/Authorisation/TokenService.php b/Model/Authorisation/TokenService.php index 8732276..3198894 100644 --- a/Model/Authorisation/TokenService.php +++ b/Model/Authorisation/TokenService.php @@ -8,15 +8,53 @@ class TokenService extends \Magento\Framework\DataObject { - /** - * @var \Magento\Backend\Model\Auth\Session - */ - protected $_session; + /** + * @var \Sapient\Worldpay\Model\Mapping\Service + */ + protected $mappingservice; /** * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory */ protected $updateWorldPayPayment; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Response\DirectResponse + */ + protected $directResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $paymentservicerequest; + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + /** * TokenService constructor * @@ -77,7 +115,7 @@ public function authorizePayment( if ($this->worldpayHelper->isMultiShipping($quote)) { $sessionOrderCode = $this->multishippingHelper->getOrderCodeFromSession(); if (!empty($sessionOrderCode)) { - $this->checkoutSession->setauthenticatedOrderId($mageOrder->getIncrementId()); + $this->checkoutSession->setauthenticatedOrderId($mageOrder->getIncrementId()); $orgWorldpayPayment = $this->multishippingHelper->getOrgWorldpayId($sessionOrderCode); $orgOrderId = $orgWorldpayPayment['order_id']; $isOrg = false; diff --git a/Model/Authorisation/VaultService.php b/Model/Authorisation/VaultService.php index 7e28ad7..52a850c 100644 --- a/Model/Authorisation/VaultService.php +++ b/Model/Authorisation/VaultService.php @@ -12,6 +12,49 @@ class VaultService extends \Magento\Framework\DataObject * @var \Magento\Checkout\Model\Session */ protected $checkoutSession; + + /** + * @var \Sapient\Worldpay\Model\Mapping\Service + */ + protected $mappingservice; + /** + * @var \Sapient\Worldpay\Model\Payment\UpdateWorldpaymentFactory + */ + protected $updateWorldPayPayment; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Response\DirectResponse + */ + protected $directResponse; + + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $paymentservicerequest; + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; /** * VaultService constructor * diff --git a/Model/Authorisation/WalletService.php b/Model/Authorisation/WalletService.php index 9ca3f16..870653f 100644 --- a/Model/Authorisation/WalletService.php +++ b/Model/Authorisation/WalletService.php @@ -18,6 +18,49 @@ class WalletService extends \Magento\Framework\DataObject */ protected $updateWorldPayPayment; + /** + * @var \Sapient\Worldpay\Model\Mapping\Service + */ + protected $mappingservice; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\Response\DirectResponse + */ + protected $directResponse; + /** + * @var \Sapient\Worldpay\Model\Payment\Service + */ + protected $paymentservice; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $paymentservicerequest; + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $urlBuilders; + /** * WalletService constructor * diff --git a/Model/Checkout/Hpp/Json/Config/Factory.php b/Model/Checkout/Hpp/Json/Config/Factory.php index b0559fd..959264f 100644 --- a/Model/Checkout/Hpp/Json/Config/Factory.php +++ b/Model/Checkout/Hpp/Json/Config/Factory.php @@ -17,6 +17,43 @@ class Factory { /** @var \Magento\Store\Model\Store*/ private $store; + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + private $scopeConfig; + + /** + * @var Repository + */ + private $assetRepo; + /** + * @var RequestInterface + */ + private $request; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + private $worldpayhelper; + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + private $quoteRepository; + + /** + * @var \Magento\Sales\Model\Order + */ + private $mageorder; + + /** + * @var object + */ + private $state; /** * Factory constructor diff --git a/Model/Checkout/Hpp/State.php b/Model/Checkout/Hpp/State.php index dc8b25e..75f62ba 100644 --- a/Model/Checkout/Hpp/State.php +++ b/Model/Checkout/Hpp/State.php @@ -11,6 +11,11 @@ class State public const SESSION_KEY_STATE = 'worldpay_hpp_state'; public const SESSION_KEY_URL = 'worldpay_hpp_redirect_url'; + /** + * @var \Magento\Checkout\Model\Session + */ + public $session; + /** * State constructor * diff --git a/Model/Checkout/Service.php b/Model/Checkout/Service.php index 4569e7b..49f90ee 100644 --- a/Model/Checkout/Service.php +++ b/Model/Checkout/Service.php @@ -8,6 +8,20 @@ class Service { + /** + * @var \Magento\Checkout\Model\Session + */ + private $checkoutsession; + + /** + * @var CustomerCart + */ + private $cart; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; /** * Constructor * diff --git a/Model/Checkout/Type/Multishipping.php b/Model/Checkout/Type/Multishipping.php index 8de46c8..78d51c1 100644 --- a/Model/Checkout/Type/Multishipping.php +++ b/Model/Checkout/Type/Multishipping.php @@ -9,6 +9,12 @@ use Magento\Framework\Exception\NotFoundException; use Magento\Sales\Api\Data\OrderInterface; use Magento\Framework\Pricing\PriceCurrencyInterface; +use Magento\Customer\Api\AddressRepositoryInterface; +use Magento\Sales\Model\Order\Email\Sender\OrderSender; +use Magento\Framework\Exception\LocalizedException; +use Magento\Directory\Model\AllowedCountries; +use Psr\Log\LoggerInterface; +use Magento\Framework\App\ObjectManager; class Multishipping extends \Magento\Multishipping\Model\Checkout\Type\Multishipping { @@ -56,28 +62,103 @@ class Multishipping extends \Magento\Multishipping\Model\Checkout\Type\Multiship * @var \Magento\Quote\Model\Quote\Item\ToOrderItem */ protected $quoteItemToOrderItem; + /** - * Constructor + * @param \Magento\Checkout\Model\Session $checkoutSession + * @param \Magento\Customer\Model\Session $customerSession + * @param \Magento\Sales\Model\OrderFactory $orderFactory + * @param AddressRepositoryInterface $addressRepository + * @param \Magento\Framework\Event\ManagerInterface $eventManager + * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + * @param \Magento\Framework\Session\Generic $session + * @param \Magento\Quote\Model\Quote\AddressFactory $addressFactory + * @param \Magento\Quote\Model\Quote\Address\ToOrder $quoteAddressToOrder + * @param \Magento\Quote\Model\Quote\Address\ToOrderAddress $quoteAddressToOrderAddress + * @param \Magento\Quote\Model\Quote\Payment\ToOrderPayment $quotePaymentToOrderPayment + * @param \Magento\Quote\Model\Quote\Item\ToOrderItem $quoteItemToOrderItem + * @param \Magento\Store\Model\StoreManagerInterface $storeManager + * @param \Magento\Payment\Model\Method\SpecificationInterface $paymentSpecification + * @param \Magento\Multishipping\Helper\Data $helper + * @param OrderSender $orderSender + * @param PriceCurrencyInterface $priceCurrency + * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository + * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder + * @param \Magento\Framework\Api\FilterBuilder $filterBuilder + * @param \Magento\Quote\Model\Quote\TotalsCollector $totalsCollector + * @param array $data + * @param \Magento\Quote\Api\Data\CartExtensionFactory|null $cartExtensionFactory + * @param AllowedCountries|null $allowedCountryReader + * @param \Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderFactory $placeOrderFactory + * @param LoggerInterface|null $logger + * @param \Magento\Framework\Api\DataObjectHelper|null $dataObjectHelper + * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ - protected function _construct() - { - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $placOrder = \Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderFactory::class; - $this->placeOrderFactory = $objectManager->get($placOrder); - $this->logger = $objectManager->get(\Psr\Log\LoggerInterface::class); - $this->session = $objectManager->get(\Magento\Framework\Session\Generic::class); - $this->checkoutSession = $objectManager->get(\Magento\Checkout\Model\Session::class); - $this->eventManager = $objectManager->get(\Magento\Framework\Event\ManagerInterface::class); - $this->_orderFactory = $objectManager->get(\Magento\Sales\Model\OrderFactory::class); - $this->dataObjectHelper = $objectManager->get(\Magento\Framework\Api\DataObjectHelper::class); - $this->quoteAddressToOrder = $objectManager->get(\Magento\Quote\Model\Quote\Address\ToOrder::class); - $toOrderAddress = \Magento\Quote\Model\Quote\Address\ToOrderAddress::class; - $this->quoteAddressToOrderAddress = $objectManager->get($toOrderAddress); - $toOrderPayment = \Magento\Quote\Model\Quote\Payment\ToOrderPayment::class; - $this->quotePaymentToOrderPayment = $objectManager->get($toOrderPayment); - $this->priceCurrency = $objectManager->get(PriceCurrencyInterface::class); - $this->quoteItemToOrderItem = $objectManager->get(\Magento\Quote\Model\Quote\Item\ToOrderItem::class); - $this->quoteRepository = $objectManager->get(\Magento\Quote\Api\CartRepositoryInterface::class); + public function __construct( + \Magento\Checkout\Model\Session $checkoutSession, + \Magento\Customer\Model\Session $customerSession, + \Magento\Sales\Model\OrderFactory $orderFactory, + AddressRepositoryInterface $addressRepository, + \Magento\Framework\Event\ManagerInterface $eventManager, + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + \Magento\Framework\Session\Generic $session, + \Magento\Quote\Model\Quote\AddressFactory $addressFactory, + \Magento\Quote\Model\Quote\Address\ToOrder $quoteAddressToOrder, + \Magento\Quote\Model\Quote\Address\ToOrderAddress $quoteAddressToOrderAddress, + \Magento\Quote\Model\Quote\Payment\ToOrderPayment $quotePaymentToOrderPayment, + \Magento\Quote\Model\Quote\Item\ToOrderItem $quoteItemToOrderItem, + \Magento\Store\Model\StoreManagerInterface $storeManager, + \Magento\Payment\Model\Method\SpecificationInterface $paymentSpecification, + \Magento\Multishipping\Helper\Data $helper, + OrderSender $orderSender, + PriceCurrencyInterface $priceCurrency, + \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, + \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder, + \Magento\Framework\Api\FilterBuilder $filterBuilder, + \Magento\Quote\Model\Quote\TotalsCollector $totalsCollector, + array $data = [], + \Magento\Quote\Api\Data\CartExtensionFactory $cartExtensionFactory = null, + AllowedCountries $allowedCountryReader = null, + \Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderFactory $placeOrderFactory = null, + LoggerInterface $logger = null, + \Magento\Framework\Api\DataObjectHelper $dataObjectHelper = null + ) { + $this->dataObjectHelper = $dataObjectHelper ?: ObjectManager::getInstance() + ->get(\Magento\Framework\Api\DataObjectHelper::class); + $this->placeOrderFactory = $placeOrderFactory ?: ObjectManager::getInstance() + ->get(\Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderFactory::class); + $this->cartExtensionFactory = $cartExtensionFactory ?: + ObjectManager::getInstance() + ->get(\Magento\Quote\Api\Data\CartExtensionFactory::class); + $this->allowedCountryReader = $allowedCountryReader ?: + ObjectManager::getInstance() + ->get(AllowedCountries::class); + $this->logger = $logger ?: ObjectManager::getInstance() + ->get(LoggerInterface::class); + + parent::__construct( + $checkoutSession, + $customerSession, + $orderFactory, + $addressRepository, + $eventManager, + $scopeConfig, + $session, + $addressFactory, + $quoteAddressToOrder, + $quoteAddressToOrderAddress, + $quotePaymentToOrderPayment, + $quoteItemToOrderItem, + $storeManager, + $paymentSpecification, + $helper, + $orderSender, + $priceCurrency, + $quoteRepository, + $searchCriteriaBuilder, + $filterBuilder, + $totalsCollector, + $data + ); } /** @@ -85,8 +166,6 @@ protected function _construct() */ public function createOrders() { - $this->_construct(); - $quote = $this->getQuote(); $orders = []; @@ -106,12 +185,12 @@ public function createOrders() $order = $this->_prepareOrder($address); $orders[] = $order; - $this->eventManager->dispatch( + $this->_eventManager->dispatch( 'checkout_type_multishipping_create_orders_single', ['order' => $order, 'address' => $address, 'quote' => $quote] ); } - + $this->logger->info("=============CREATING THIS ORDER======="); $paymentProviderCode = $quote->getPayment()->getMethod(); $placeOrderService = $this->placeOrderFactory->create($paymentProviderCode); $exceptionList = $placeOrderService->place($orders); @@ -133,7 +212,7 @@ public function createOrders() } $placedAddressItems = []; - $orderIds = []; + $orderIds = []; foreach ($successfulOrders as $order) { $orderIds[$order->getId()] = $order->getIncrementId(); $placedAddressItems = $this->getPlacedAddressItems($order); @@ -177,9 +256,9 @@ protected function _prepareOrder(\Magento\Quote\Model\Quote\Address $address) { $quote = $this->getQuote(); $quote->unsReservedOrderId(); - if (!empty($this->checkoutSession->getHppReservedOrderId())) { - $quote->setReservedOrderId($this->checkoutSession->getHppReservedOrderId()); - $this->checkoutSession->unsHppReservedOrderId(); + if (!empty($this->_checkoutSession->getHppReservedOrderId())) { + $quote->setReservedOrderId($this->_checkoutSession->getHppReservedOrderId()); + $this->_checkoutSession->unsHppReservedOrderId(); } else { $quote->reserveOrderId(); } @@ -262,12 +341,12 @@ public function setResultsPageData($quote, $successfulOrders, $failedOrders, $ex $successfulOrderIds[$order->getId()] = $order->getIncrementId(); } - $this->session->setOrderIds($successfulOrderIds); + $this->_session->setOrderIds($successfulOrderIds); $addressErrors = []; if (!empty($failedOrders)) { $addressErrors = $this->getQuoteAddressErrors($failedOrders, $shippingAddresses, $exceptionList); - $this->session->setAddressErrors($addressErrors); + $this->_session->setAddressErrors($addressErrors); } } /** @@ -303,9 +382,7 @@ public function getAddressErrors($quote, $successfulOrders, $failedOrders, $exce */ public function deactivateQuote($quote) { - $this->_construct(); - - $this->checkoutSession->setLastQuoteId($quote->getId()); + $this->_checkoutSession->setLastQuoteId($quote->getId()); $quote->setIsActive(false); $this->quoteRepository->save($quote); } diff --git a/Model/Config/Source/CaptureDelay.php b/Model/Config/Source/CaptureDelay.php new file mode 100644 index 0000000..9e98305 --- /dev/null +++ b/Model/Config/Source/CaptureDelay.php @@ -0,0 +1,25 @@ + '0', 'label' => __('0')], + ['value' => self::CUSTOM_CAPTURE_DELAY_KEY, 'label' => __('1-14')], + ['value' => 'off', 'label' => __('OFF')], + ['value' => 'default', 'label' => __('DEFAULT')] + ]; + } +} diff --git a/Model/Config/Source/KlarnaCountries.php b/Model/Config/Source/KlarnaCountries.php index 5c1910d..b0d2936 100644 --- a/Model/Config/Source/KlarnaCountries.php +++ b/Model/Config/Source/KlarnaCountries.php @@ -9,11 +9,11 @@ class KlarnaCountries implements \Magento\Framework\Option\ArrayInterface { /** - * @var _countryCollectionFactory + * @var \Magento\Directory\Model\ResourceModel\Country\CollectionFactory */ protected $_countryCollectionFactory; /** - * @var _scopeConfig + * @var \Magento\Framework\App\Config\ScopeConfigInterface */ protected $_scopeConfig; diff --git a/Model/Config/Source/PaymentMethodsApm.php b/Model/Config/Source/PaymentMethodsApm.php index 453d254..6c8a6c0 100644 --- a/Model/Config/Source/PaymentMethodsApm.php +++ b/Model/Config/Source/PaymentMethodsApm.php @@ -16,7 +16,6 @@ public function toOptionArray() return [ ['value' => 'CHINAUNIONPAY-SSL', 'label' => __('Union Pay')], ['value' => 'IDEAL-SSL', 'label' => __('IDEAL')], - ['value' => 'QIWI-SSL', 'label' => __('Qiwi')], //['value' => 'YANDEXMONEY-SSL', 'label' => __('Yandex.Money')], ['value' => 'PAYPAL-EXPRESS', 'label' => __('PayPal')], ['value' => 'SOFORT-SSL', 'label' => __('SoFort EU')], diff --git a/Model/Config/Source/SEPAMandateTypes.php b/Model/Config/Source/SEPAMandateTypes.php new file mode 100644 index 0000000..ee8cb15 --- /dev/null +++ b/Model/Config/Source/SEPAMandateTypes.php @@ -0,0 +1,20 @@ + 'ONE-OFF', 'label' => __('ONE-OFF')] + ]; + } +} diff --git a/Model/Config/Source/Website.php b/Model/Config/Source/Website.php index f9c249c..37524ad 100644 --- a/Model/Config/Source/Website.php +++ b/Model/Config/Source/Website.php @@ -16,7 +16,7 @@ class Website implements \Magento\Framework\Option\ArrayInterface private $storeManager; /** - * @var directoryHelper + * @var Data */ private $directoryHelper; diff --git a/Model/InstantPurchase/CreditCard/AvailabilityChecker.php b/Model/InstantPurchase/CreditCard/AvailabilityChecker.php index c8547ce..2ca7f1b 100644 --- a/Model/InstantPurchase/CreditCard/AvailabilityChecker.php +++ b/Model/InstantPurchase/CreditCard/AvailabilityChecker.php @@ -4,19 +4,19 @@ class AvailabilityChecker implements \Magento\InstantPurchase\PaymentMethodIntegration\AvailabilityCheckerInterface { /** - * @var Config + * @var \Sapient\Worldpay\Helper\Data */ private $config; /** - * @var wplogger + * @var \Sapient\Worldpay\Logger\WorldpayLogger */ private $wplogger; /** * Constructor * - * @param Sapient\Worldpay\Helper\Data $worldpayHelper - * @param Sapient\Worldpay\Logger\WorldpayLogger $wplogger + * @param \Sapient\Worldpay\Helper\Data $worldpayHelper + * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger */ public function __construct( \Sapient\Worldpay\Helper\Data $worldpayHelper, diff --git a/Model/InstantPurchase/CreditCard/TokenFormatter.php b/Model/InstantPurchase/CreditCard/TokenFormatter.php index 0069c56..9e0817e 100644 --- a/Model/InstantPurchase/CreditCard/TokenFormatter.php +++ b/Model/InstantPurchase/CreditCard/TokenFormatter.php @@ -15,6 +15,25 @@ class TokenFormatter implements PaymentTokenFormatterInterface * @var \Sapient\Worldpay\Model\WorldpaymentFactory */ protected $_worldpaymentFactory; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Sapient\Worldpay\Model\SavedTokenFactory + */ + protected $savecard; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $wpdata; + + /** + * @var \Sapient\Worldpay\Model\ResourceModel\SavedToken + */ + protected $savedtoken; /** * @var baseCardTypes */ diff --git a/Model/InstantPurchase/PaymentAdditionalInformationProvider.php b/Model/InstantPurchase/PaymentAdditionalInformationProvider.php index 6aa8b61..9e2f2ce 100644 --- a/Model/InstantPurchase/PaymentAdditionalInformationProvider.php +++ b/Model/InstantPurchase/PaymentAdditionalInformationProvider.php @@ -10,6 +10,18 @@ */ class PaymentAdditionalInformationProvider implements PaymentAdditionalInformationProviderInterface { + /** + * @var WorldpayLogger + */ + protected $logger; + /** + * @var \Magento\Framework\Session\SessionManagerInterface + */ + protected $session; + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; /** * Constructor * diff --git a/Model/Mapping/Service.php b/Model/Mapping/Service.php index bdaa815..b195d07 100644 --- a/Model/Mapping/Service.php +++ b/Model/Mapping/Service.php @@ -8,9 +8,9 @@ class Service { /** - * @var _logger + * @var \Sapient\Worldpay\Logger\WorldpayLogger */ - protected $_logger; + protected $wplogger; /** * @var savedTokenFactory */ @@ -19,10 +19,6 @@ class Service * @var _scopeConfig */ protected $_scopeConfig; - /** - * @var session - */ - protected $session; /** * @var THIS_TRANSACTION */ @@ -59,6 +55,36 @@ class Service * @var NO_CHANGE */ public const NO_CHANGE = 'noChange'; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + + /** + * @var \Sapient\Worldpay\Model\SavedToken + */ + protected $savedtoken; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $_urlBuilder; + + /** + * @var \Magento\Framework\Session\SessionManagerInterface + */ + protected $session; + + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + + /** + * @var \Sapient\Worldpay\Helper\Recurring + */ + protected $recurringHelper; /** * Constructor * @@ -123,6 +149,10 @@ public function collectVaultOrderParameters( $orderLineItems = $this->_getL23OrderLineItems($quote, $vaultPaymentDetails['brand'].'-SSL'); $vaultPaymentDetails['salesTax'] = $quote->getShippingAddress()->getData('tax_amount'); } + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } return [ 'orderCode' => $orderCode, @@ -151,7 +181,8 @@ public function collectVaultOrderParameters( 'shopperId' => $quote->getCustomerId(), 'exponent' => $exponent, 'primeRoutingData' => $this->getPrimeRoutingDetails($paymentDetails, $quote), - 'orderLineItems' => $orderLineItems + 'orderLineItems' => $orderLineItems, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } /** @@ -202,7 +233,11 @@ public function collectDirectOrderParameters( } $currencyCode = $quote->getQuoteCurrencyCode(); $exponent = $this->worldpayHelper->getCurrencyExponent($currencyCode); - + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } + return [ 'orderCode' => $orderCode, 'merchantCode' => $this->worldpayHelper->getMerchantCode($paymentDetails['additional_data']['cc_type']), @@ -235,7 +270,8 @@ public function collectDirectOrderParameters( 'shippingfee' => $shippingFee, 'exponent' => $exponent, 'primeRoutingData' => $this->getPrimeRoutingDetails($paymentDetails, $quote), - 'orderLineItems' => $orderLineItems + 'orderLineItems' => $orderLineItems, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } /** @@ -358,6 +394,10 @@ public function collectRedirectOrderParameters( $orderLineItems = $this->_getL23OrderLineItems($quote, $paymentType); $updatedPaymentDetails['salesTax'] = $quote->getShippingAddress()->getData('tax_amount'); } + + if (!empty($paymentDetails['is_paybylink_order'])) { + $orderLineItems = $this->_getOrderLineItems($quote, 'null'); + } if ($paymentDetails['additional_data']['cc_type'] !== 'savedcard') { $updatedPaymentDetails['cardType'] = $paymentType; @@ -380,6 +420,10 @@ public function collectRedirectOrderParameters( } $currencyCode = $quote->getQuoteCurrencyCode(); $exponent = $this->worldpayHelper->getCurrencyExponent($currencyCode); + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } return [ 'orderCode' => $orderCode, 'merchantCode' => $this->worldpayHelper-> @@ -416,6 +460,7 @@ public function collectRedirectOrderParameters( 'orderLineItems' => $orderLineItems, 'saveCardEnabled' => $savemyCard, 'storedCredentialsEnabled' => $storedCredentialsEnabled, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } @@ -446,6 +491,10 @@ public function collectKlarnaOrderParameters( $currencyCode = $quote->getQuoteCurrencyCode(); $exponent = $this->worldpayHelper->getCurrencyExponent($currencyCode); $countryCode = $quote->getBillingAddress()->getCountryId(); + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } return [ 'orderCode' => $orderCode, 'merchantCode' => $this->worldpayHelper->getMerchantCode($paymentDetails['additional_data']['cc_type']), @@ -475,7 +524,8 @@ public function collectKlarnaOrderParameters( 'shopperId' => $quote->getCustomerId(), 'exponent' => $exponent, 'sessionData' => $this->_getSessionDetails($paymentDetails, $countryCode), - 'orderContent' => $orderContent + 'orderContent' => $orderContent, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } /** @@ -527,7 +577,16 @@ public function collectTokenOrderParameters( $orderLineItems = $this->_getL23OrderLineItems($quote, $paymentType); $updatedPaymentDetails['salesTax'] = $quote->getShippingAddress()->getData('tax_amount'); } - + $merchantCode = $this->worldpayHelper->getMerchantCode($paymentType); + if (isset($updatedPaymentDetails['isRecurringOrder'])) { + if ($updatedPaymentDetails['isRecurringOrder'] == 1) { + $merchantCode = $this->worldpayHelper->getRecurringMerchantCode($paymentType); + } + } + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } return [ 'orderCode' => $orderCode, 'merchantCode' => $this->worldpayHelper->getMerchantCode($paymentType), @@ -561,7 +620,8 @@ public function collectTokenOrderParameters( 'shippingfee' => $shippingFee, 'exponent' => $exponent, 'primeRoutingData' => $this->getPrimeRoutingDetails($paymentDetails, $quote), - 'orderLineItems' => $orderLineItems + 'orderLineItems' => $orderLineItems, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } /** @@ -596,6 +656,10 @@ public function collectACHOrderParameters( $currencyCode = $quote->getQuoteCurrencyCode(); $exponent = $this->worldpayHelper->getCurrencyExponent($currencyCode); + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } return [ 'orderCode' => $orderCode, 'merchantCode' => $this->worldpayHelper->getMerchantCode($paymentDetails['additional_data']['cc_type']), @@ -617,7 +681,63 @@ public function collectACHOrderParameters( 'orderStoreId' => $orderStoreId, 'shopperId' => $quote->getCustomerId(), 'statementNarrative' => $stmtNarrative, - 'exponent' => $exponent + 'exponent' => $exponent, + 'isMultishippingOrder' => $isMultiShippingOrder + ]; + } + /** + * Collect SEPA Order Parameters + * + * @param string $orderCode + * @param int $quote + * @param string $orderStoreId + * @param array $paymentDetails + * @return array + */ + public function collectSEPAOrderParameters( + $orderCode, + $quote, + $orderStoreId, + $paymentDetails + ) { + $reservedOrderId = $quote->getReservedOrderId(); + $stmtNarrative = ''; + $apmPaymentTypes = $this->worldpayHelper->getApmTypes('worldpay_apm'); + if (array_key_exists($paymentDetails['additional_data']['cc_type'], $apmPaymentTypes) + && (isset($paymentDetails['additional_data']['statementNarrative']))) { + $stmtNarrative = $paymentDetails['additional_data']['statementNarrative']; + $stmtNarrative = strlen($stmtNarrative)>15?substr($stmtNarrative, 0, 15):$stmtNarrative; + } + $currencyCode = $quote->getQuoteCurrencyCode(); + $exponent = $this->worldpayHelper->getCurrencyExponent($currencyCode); + + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } + return [ + 'orderCode' => $orderCode, + 'merchantCode' => $this->worldpayHelper->getMerchantCode($paymentDetails['additional_data']['cc_type']), + 'orderDescription' => $this->_getOrderDescription($reservedOrderId), + 'currencyCode' => $quote->getQuoteCurrencyCode(), + 'amount' => $quote->getGrandTotal(), + 'paymentDetails' => $this->_getPaymentDetails($paymentDetails), + 'shopperEmail' => $quote->getCustomerEmail(), + 'acceptHeader' => php_sapi_name() !== "cli" ? filter_input(INPUT_SERVER, 'HTTP_ACCEPT') : '', + 'userAgentHeader' => php_sapi_name() !== "cli" ? filter_input( + INPUT_SERVER, + 'HTTP_USER_AGENT', + FILTER_SANITIZE_FULL_SPECIAL_CHARS, + FILTER_FLAG_STRIP_LOW + ) : '', + 'shippingAddress' => $this->_getShippingAddress($quote), + 'billingAddress' => $this->_getSepaBillingAddress($quote), + 'method' => $paymentDetails['method'], + 'orderStoreId' => $orderStoreId, + 'shopperId' => $quote->getCustomerId(), + 'statementNarrative' => $stmtNarrative, + 'exponent' => $exponent, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } /** @@ -625,14 +745,21 @@ public function collectACHOrderParameters( * * @param Int $countryId * @param string $paymenttype + * @param boolean $ismultishipping * @return array */ public function collectPaymentOptionsParameters( $countryId, - $paymenttype + $paymenttype, + $ismultishipping = false ) { + $merchantCode = $this->worldpayHelper->getMerchantCode($paymenttype); + if ($ismultishipping) { + $msMC = $this->worldpayHelper->getMultishippingMerchantCode(); + $merchantCode = !empty($msMC) ? $msMC : $merchantCode; + } return [ - 'merchantCode' => $this->worldpayHelper->getMerchantCode($paymenttype), + 'merchantCode' => $merchantCode, 'countryCode' => $countryId, 'paymentType' => $paymenttype ]; @@ -722,6 +849,16 @@ private function _getKlarnaBillingAddress($quote) { return $this->_getKlarnaAddress($quote->getBillingAddress()); } + /** + * Collect Sepa Billing Address - This function is used for SEPA alone + * + * @param int $quote + * @return array + */ + private function _getSepaBillingAddress($quote) + { + return $this->_getSepaAddress($quote->getBillingAddress()); + } /** * Collect Order Line Items * @@ -792,8 +929,15 @@ private function _getOrderLineItems($quote, $paymentType = null) $lineitem['unitPrice'] = $shippingPrice + $msTax; $lineitem['totalAmount'] = $shippingPrice + $msTax; $lineitem['totalTaxAmount'] = $msTax; - $lineitem['taxRate'] = (int) (($msTax * 100) / $shippingPrice); - ; + + $lineItemTaxRate = 0; + if ($msTax > 0) { + if ($shippingPrice > 0) { + $lineItemTaxRate = (int) (($msTax * 100) / $shippingPrice); + } + } + + $lineitem['taxRate'] = $lineItemTaxRate; $orderitems['lineItem'][] = $lineitem; } else { $address = $quote->getShippingAddress(); @@ -871,6 +1015,25 @@ private function _getAddress($address) 'countryCode' => $address->getCountryId(), ]; } + /** + * Collect Address - This function is used for SEPA alone + * + * @param array $address + * @return array + */ + private function _getSepaAddress($address) + { + return [ + 'firstName' => $address->getFirstname(), + 'lastName' => $address->getLastname(), + 'street' => $address->getData('street'), + 'postalCode' => $address->getPostcode(), + 'city' => $address->getCity(), + 'state' => $address->getData('region'), + 'countryCode' => $address->getCountryId(), + 'telephone' => $address->getData('telephone'), + ]; + } /** * Collect Klarna Address * @@ -931,6 +1094,18 @@ private function _getPaymentDetails($paymentDetails) $details['shopperIpAddress'] = $this->_getClientIPAddress(); return $details; } + + if ($paymentDetails['additional_data']['cc_type'] == "SEPA_DIRECT_DEBIT-SSL") { + + $details = [ + 'paymentType' => $paymentDetails['additional_data']['cc_type'], + 'sepaMandateType' => $paymentDetails['additional_data']['sepa_mandateType'], + 'sepaIban' => $paymentDetails['additional_data']['sepa_iban'], + 'sepaAccountHolderName' => $paymentDetails['additional_data']['sepa_accountHolderName'] + ]; + $details['sepaMerchantNumber'] = $this->worldpayHelper->getSEPAMerchantNo(); + return $details; + } if ($paymentDetails['additional_data']['cse_enabled']) { $details = [ @@ -1119,7 +1294,10 @@ public function collectWalletOrderParameters( $reservedOrderId = $quote->getReservedOrderId(); $currencyCode = $quote->getQuoteCurrencyCode(); $exponent = $this->worldpayHelper->getCurrencyExponent($currencyCode); - + $isMultiShippingOrder = 0; + if ((bool)$quote->getIsMultiShipping()) { + $isMultiShippingOrder = 1; + } //Google Pay if ($paymentDetails['additional_data']['cc_type'] == 'PAYWITHGOOGLE-SSL') { if ($paymentDetails['additional_data']['walletResponse']) { @@ -1175,7 +1353,8 @@ public function collectWalletOrderParameters( 'paymentDetails' => $paymentDetails, 'threeDSecureConfig' => $this->_getThreeDSecureConfig($paymentDetails['method']), 'shopperIpAddress' => $this->_getClientIPAddress(), - 'exponent' => $exponent + 'exponent' => $exponent, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } } @@ -1214,7 +1393,8 @@ public function collectWalletOrderParameters( 'ephemeralPublicKey' => $ephemeralPublicKey, 'publicKeyHash' => $publicKeyHash, 'transactionId' => $transactionId, - 'exponent' => $exponent + 'exponent' => $exponent, + 'isMultishippingOrder' => $isMultiShippingOrder ]; } } diff --git a/Model/Multishipping/Multishipping.php b/Model/Multishipping/Multishipping.php index 7a35734..d3a3732 100644 --- a/Model/Multishipping/Multishipping.php +++ b/Model/Multishipping/Multishipping.php @@ -16,20 +16,46 @@ class Multishipping extends \Magento\Framework\Model\AbstractModel * @var \Magento\Framework\Json\Helper\Data */ protected $jsonHelper; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $helper; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; + /** * Service constructor. * * @param \Sapient\Worldpay\Helper\Multishipping $multishippingHelper * @param \Sapient\Worldpay\Helper\Data $helper + * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger + * @param \Magento\Checkout\Model\Session $checkoutSession * @param \Magento\Framework\Json\Helper\Data $jsonHelper */ public function __construct( \Sapient\Worldpay\Helper\Multishipping $multishippingHelper, \Sapient\Worldpay\Helper\Data $helper, + \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, + \Magento\Checkout\Model\Session $checkoutSession, \Magento\Framework\Json\Helper\Data $jsonHelper ) { $this->multishippingHelper = $multishippingHelper; $this->helper = $helper; + $this->wplogger = $wplogger; + $this->checkoutSession = $checkoutSession; $this->jsonHelper = $jsonHelper; } /** @@ -52,6 +78,12 @@ public function placeMultishippingOrder( $quoteId = $quote->getId(); $quote->getPayment()->importData($paymentMethod->getData()); $cc_type = $paymentMethod['additional_data']['cc_type']; + if ($paymentMethod['method'] == "worldpay_paybylink" && + $paymentMethod['additional_data']['cc_type'] == "ALL") { + $this->checkoutSession->setAuthenticationOrderId( + $this->checkoutSession->getData('authentication_order_id') + ); + } $response = $this->multishippingHelper->placeMultishippingOrder($quoteId, $cc_type); return $this->jsonHelper->jsonEncode($response); } catch (\Exception $e) { diff --git a/Model/Notification/History.php b/Model/Notification/History.php index c856d3f..0793366 100644 --- a/Model/Notification/History.php +++ b/Model/Notification/History.php @@ -8,7 +8,10 @@ class History implements HistoryInterface { - + /** + * @var \Sapient\Worldpay\Model\HistoryNotification + */ + protected $historyNotification; /** * Constructor * diff --git a/Model/Observer/AddExtraDataToTransport.php b/Model/Observer/AddExtraDataToTransport.php index c8cc7c3..992341a 100644 --- a/Model/Observer/AddExtraDataToTransport.php +++ b/Model/Observer/AddExtraDataToTransport.php @@ -9,11 +9,11 @@ class AddExtraDataToTransport implements ObserverInterface { /** - * @var worldpaypayment + * @var \Sapient\Worldpay\Model\WorldpaymentFactory */ protected $worldpaypayment; /** - * @var wpHelper + * @var \Sapient\Worldpay\Helper\Data */ protected $wpHelper; /** diff --git a/Model/Observer/Cart.php b/Model/Observer/Cart.php index d9f0b50..475acb7 100644 --- a/Model/Observer/Cart.php +++ b/Model/Observer/Cart.php @@ -9,6 +9,25 @@ class Cart implements ObserverInterface { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; + /** + * @var \Sapient\Worldpay\Model\Order\Service + */ + private $orderservice; + + /** + * @var \Sapient\Worldpay\Model\Checkout\Service + */ + private $checkoutservice; + + /** + * @var \Magento\Checkout\Model\Session + */ + private $checkoutsession; + /** * Constructor * diff --git a/Model/Observer/Redirect.php b/Model/Observer/Redirect.php index 093b78b..7f74726 100644 --- a/Model/Observer/Redirect.php +++ b/Model/Observer/Redirect.php @@ -18,6 +18,17 @@ class Redirect implements ObserverInterface * @var _url */ protected $_url; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + /** * Constructor * diff --git a/Model/Observer/Refund.php b/Model/Observer/Refund.php index b987f33..6cc1e06 100644 --- a/Model/Observer/Refund.php +++ b/Model/Observer/Refund.php @@ -9,6 +9,19 @@ class Refund implements ObserverInterface { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + public $wplogger; + /** + * @var \Magento\Framework\Pricing\Helper\Data + */ + public $pricinghelper; + + /** + * @var \Magento\Checkout\Model\Session + */ + public $checkoutsession; /** * Constructor * diff --git a/Model/Order.php b/Model/Order.php index 0e96716..d8e8b50 100644 --- a/Model/Order.php +++ b/Model/Order.php @@ -13,6 +13,51 @@ class Order * @var order */ private $_order; + + /** + * @var \Magento\Sales\Model\Service\InvoiceService + */ + private $_invoiceService; + + /** + * @var \Magento\Framework\DB\Transaction + */ + private $_transaction; + + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + private $worldpaypaymentmodel; + + /** + * @var \Magento\Sales\Model\Order\CreditmemoFactory + */ + private $creditmemoFactory; + + /** + * @var \Magento\Sales\Model\Order\Invoice + */ + private $Invoice; + + /** + * @var \Magento\Sales\Model\Service\CreditmemoService + */ + private $CreditmemoService; + + /** + * @var \Magento\Sales\Model\Order\Creditmemo + */ + private $creditmemo; + + /** + * @var \Magento\Sales\Api\CreditmemoRepositoryInterface + */ + private $creditmemoRepository; + + /** + * @var \Magento\Sales\Model\Order\Creditmemo + */ + private $ordercreditmemo; /** * Constructor diff --git a/Model/Order/Email/Sender/OrderSender.php b/Model/Order/Email/Sender/OrderSender.php index effc126..1e9c7b9 100644 --- a/Model/Order/Email/Sender/OrderSender.php +++ b/Model/Order/Email/Sender/OrderSender.php @@ -21,6 +21,16 @@ class OrderSender extends \Magento\Sales\Model\Order\Email\Sender\OrderSender public const XML_PATH_AUTHORISED_EMAIL_GUEST_TEMPLATE = 'wp_auth_sales_email_order_guest_template'; public const XML_PATH_AUTHORISED_EMAIL_TEMPLATE = 'wp_auth_sales_email_order_template'; + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + public $worldpaypaymentmodel; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + public $scopeConfig; + /** * Constructor * diff --git a/Model/Order/Service.php b/Model/Order/Service.php index 37443e6..9e97af0 100644 --- a/Model/Order/Service.php +++ b/Model/Order/Service.php @@ -7,6 +7,54 @@ class Service { + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + /** + * @var \Magento\Sales\Model\Order + */ + protected $mageorder; + /** + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender + */ + protected $emailsender; + /** + * @var \Magento\Sales\Model\Service\InvoiceService + */ + protected $_invoiceService; + /** + * @var \Magento\Framework\DB\Transaction + */ + protected $_transaction; + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + protected $worldpaypaymentmodel; + /** + * @var \Magento\Sales\Model\Order\CreditmemoFactory + */ + protected $creditmemoFactory; + /** + * @var \Magento\Sales\Model\Order\Invoice + */ + protected $Invoice; + /** + * @var \Magento\Sales\Model\Service\CreditmemoService + */ + protected $CreditmemoService; + /** + * @var \Magento\Sales\Model\Order\Creditmemo + */ + protected $ordercreditmemo; + /** + * @var \Magento\Sales\Api\CreditmemoRepositoryInterface + */ + protected $creditmemoRepository; + /** + * @var \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection + */ + protected $multishippingOrderCollection; /** * Constructor * diff --git a/Model/PayByLink/Order.php b/Model/PayByLink/Order.php new file mode 100644 index 0000000..10b9739 --- /dev/null +++ b/Model/PayByLink/Order.php @@ -0,0 +1,86 @@ +worldpayhelper = $worldpayhelper; + $this->_orderCollectionFactory = $orderCollectionFactory; + } + /** + * Get the list of orders to be expired or resend + * + * @param string $curDate + * @param int $expiryTime + * @param bool|null $resendExpiryTime + * @return array List of order IDs + */ + public function getPayByLinkOrderIds($curDate, $expiryTime, $resendExpiryTime = null) + { + $dateFieldValues = []; + $dateFields = []; + /* Expiry Time date finding */ + $minDate = $this->worldpayhelper->findPblOrderExpiryTime($curDate, $expiryTime); + $cronDates = $this->worldpayhelper->findFromToPblDateAndTime($minDate); + $dateFieldValues[] = ['from' => $cronDates['from'], 'to' => $cronDates['to']]; + $dateFields[] = 'main_table.created_at'; + /* Resend Expiry Time */ + if (!empty($resendExpiryTime)) { + $dateFields[] = 'main_table.created_at'; + $minResendDate = $this->worldpayhelper->findPblOrderExpiryTime($curDate, $resendExpiryTime); + $cronResendDates = $this->worldpayhelper->findFromToPblDateAndTime($minResendDate); + $dateFieldValues[] = ['from' => $cronResendDates['from'], 'to' => $cronResendDates['to']]; + } + $orderStatus = 'pending'; + $orders = $this->getOrderCollectionFactory()->create(); + $orders->distinct(true); + $orders->addFieldToSelect(['increment_id','created_at']); + $orders->addFieldToFilter('main_table.status', ['in' => $orderStatus]); + $orders->addFieldToFilter($dateFields, $dateFieldValues); + $orders->addFieldToFilter('og.payment_method', ['eq' => 'worldpay_paybylink']); + $orders->join(['wp' => 'worldpay_payment'], 'wp.order_id=main_table.increment_id', ''); + $orders->join(['og' => 'sales_order_grid'], 'og.entity_id=main_table.entity_id', ''); + $orders->getSelect()->group('wp.worldpay_order_id'); + $orderIds = $orders->getData(); + return $orderIds; + } + /** + * Get Order Collection Factory + * + * @return CollectionFactoryInterface + */ + private function getOrderCollectionFactory() + { + if ($this->orderCollectionFactory === null) { + + $this->orderCollectionFactory = $this->_orderCollectionFactory; + } + return $this->orderCollectionFactory; + } +} diff --git a/Model/Payment/HostedUrl.php b/Model/Payment/HostedUrl.php index d35ee5c..79dbd0e 100644 --- a/Model/Payment/HostedUrl.php +++ b/Model/Payment/HostedUrl.php @@ -57,6 +57,16 @@ class HostedUrl implements HostedUrlInterface * @var quoteIdMaskFactory */ protected $quoteIdMaskFactory; + + /** + * @var Repository + */ + protected $assetRepo; + + /** + * @var mixed + */ + protected $store; /** * Constructor diff --git a/Model/Payment/MultishippingStateResponse.php b/Model/Payment/MultishippingStateResponse.php new file mode 100644 index 0000000..af394f7 --- /dev/null +++ b/Model/Payment/MultishippingStateResponse.php @@ -0,0 +1,91 @@ +stateResponse = $stateResponse; + } + /** + * Extract merchant code from params + * + * @param Array $params + */ + public function extractMerchantCodeFromParams($params) + { + $orderkey = $params['orderKey']; + $extractMerchantCode = explode('^', $orderkey); + $merchantCode = $extractMerchantCode[1]; + return $merchantCode; + } + + /** + * Create Response + * + * @param string $params + * @param string $ordercode + * @param string $status + */ + public function createResponse($params, $ordercode, $status) + { + $merchantCode = $this->extractMerchantCodeFromParams($params); + $stateResponseObj = null; + switch ($status) { + case 'cancelled': + $stateResponseObj = new \Sapient\Worldpay\Model\Payment\StateResponse( + $ordercode, + $merchantCode, + \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_CANCELLED, + null + ); + break; + case 'pending': + $stateResponseObj = new \Sapient\Worldpay\Model\Payment\StateResponse( + $ordercode, + $merchantCode, + \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_PENDING_PAYMENT, + null + ); + break; + default: + $stateResponseObj = new \Sapient\Worldpay\Model\Payment\StateResponse( + $ordercode, + $merchantCode, + \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_PENDING_PAYMENT, + null + ); + break; + } + return $stateResponseObj; + } + /** + * Create Cancelled Response + * + * @param string $ordercode + * @param string $merchantCode + */ + public function createCancelledResponse($ordercode, $merchantCode) + { + $stateResponseObj = null; + $stateResponseObj = new \Sapient\Worldpay\Model\Payment\StateResponse( + $ordercode, + $merchantCode, + \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_CANCELLED, + null + ); + return $stateResponseObj; + } +} diff --git a/Model/Payment/PaymentTypes.php b/Model/Payment/PaymentTypes.php index e7fd853..a76f71f 100644 --- a/Model/Payment/PaymentTypes.php +++ b/Model/Payment/PaymentTypes.php @@ -8,6 +8,10 @@ class PaymentTypes implements PaymentTypeInterface { + /** + * @var \Sapient\Worldpay\Model\Authorisation\PaymentOptionsService + */ + public $paymentoptionsservice; /** * Constructor * diff --git a/Model/Payment/Service.php b/Model/Payment/Service.php index c1bd5e2..b610af2 100644 --- a/Model/Payment/Service.php +++ b/Model/Payment/Service.php @@ -6,7 +6,7 @@ class Service { - + public const INTERACTION_TYPE_MS = "ECOM_MULTISHIPPING"; /** * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest */ @@ -31,6 +31,26 @@ class Service * @var _helper */ protected $_helper; + + /** + * @var paymentupdatefactory + */ + protected $paymentupdatefactory; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $paymentservicerequest; + + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + protected $worldpayPayment; + + /** + * @var \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection + */ + protected $multishippingOrderCollection; /** * Constructor * @@ -134,13 +154,18 @@ public function getPaymentUpdateXmlForOrder(\Sapient\Worldpay\Model\Order $order if (!$worldPayPayment) { return false; } + $interactionType = $worldPayPayment->getInteractionType(); + if ($worldPayPayment->getIsMultishippingOrder()) { + $interactionType = self::INTERACTION_TYPE_MS; + } + $rawXml = $this->paymentservicerequest->inquiry( $worldPayPayment->getMerchantId(), $worldPayPayment->getWorldpayOrderId(), $worldPayPayment->getStoreId(), $order->getPaymentMethodCode(), $worldPayPayment->getPaymentType(), - $worldPayPayment->getInteractionType() + $interactionType ); $paymentService = new \SimpleXmlElement($rawXml); diff --git a/Model/Payment/StateResponse.php b/Model/Payment/StateResponse.php index 9b369eb..0de4d79 100644 --- a/Model/Payment/StateResponse.php +++ b/Model/Payment/StateResponse.php @@ -21,7 +21,10 @@ class StateResponse implements \Sapient\Worldpay\Model\Payment\StateInterface * @var amount */ public $amount; - + /** + * @var string + */ + public $merchantCode; /** * Constructor * diff --git a/Model/Payment/Update/Authorised.php b/Model/Payment/Update/Authorised.php index 4646a3f..28cf429 100644 --- a/Model/Payment/Update/Authorised.php +++ b/Model/Payment/Update/Authorised.php @@ -11,6 +11,20 @@ class Authorised extends \Sapient\Worldpay\Model\Payment\Update\Base implements /** @var \Sapient\Worldpay\Helper\Data */ private $_configHelper; + /** + * @var \Sapient\Worldpay\Model\Payment\StateInterface + */ + public $paymentState; + + /** + * @var \Sapient\Worldpay\Model\Payment\WorldPayPayment + */ + public $_worldPayPayment; + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + public $multishippingHelper; + /** * Constructor * @param \Sapient\Worldpay\Model\Payment\StateInterface $paymentState @@ -109,7 +123,7 @@ private function _getAllowedPaymentStatuses(\Sapient\Worldpay\Model\Order $order \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_AUTHORISED ]; } - if ($this->_isACHIntegrationMode($order)) { + if ($this->_isACHIntegrationMode($order) || $this->_isSEPAIntegrationMode($order)) { return [ \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_SENT_FOR_AUTHORISATION, \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_AUTHORISED, @@ -202,4 +216,18 @@ private function _isACHIntegrationMode(\Sapient\Worldpay\Model\Order $order) } return false; } + + /** + * Check if integration mode is sepa + * + * @param \Sapient\Worldpay\Model\Order $order + * @return bool + */ + private function _isSEPAIntegrationMode(\Sapient\Worldpay\Model\Order $order) + { + if ($order->getPaymentType() === 'SEPA_DIRECT_DEBIT-SSL') { + return true; + } + return false; + } } diff --git a/Model/Payment/Update/Defaultupdate.php b/Model/Payment/Update/Defaultupdate.php index 0988e04..20f58f8 100644 --- a/Model/Payment/Update/Defaultupdate.php +++ b/Model/Payment/Update/Defaultupdate.php @@ -10,6 +10,10 @@ class Defaultupdate extends \Sapient\Worldpay\Model\Payment\Update\Base implemen { /** @var \Sapient\Worldpay\Helper\Data */ private $_configHelper; + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; /** * Constructor * @param \Sapient\Worldpay\Model\Payment\StateInterface $paymentState diff --git a/Model/Payment/Update/Error.php b/Model/Payment/Update/Error.php index f7f93eb..5ef8096 100644 --- a/Model/Payment/Update/Error.php +++ b/Model/Payment/Update/Error.php @@ -10,6 +10,10 @@ class Error extends \Sapient\Worldpay\Model\Payment\Update\Base implements Updat { /** @var \Sapient\Worldpay\Helper\Data */ private $_configHelper; + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; /** * Constructor * @param \Sapient\Worldpay\Model\Payment\StateInterface $paymentState diff --git a/Model/Payment/Update/Factory.php b/Model/Payment/Update/Factory.php index 9ab1c87..8ef921b 100644 --- a/Model/Payment/Update/Factory.php +++ b/Model/Payment/Update/Factory.php @@ -8,6 +8,17 @@ class Factory { /** @var \Sapient\Worldpay\Helper\Data */ private $_configHelper; + + /** + * @var \Sapient\Worldpay\Model\Payment\WorldPayPayment + */ + private $worldpaymentmodel; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + private $_multishippingHelper; + /** * Constructor * diff --git a/Model/Payment/Update/PendingPayment.php b/Model/Payment/Update/PendingPayment.php index 64587b4..165be42 100644 --- a/Model/Payment/Update/PendingPayment.php +++ b/Model/Payment/Update/PendingPayment.php @@ -10,6 +10,10 @@ class PendingPayment extends \Sapient\Worldpay\Model\Payment\Update\Base impleme { /** @var \Sapient\Worldpay\Helper\Data */ private $_configHelper; + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; /** * Constructor * @param \Sapient\Worldpay\Model\Payment\StateInterface $paymentState diff --git a/Model/Payment/Update/Refused.php b/Model/Payment/Update/Refused.php index 3018e5d..f65e8e7 100644 --- a/Model/Payment/Update/Refused.php +++ b/Model/Payment/Update/Refused.php @@ -10,6 +10,10 @@ class Refused extends \Sapient\Worldpay\Model\Payment\Update\Base implements Upd { /** @var \Sapient\Worldpay\Helper\Data */ private $_configHelper; + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; /** * Constructor * @param \Sapient\Worldpay\Model\Payment\StateInterface $paymentState diff --git a/Model/Payment/UpdateWorldpayment.php b/Model/Payment/UpdateWorldpayment.php index fe9169e..72adfbc 100644 --- a/Model/Payment/UpdateWorldpayment.php +++ b/Model/Payment/UpdateWorldpayment.php @@ -36,9 +36,68 @@ class UpdateWorldpayment */ private $transactionsFactory; /** - * @var Magento\Framework\Serialize\Serializer\Json + * @var \Magento\Framework\Serialize\Serializer\Json */ protected $serializer; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + public $wplogger; + /** + * @var SavedTokenFactory + */ + public $savedTokenFactory; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + public $worldpayHelper; + + /** + * @var \Magento\Framework\Message\ManagerInterface + */ + public $_messageManager; + + /** + * @var \Magento\Customer\Model\Session + */ + public $customerSession; + + /** + * @var OrderPaymentExtensionInterfaceFactory + */ + public $paymentExtensionFactory; + + /** + * @var CreditCardTokenFactory + */ + public $paymentTokenFactory; + + /** + * @var \Magento\Backend\Model\Session\Quote + */ + public $quotesession; + + /** + * @var \Magento\Vault\Api\PaymentTokenRepositoryInterface + */ + public $paymentTokenRepository; + + /** + * @var EncryptorInterface + */ + public $encryptor; + + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + public $worldpaypaymentmodel; + + /** + * @var \Sapient\Worldpay\Model\Recurring\Subscription\TransactionsFactory + */ + public $transactionFactory; /** * Constructor * diff --git a/Model/Payment/WorldPayPayment.php b/Model/Payment/WorldPayPayment.php index d9c96d4..40532b9 100644 --- a/Model/Payment/WorldPayPayment.php +++ b/Model/Payment/WorldPayPayment.php @@ -12,6 +12,21 @@ class WorldPayPayment { + /** + * @var \Sapient\Worldpay\Model\WorldpaymentFactory + */ + protected $worldpaypayment; + + /** + * @var \Magento\Sales\Model\Order + */ + protected $order; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayHelper; + /** * @var array */ @@ -53,7 +68,7 @@ public function updateWorldpayPayment(\Sapient\Worldpay\Model\Payment\StateInter if (strpos($paymentState->getPaymentStatus(), "KLARNA") !== false) { $wpp->setData('payment_type', $paymentState->getPaymentMethod()); } - if (!empty($wpp->getData('payment_type'))) { + if (!empty($wpp->getData('payment_type')) && !empty($paymentState->getPaymentMethod())) { if (strtolower($wpp->getData('payment_type')) == "all") { if (!in_array( strtoupper($paymentState->getPaymentMethod()), @@ -69,6 +84,7 @@ public function updateWorldpayPayment(\Sapient\Worldpay\Model\Payment\StateInter } } } + $wpp->setData('merchant_id', $paymentState->getMerchantCode()); $wpp->setData('card_number', $paymentState->getCardNumber()); $wpp->setData('avs_result', $paymentState->getAvsResultCode()); $wpp->setData('cvc_result', $paymentState->getCvcResultCode()); diff --git a/Model/Payment/WpResponse.php b/Model/Payment/WpResponse.php index 033a433..f6b0a9c 100644 --- a/Model/Payment/WpResponse.php +++ b/Model/Payment/WpResponse.php @@ -6,6 +6,11 @@ class WpResponse { + + /** + * @var \Sapient\Worldpay\Model\Payment\StateResponseFactory + */ + public $stateResponse; /** * Constructor * @@ -38,6 +43,22 @@ public function createFromCancelledResponse($params) null ); } + /** + * Create From Pay By Link Cancelled Response + * + * @param string $orderCode + * @param string $merchantCode + * @return string + */ + public function createFromPblCancelledResponse($orderCode, $merchantCode) + { + return new \Sapient\Worldpay\Model\Payment\StateResponse( + $orderCode, + $merchantCode, + \Sapient\Worldpay\Model\Payment\StateInterface::STATUS_CANCELLED, + null + ); + } /** * Create from Pending Response diff --git a/Model/PaymentMethods/AbstractMethod.php b/Model/PaymentMethods/AbstractMethod.php index 0969639..ef058c2 100644 --- a/Model/PaymentMethods/AbstractMethod.php +++ b/Model/PaymentMethods/AbstractMethod.php @@ -65,6 +65,108 @@ abstract class AbstractMethod extends \Magento\Payment\Model\Method\AbstractMeth * @var array */ protected $paymentdetailsdata; + + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $paymentservicerequest; + /** + * @var \Sapient\Worldpay\Model\Authorisation\RedirectService + */ + protected $redirectservice; + + /** + * @var \Sapient\Worldpay\Model\Authorisation\TokenService + */ + protected $tokenservice; + /** + * @var \Sapient\Worldpay\Model\Authorisation\HostedPaymentPageService + */ + protected $hostedpaymentpageservice; + /** + * @var \Sapient\Worldpay\Model\Authorisation\WalletService + */ + protected $walletService; + /** + * @var \Sapient\Worldpay\Model\Authorisation\PayByLinkService + */ + protected $paybylinkservice; + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + protected $quoteRepository; + /** + * @var \Sapient\Worldpay\Helper\Registry + */ + protected $registryhelper; + + /** + * @var \Magento\Framework\UrlInterface + */ + protected $urlbuilder; + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + protected $worldpaypaymentmodel; + /** + * @var \Magento\Framework\Pricing\Helper\Data + */ + protected $pricinghelper; + /** + * @var \Sapient\Worldpay\Model\Response\AdminhtmlResponse + */ + protected $adminhtmlresponse; + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + protected $paymentutils; + /** + * @var \Magento\Backend\Model\Session\Quote + */ + protected $adminsessionquote; + /** + * @var \Sapient\Worldpay\Model\SavedTokenFactory + */ + protected $_savecard; + /** + * @var \Magento\Backend\Model\Auth\Session + */ + protected $authSession; + /** + * @var \Sapient\Worldpay\Model\Authorisation\MotoRedirectService + */ + protected $motoredirectservice; + + /** + * @var \Sapient\Worldpay\Model\Payment\PaymentTypes + */ + protected $paymenttypes; + + /** + * @var \Magento\Framework\Registry + */ + protected $registry; + + /** + * @var \Magento\Framework\App\RequestInterface + */ + protected $_request; + + /** + * @var \Sapient\Worldpay\Helper\Multishipping + */ + protected $multishippingHelper; + + /** + * @var \Sapient\Worldpay\Model\Multishipping\OrderFactory + */ + protected $multishippingOrderFactory; + + /** + * @var \Sapient\Worldpay\Model\ResourceModel\Multishipping\Order\Collection + */ + protected $multishippingOrderCollection; + /** * Availability option * @@ -430,7 +532,8 @@ private function _createWorldPayPayment( if ($paymentdetails['method'] == self::WORLDPAY_WALLETS_TYPE) { $integrationType = 'direct'; } - if ($paymentdetails['additional_data']['cc_type'] === 'ACH_DIRECT_DEBIT-SSL') { + if ($paymentdetails['additional_data']['cc_type'] === 'ACH_DIRECT_DEBIT-SSL' || + $paymentdetails['additional_data']['cc_type'] === 'SEPA_DIRECT_DEBIT-SSL') { $integrationType = 'direct'; } $mode = $this->worlpayhelper->getCcIntegrationMode(); @@ -446,9 +549,9 @@ private function _createWorldPayPayment( $cardType = $this->_getpaymentType(); if ($mode == 'redirect') { $tokenId = $this->getTokenIdByCode($paymentdetails['additional_data']['tokenCode']); - if(empty($this->registry->registry('token_code'))){ - $this->registry->register('token_code', $tokenId); - } + if (empty($this->registry->registry('token_code'))) { + $this->registry->register('token_code', $tokenId); + } } } @@ -532,7 +635,8 @@ public function capture(\Magento\Payment\Model\InfoInterface $payment, $amount) $payment->getOrder(), $worldPayPayment, $amount, - $captureArray + $captureArray, + $payment->getMethod() ); } else { $this->_wplogger->info("Partial Capture is disabled or not supported."); diff --git a/Model/PaymentMethods/AlternativePaymentMethods.php b/Model/PaymentMethods/AlternativePaymentMethods.php index afb8aaf..09f23a3 100644 --- a/Model/PaymentMethods/AlternativePaymentMethods.php +++ b/Model/PaymentMethods/AlternativePaymentMethods.php @@ -63,7 +63,7 @@ public function authorize(\Magento\Payment\Model\InfoInterface $payment, $amount public function getAuthorisationService($storeId) { $apmmethods = $this->paymentdetailsdata['additional_data']['cc_type']; - if ($apmmethods === "ACH_DIRECT_DEBIT-SSL") { + if ($apmmethods === "ACH_DIRECT_DEBIT-SSL" || $apmmethods === "SEPA_DIRECT_DEBIT-SSL") { return $this->directservice; } return $this->redirectservice; diff --git a/Model/PaymentMethods/CcVault.php b/Model/PaymentMethods/CcVault.php index 06697e2..0c58c85 100644 --- a/Model/PaymentMethods/CcVault.php +++ b/Model/PaymentMethods/CcVault.php @@ -98,6 +98,53 @@ class CcVault extends \Magento\Vault\Model\Method\Vault */ protected static $paymentDetails; + /** + * @var WorldpayLogger + */ + protected $logger; + + /** + * @var \Sapient\Worldpay\Model\Authorisation\VaultService + */ + protected $vaultService; + + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + protected $quoteRepository; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worlpayhelper; + + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + protected $worldpaypaymentmodel; + + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + protected $worldpaypayment; + + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + protected $paymentutils; + /** + * @var \Sapient\Worldpay\Model\Request\PaymentServiceRequest + */ + protected $paymentservicerequest; + /** + * @var \Sapient\Worldpay\Model\Response\AdminhtmlResponse + */ + protected $adminhtmlresponse; + /** + * @var \Magento\Framework\Registry + */ + protected $registry; + /** * CcVault constructor * diff --git a/Model/PaymentMethods/PaymentOperations.php b/Model/PaymentMethods/PaymentOperations.php index d711faf..8e228d4 100644 --- a/Model/PaymentMethods/PaymentOperations.php +++ b/Model/PaymentMethods/PaymentOperations.php @@ -4,6 +4,10 @@ class PaymentOperations extends \Sapient\Worldpay\Model\PaymentMethods\AbstractMethod { + /** + * @var object + */ + public $_response; /** * Update status for void order abstract method * @@ -50,7 +54,8 @@ public function canVoidSale($order) $paymenttype = $worldPayPayment->getPaymentType(); $isPrimeRoutingRequest = $worldPayPayment->getIsPrimeroutingEnabled(); - if (($paymenttype === 'ACH_DIRECT_DEBIT-SSL' || $isPrimeRoutingRequest) + if (($paymenttype === 'ACH_DIRECT_DEBIT-SSL' || + $isPrimeRoutingRequest) && !($worldPayPayment->getPaymentStatus() === 'VOIDED')) { $xml = $this->paymentservicerequest->voidSale( $payment->getOrder(), diff --git a/Model/Recurring/Subscription.php b/Model/Recurring/Subscription.php index 8977def..c482c8f 100644 --- a/Model/Recurring/Subscription.php +++ b/Model/Recurring/Subscription.php @@ -166,6 +166,11 @@ class Subscription extends \Magento\Framework\Model\AbstractModel */ public $registryObj; + /** + * @var \Sapient\Worldpay\Helper\Recurring + */ + private $recurringHelper; + /** * Subscription model constructor. * diff --git a/Model/Request.php b/Model/Request.php index 92ac782..7c7c51f 100644 --- a/Model/Request.php +++ b/Model/Request.php @@ -19,7 +19,16 @@ class Request /** * @var \Sapient\Worldpay\Logger\WorldpayLogger */ - protected $_logger; + protected $_wplogger; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $helper; + + /** + * @var \Magento\Framework\HTTP\Client\Curl + */ + protected $curl; public const CURL_POST = true; public const CURL_RETURNTRANSFER = true; @@ -50,15 +59,16 @@ public function __construct( * @param array $quote * @param string $username * @param string $password + * @param bool $additionalHeader * @return SimpleXMLElement body * @throws Exception */ - public function sendRequest($quote, $username, $password) + public function sendRequest($quote, $username, $password, $additionalHeader = false) { $request = $this->_getRequest(); $logger = $this->_wplogger; $url = $this->_getUrl(); - $pluginTrackerDetails = $this->helper->getPluginTrackerdetails(); + $pluginTrackerDetails = $this->helper->getPluginTrackerdetails($username, $quote); $logger->info('Setting destination URL: ' . $url); $logger->info('Initialising request'); $request->setOption(CURLOPT_POST, self::CURL_POST); @@ -80,31 +90,28 @@ public function sendRequest($quote, $username, $password) } //$request->addCookie(CURLOPT_COOKIE, $cookie); $request->setTimeout(self::CURL_TIMEOUT); - $request->setHeaders([ + $headersArray = [ 'Content-Type'=> 'text/xml', 'Expect'=>'' - ]); + ]; $logger->info('Sending XML as: ' . $this->_getObfuscatedXmlLog($quote)); - $request->setOption(CURLOPT_HEADER, 1); - $request->setOption( - CURLOPT_HTTPHEADER, - ["content-type: application/json", - "MERCHANT_ID" => $pluginTrackerDetails['MERCHANT_ID'], - "API_USERNAME" => $pluginTrackerDetails['API_USERNAME'], - "MAGENTO_EDITION"=>$pluginTrackerDetails['MAGENTO_EDITION'], - "MAGENTO_VERSION"=>$pluginTrackerDetails['MAGENTO_VERSION'], - "PHP_VERSION"=> $pluginTrackerDetails['PHP_VERSION'], - "CURRENT_WORLDPAY_PLUGIN_VERSION"=>isset($pluginTrackerDetails['CURRENT_WORLDPAY_PLUGIN_VERSION'])? - $pluginTrackerDetails['CURRENT_WORLDPAY_PLUGIN_VERSION']:"", - "WORLDPAY_PLUGIN_VERSION_USED_TILL_DATE" => - isset($pluginTrackerDetails['WORLDPAY_PLUGIN_VERSION_USED_TILL_DATE'])? - $pluginTrackerDetails['WORLDPAY_PLUGIN_VERSION_USED_TILL_DATE']:"", - "UPGRADE_DATES" => isset($pluginTrackerDetails['UPGRADE_DATES'])? - $pluginTrackerDetails['UPGRADE_DATES']:"" - ] - ); - $logger->info('Sending additional headers as: ' . json_encode([ + + if ($additionalHeader) { + $headersArray['MERCHANT_ID'] = $pluginTrackerDetails['MERCHANT_ID']; + $headersArray['API_USERNAME'] = $pluginTrackerDetails['API_USERNAME']; + $headersArray['MAGENTO_EDITION'] = $pluginTrackerDetails['MAGENTO_EDITION']; + $headersArray['MAGENTO_VERSION'] = $pluginTrackerDetails['MAGENTO_VERSION']; + $headersArray['PHP_VERSION'] = $pluginTrackerDetails['PHP_VERSION']; + $headersArray['CURRENT_WORLDPAY_PLUGIN_VERSION'] = isset($pluginTrackerDetails['CURRENT_WORLDPAY_PLUGIN_VERSION'])? + $pluginTrackerDetails['CURRENT_WORLDPAY_PLUGIN_VERSION']:""; + $headersArray['WORLDPAY_PLUGIN_VERSION_USED_TILL_DATE'] = isset($pluginTrackerDetails['WORLDPAY_PLUGIN_VERSION_USED_TILL_DATE'])? + $pluginTrackerDetails['WORLDPAY_PLUGIN_VERSION_USED_TILL_DATE']:""; + + $headersArray['UPGRADE_DATES'] = isset($pluginTrackerDetails['UPGRADE_DATES'])? + $pluginTrackerDetails['UPGRADE_DATES']:""; + + $logger->info('Sending additional headers as: ' . json_encode([ "MERCHANT_ID" => $pluginTrackerDetails['MERCHANT_ID'], "API_USERNAME" => $pluginTrackerDetails['API_USERNAME'], "MAGENTO_EDITION"=>$pluginTrackerDetails['MAGENTO_EDITION'], @@ -118,6 +125,9 @@ public function sendRequest($quote, $username, $password) "UPGRADE_DATES" => isset($pluginTrackerDetails['UPGRADE_DATES'])? $pluginTrackerDetails['UPGRADE_DATES']:"" ])); + } + $request->setHeaders($headersArray); + $request->setOption(CURLINFO_HEADER_OUT, 1); $request->post($url, $quote->saveXML()); @@ -133,17 +143,22 @@ public function sendRequest($quote, $username, $password) } if (!$result || ($request->getStatus() != self::SUCCESS)) { $logger->info('Request could not be sent.'); + $errorMessage = $this->findErrorMessage($result); $logger->info($result); - $logger->info('########### END OF REQUEST - FAILURE WHILST TRYING TO SEND REQUEST ###########'); + $logger->info('########### END OF REQUEST - FAILURE WHILE TRYING TO SEND REQUEST ###########'); + if (!empty($errorMessage)) { + $errorMessage = $errorMessage."."; + } + $errorMessage .= 'Worldpay api service not available'; throw new \Magento\Framework\Exception\LocalizedException( - __('Worldpay api service not available') + __($errorMessage) ); } $logger->info('Request successfully sent'); $logger->info($result); // extract headers - // extract headers + // extract headers $bits = explode("\r\n\r\n", $result); $body = array_pop($bits); $headers = implode("\r\n\r\n", $bits); @@ -164,7 +179,7 @@ public function sendRequest($quote, $username, $password) */ protected function _getObfuscatedXmlLog($quote) { - $elems = ['cardNumber', 'cvc']; + $elems = ['cardNumber', 'cvc', 'iban', 'telephoneNumber']; $_xml = clone($quote); foreach ($elems as $_e) { @@ -200,4 +215,25 @@ private function _getRequest() return $this->_request; } + /** + * Find Error message from header response + * + * @param string $response + */ + private function findErrorMessage($response) + { + $headerbits = explode("\r\n\r\n", $response); + $remainingBody = array_pop($headerbits); + $errorMsg = ""; + if (!empty($remainingBody)) { + $responseXml = new \SimpleXmlElement($remainingBody); + try { + $errorMsg = $responseXml->head->title; + } catch (\Exception $e) { + $this->_wplogger->info(__('Could not parse error body xml')); + } + + } + return $errorMsg; + } } diff --git a/Model/Request/AuthenticationService.php b/Model/Request/AuthenticationService.php index fdaab58..d0a2691 100644 --- a/Model/Request/AuthenticationService.php +++ b/Model/Request/AuthenticationService.php @@ -9,6 +9,16 @@ class AuthenticationService extends \Magento\Framework\DataObject { + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $_wplogger; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; + /** * Constructor * diff --git a/Model/Request/PaymentServiceRequest.php b/Model/Request/PaymentServiceRequest.php index 21e0382..ceb42a8 100644 --- a/Model/Request/PaymentServiceRequest.php +++ b/Model/Request/PaymentServiceRequest.php @@ -16,7 +16,46 @@ class PaymentServiceRequest extends \Magento\Framework\DataObject * @var \Sapient\Worldpay\Model\Request $request */ protected $_request; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $_wplogger; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; + + /** + * @var \Sapient\Worldpay\Helper\GeneralException + */ + protected $exceptionHelper; + + /** + * @var \Magento\Sales\Model\Service\InvoiceService + */ + protected $_invoiceService; + /** + * @var \Sapient\Worldpay\Helper\SendErrorReport + */ + protected $emailErrorReportHelper; + + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + protected $storeManager; + public const SEND_ADDITIONAL_HEADER = true; /** * Constructor * @@ -26,6 +65,9 @@ class PaymentServiceRequest extends \Magento\Framework\DataObject * @param \Sapient\Worldpay\Helper\GeneralException $exceptionHelper * @param \Magento\Sales\Model\Service\InvoiceService $invoiceService * @param \Sapient\Worldpay\Helper\SendErrorReport $emailErrorReportHelper + * @param \Magento\Customer\Model\Session $customerSession + * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + * @param \Magento\Store\Model\StoreManagerInterface $storeManager */ public function __construct( \Sapient\Worldpay\Logger\WorldpayLogger $wplogger, @@ -33,7 +75,10 @@ public function __construct( \Sapient\Worldpay\Helper\Data $worldpayhelper, \Sapient\Worldpay\Helper\GeneralException $exceptionHelper, \Magento\Sales\Model\Service\InvoiceService $invoiceService, - \Sapient\Worldpay\Helper\SendErrorReport $emailErrorReportHelper + \Sapient\Worldpay\Helper\SendErrorReport $emailErrorReportHelper, + \Magento\Customer\Model\Session $customerSession, + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + \Magento\Store\Model\StoreManagerInterface $storeManager ) { $this->_wplogger = $wplogger; $this->_request = $request; @@ -41,6 +86,9 @@ public function __construct( $this->exceptionHelper = $exceptionHelper; $this->_invoiceService = $invoiceService; $this->emailErrorReportHelper = $emailErrorReportHelper; + $this->customerSession = $customerSession; + $this->scopeConfig = $scopeConfig; + $this->storeManager = $storeManager; } /** @@ -53,18 +101,25 @@ public function order3DSecure($directOrderParams) { $loggerMsg = '########## Submitting direct 3DSecure order request. OrderCode: '; $this->_wplogger->info($loggerMsg . $directOrderParams['orderCode'] . ' ##########'); - + $merchantCode = $directOrderParams['merchantCode']; + if (!empty($directOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } if (isset($directOrderParams['tokenRequestConfig'])) { $requestConfiguration = [ 'threeDSecureConfig' => $directOrderParams['threeDSecureConfig'], 'tokenRequestConfig' => $directOrderParams['tokenRequestConfig'] ]; - $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder($requestConfiguration); + $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder( + $this->customerSession, + $requestConfiguration + ); $paymentType = isset($directOrderParams['paymentDetails']['brand']) ? $directOrderParams['paymentDetails']['brand']: $directOrderParams['paymentDetails']['paymentType']; $orderSimpleXml = $this->xmldirectorder->build3DSecure( - $directOrderParams['merchantCode'], + $merchantCode, $directOrderParams['orderCode'], $directOrderParams['paymentDetails'], $directOrderParams['paResponse'], @@ -77,7 +132,7 @@ public function order3DSecure($directOrderParams) $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\WalletOrder($requestConfiguration); $paymentType = $directOrderParams['paymentType']; $orderSimpleXml = $this->xmldirectorder->build3DSecure( - $directOrderParams['merchantCode'], + $merchantCode, $directOrderParams['orderCode'], $directOrderParams['paymentDetails'], $directOrderParams['paResponse'], @@ -85,10 +140,20 @@ public function order3DSecure($directOrderParams) ); } + $xmlUsername = $this->worldpayhelper->getXmlUsername($paymentType); + $xmlPassword = $this->worldpayhelper->getXmlPassword($paymentType); + + if (!empty($directOrderParams['isMultishippingOrder'])) { + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + } return $this->_sendRequest( dom_import_simplexml($orderSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($paymentType), - $this->worldpayhelper->getXmlPassword($paymentType) + $xmlUsername, + $xmlPassword ); } @@ -146,8 +211,20 @@ public function order($directOrderParams) $xmlPassword = !empty($wpMotoPassword) ? $wpMotoPassword : $xmlPassword; $merchantCode = !empty($wpMotoCode) ? $wpMotoCode : $merchantCode; } + if (!empty($directOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); - $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder($requestConfiguration); + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); + $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder( + $this->customerSession, + $requestConfiguration + ); if (empty($directOrderParams['thirdPartyData']) && empty($directOrderParams['shippingfee'])) { $directOrderParams['thirdPartyData']=''; @@ -201,12 +278,14 @@ public function order($directOrderParams) $directOrderParams['shippingfee'], $directOrderParams['exponent'], $directOrderParams['primeRoutingData'], - $directOrderParams['orderLineItems'] + $directOrderParams['orderLineItems'], + $captureDelay ); return $this->_sendRequest( dom_import_simplexml($orderSimpleXml)->ownerDocument, $xmlUsername, - $xmlPassword + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } @@ -220,9 +299,23 @@ public function achOrder($directOrderParams) { $this->_wplogger->info('########## Submitting ACH order request. OrderCode: ' . $directOrderParams['orderCode'] . ' ##########'); + + $xmlUsername = $this->worldpayhelper->getXmlUsername($directOrderParams['paymentDetails']['paymentType']); + $xmlPassword = $this->worldpayhelper->getXmlPassword($directOrderParams['paymentDetails']['paymentType']); + $merchantCode = $directOrderParams['merchantCode']; + if (!empty($directOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\ACHOrder(); $orderSimpleXml = $this->xmldirectorder->build( - $directOrderParams['merchantCode'], + $merchantCode, $directOrderParams['orderCode'], $directOrderParams['orderDescription'], $directOrderParams['currencyCode'], @@ -235,13 +328,65 @@ public function achOrder($directOrderParams) $directOrderParams['billingAddress'], $directOrderParams['shopperId'], $directOrderParams['statementNarrative'], - $directOrderParams['exponent'] + $directOrderParams['exponent'], + $captureDelay ); return $this->_sendRequest( dom_import_simplexml($orderSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($directOrderParams['paymentDetails']['paymentType']), - $this->worldpayhelper->getXmlPassword($directOrderParams['paymentDetails']['paymentType']) + $xmlUsername, + $xmlPassword, + self::SEND_ADDITIONAL_HEADER + ); + } + + /** + * Send SEPA order XML to Worldpay server + * + * @param array $directOrderParams + * @return mixed + */ + public function sepaOrder($directOrderParams) + { + $this->_wplogger->info('########## Submitting SEPA order request. OrderCode: ' . + $directOrderParams['orderCode'] . ' ##########'); + + $xmlUsername = $this->worldpayhelper->getXmlUsername($directOrderParams['paymentDetails']['paymentType']); + $xmlPassword = $this->worldpayhelper->getXmlPassword($directOrderParams['paymentDetails']['paymentType']); + $merchantCode = $directOrderParams['merchantCode']; + if (!empty($directOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); + $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\SEPAOrder(); + $orderSimpleXml = $this->xmldirectorder->build( + $merchantCode, + $directOrderParams['orderCode'], + $directOrderParams['orderDescription'], + $directOrderParams['currencyCode'], + $directOrderParams['amount'], + $directOrderParams['paymentDetails'], + $directOrderParams['shopperEmail'], + $directOrderParams['acceptHeader'], + $directOrderParams['userAgentHeader'], + $directOrderParams['shippingAddress'], + $directOrderParams['billingAddress'], + $directOrderParams['shopperId'], + $directOrderParams['statementNarrative'], + $directOrderParams['exponent'], + $captureDelay + ); + + return $this->_sendRequest( + dom_import_simplexml($orderSimpleXml)->ownerDocument, + $xmlUsername, + $xmlPassword ); } @@ -291,7 +436,23 @@ public function orderToken($tokenOrderParams) ? $this->worldpayhelper->getMotoMerchantCode() : $merchantCode; } - $this->xmltokenorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder($requestConfiguration); + // Different Merchant code for Recurring Orders + if (!empty($tokenOrderParams['paymentDetails']['isRecurringOrder'])) { + if ($tokenOrderParams['paymentDetails']['isRecurringOrder'] == 1) { + $recurringUserName = $this->worldpayhelper->getRecurringUsername(); + $recurringPassword = $this->worldpayhelper->getRecurringPassword(); + $recurringCode = $this->worldpayhelper->getRecurringMerchantCode(); + + $xmlUsername = !empty($recurringUserName) ? $recurringUserName : $xmlUsername; + $xmlPassword = !empty($recurringPassword) ? $recurringPassword : $xmlPassword; + $merchantCode = !empty($recurringCode) ? $recurringCode : $merchantCode; + } + } + + $this->xmltokenorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder( + $this->customerSession, + $requestConfiguration + ); if (empty($tokenOrderParams['thirdPartyData']) && empty($tokenOrderParams['shippingfee'])) { $tokenOrderParams['thirdPartyData']=''; $tokenOrderParams['shippingfee']=''; @@ -302,6 +463,17 @@ public function orderToken($tokenOrderParams) if (empty($tokenOrderParams['orderLineItems'])) { $tokenOrderParams['orderLineItems'] = ''; } + + if (!empty($tokenOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $orderSimpleXml = $this->xmltokenorder->build( $merchantCode, $tokenOrderParams['orderCode'], @@ -325,7 +497,8 @@ public function orderToken($tokenOrderParams) $tokenOrderParams['shippingfee'], $tokenOrderParams['exponent'], $tokenOrderParams['primeRoutingData'], - $tokenOrderParams['orderLineItems'] + $tokenOrderParams['orderLineItems'], + $captureDelay ); return $this->_sendRequest( dom_import_simplexml($orderSimpleXml)->ownerDocument, @@ -367,6 +540,7 @@ public function redirectOrder($redirectOrderParams) $xmlUsername = $this->worldpayhelper->getXmlUsername($redirectOrderParams['paymentDetails']['cardType']); $xmlPassword = $this->worldpayhelper->getXmlPassword($redirectOrderParams['paymentDetails']['cardType']); $merchantCode = $redirectOrderParams['merchantCode']; + $installationId = $redirectOrderParams['installationId']; if ($redirectOrderParams['method'] == 'worldpay_moto') { $redirectOrderParams['paymentDetails']['PaymentMethod'] = $redirectOrderParams['method']; @@ -377,8 +551,35 @@ public function redirectOrder($redirectOrderParams) $merchantCode = !empty($this->worldpayhelper->getMotoMerchantCode()) ? $this->worldpayhelper->getMotoMerchantCode() : $merchantCode; } - + + if (!empty($redirectOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + $msInstallationId = $this->worldpayhelper->getMultishippingInstallationId(); + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + $installationId = !empty($msInstallationId) ? $msInstallationId : $installationId ; + } + if (!empty($redirectOrderParams['is_paybylink_order'])) { + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblInstallationId = $this->worldpayhelper->getPayByLinkInstallationId(); + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername ; + $xmlPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $xmlPassword ; + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode ; + $installationId = !empty($pblInstallationId) ? $pblInstallationId : $installationId ; + } $this->xmlredirectorder = new \Sapient\Worldpay\Model\XmlBuilder\RedirectOrder($requestConfiguration); + + if (!empty($redirectOrderParams['is_paybylink_order'])) { + $this->xmlredirectorder = new \Sapient\Worldpay\Model\XmlBuilder\RedirectPayByLinkOrder( + $requestConfiguration + ); + } + if (empty($redirectOrderParams['thirdPartyData']) && empty($redirectOrderParams['shippingfee'])) { $redirectOrderParams['thirdPartyData']=''; $redirectOrderParams['shippingfee']=''; @@ -396,7 +597,7 @@ public function redirectOrder($redirectOrderParams) if (empty($redirectOrderParams['storedCredentialsEnabled'])) { $redirectOrderParams['storedCredentialsEnabled']=''; } - + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $redirectSimpleXml = $this->xmlredirectorder->build( $merchantCode, $redirectOrderParams['orderCode'], @@ -411,7 +612,7 @@ public function redirectOrder($redirectOrderParams) $redirectOrderParams['shippingAddress'], $redirectOrderParams['billingAddress'], $redirectOrderParams['paymentPagesEnabled'], - $redirectOrderParams['installationId'], + $installationId, $redirectOrderParams['hideAddress'], $redirectOrderParams['paymentDetails'], $redirectOrderParams['thirdPartyData'], @@ -419,13 +620,15 @@ public function redirectOrder($redirectOrderParams) $redirectOrderParams['exponent'], $redirectOrderParams['cusDetails'], $redirectOrderParams['orderLineItems'], + $captureDelay, $redirectOrderParams['saveCardEnabled'], - $redirectOrderParams['storedCredentialsEnabled'], + $redirectOrderParams['storedCredentialsEnabled'] ); return $this->_sendRequest( dom_import_simplexml($redirectSimpleXml)->ownerDocument, $xmlUsername, - $xmlPassword + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } @@ -443,9 +646,25 @@ public function redirectKlarnaOrder($redirectOrderParams) if (empty($redirectOrderParams['statementNarrative'])) { $redirectOrderParams['statementNarrative']=''; } + $xmlUsername = $this->worldpayhelper->getXmlUsername($redirectOrderParams['paymentType']); + $xmlPassword = $this->worldpayhelper->getXmlPassword($redirectOrderParams['paymentType']); + $merchantCode = $redirectOrderParams['merchantCode']; + $installationId = $redirectOrderParams['installationId']; + if (!empty($redirectOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + $msinstallationId = $this->worldpayhelper->getMultishippingInstallationId(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + $installationId = !empty($msinstallationId) ? $msinstallationId : $installationId ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $this->xmlredirectorder = new \Sapient\Worldpay\Model\XmlBuilder\RedirectKlarnaOrder(); $redirectSimpleXml = $this->xmlredirectorder->build( - $redirectOrderParams['merchantCode'], + $merchantCode, $redirectOrderParams['orderCode'], $redirectOrderParams['orderDescription'], $redirectOrderParams['currencyCode'], @@ -458,18 +677,20 @@ public function redirectKlarnaOrder($redirectOrderParams) $redirectOrderParams['shippingAddress'], $redirectOrderParams['billingAddress'], $redirectOrderParams['paymentPagesEnabled'], - $redirectOrderParams['installationId'], + $installationId, $redirectOrderParams['hideAddress'], $redirectOrderParams['orderLineItems'], $redirectOrderParams['exponent'], $redirectOrderParams['sessionData'], - $redirectOrderParams['orderContent'] + $redirectOrderParams['orderContent'], + $captureDelay ); return $this->_sendRequest( dom_import_simplexml($redirectSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($redirectOrderParams['paymentType']), - $this->worldpayhelper->getXmlPassword($redirectOrderParams['paymentType']) + $xmlUsername, + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } catch (Exception $ex) { $this->_wplogger->error($ex->getMessage()); @@ -505,9 +726,26 @@ public function directIdealOrder($redirectOrderParams) if (empty($redirectOrderParams['statementNarrative'])) { $redirectOrderParams['statementNarrative']=''; } + + $xmlUsername = $this->worldpayhelper->getXmlUsername($redirectOrderParams['paymentType']); + $xmlPassword = $this->worldpayhelper->getXmlPassword($redirectOrderParams['paymentType']); + $merchantCode = $redirectOrderParams['merchantCode']; + $installationId = $redirectOrderParams['installationId']; + if (!empty($redirectOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + $msMerchantInstallationId = $this->worldpayhelper->getMultishippingInstallationId(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + $installationId = !empty($msMerchantInstallationId) ? $msMerchantInstallationId : $installationId ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $this->xmldirectidealorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectIdealOrder($requestConfiguration); $redirectSimpleXml = $this->xmldirectidealorder->build( - $redirectOrderParams['merchantCode'], + $merchantCode, $redirectOrderParams['orderCode'], $redirectOrderParams['orderDescription'], $redirectOrderParams['currencyCode'], @@ -520,17 +758,18 @@ public function directIdealOrder($redirectOrderParams) $redirectOrderParams['shippingAddress'], $redirectOrderParams['billingAddress'], $redirectOrderParams['paymentPagesEnabled'], - $redirectOrderParams['installationId'], + $installationId, $redirectOrderParams['hideAddress'], $redirectOrderParams['callbackurl'], $redirectOrderParams['cc_bank'], - $redirectOrderParams['exponent'] + $redirectOrderParams['exponent'], + $captureDelay ); return $this->_sendRequest( dom_import_simplexml($redirectSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($redirectOrderParams['paymentType']), - $this->worldpayhelper->getXmlPassword($redirectOrderParams['paymentType']) + $xmlUsername, + $xmlPassword ); } @@ -549,7 +788,10 @@ public function capture(\Magento\Sales\Model\Order $order, $wp, $paymentMethodCo $orderCode = $wp->getWorldpayOrderId(); $loggerMsg = '########## Submitting capture request. Order: '; $this->_wplogger->info($loggerMsg . $orderCode . ' Amount:' . $order->getGrandTotal() . ' ##########'); - $this->xmlcapture = new \Sapient\Worldpay\Model\XmlBuilder\Capture(); + $this->xmlcapture = new \Sapient\Worldpay\Model\XmlBuilder\Capture( + $this->scopeConfig, + $this->storeManager + ); $currencyCode = $order->getOrderCurrencyCode(); $exponent = $this->worldpayhelper->getCurrencyExponent($currencyCode); @@ -573,6 +815,25 @@ public function capture(\Magento\Sales\Model\Order $order, $wp, $paymentMethodCo ? $this->worldpayhelper->getMotoMerchantCode() : $merchantCode; } + if ($wp->getIsMultishippingOrder()) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + if ($paymentMethodCode == 'worldpay_paybylink') { + + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode; + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername; + $xmlPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $xmlPassword; + } + $captureSimpleXml = $this->xmlcapture->build( $merchantCode, $orderCode, @@ -589,7 +850,8 @@ public function capture(\Magento\Sales\Model\Order $order, $wp, $paymentMethodCo return $this->_sendRequest( dom_import_simplexml($captureSimpleXml)->ownerDocument, $xmlUsername, - $xmlPassword + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } catch (Exception $e) { $this->_wplogger->error($e->getMessage()); @@ -606,15 +868,19 @@ public function capture(\Magento\Sales\Model\Order $order, $wp, $paymentMethodCo * @param \Magento\Framework\DataObject $wp * @param float $grandTotal * @param array|null $capturedItems + * @param string|null $paymentMethodCode * @return mixed */ - public function partialCapture(\Magento\Sales\Model\Order $order, $wp, $grandTotal, $capturedItems = null) + public function partialCapture(\Magento\Sales\Model\Order $order, $wp, $grandTotal, $capturedItems = null,$paymentMethodCode = null) { try { $orderCode = $wp->getWorldpayOrderId(); $loggerMsg = '########## Submitting Partial capture request. Order: '; $this->_wplogger->info($loggerMsg . $orderCode . ' Amount:' . $grandTotal . ' ##########'); - $this->xmlcapture = new \Sapient\Worldpay\Model\XmlBuilder\Capture(); + $this->xmlcapture = new \Sapient\Worldpay\Model\XmlBuilder\Capture( + $this->scopeConfig, + $this->storeManager + ); $currencyCode = $order->getOrderCurrencyCode(); $exponent = $this->worldpayhelper->getCurrencyExponent($currencyCode); @@ -638,7 +904,23 @@ public function partialCapture(\Magento\Sales\Model\Order $order, $wp, $grandTot $merchantCode = !empty($this->worldpayhelper->getMotoMerchantCode()) ? $this->worldpayhelper->getMotoMerchantCode() : $merchantCode; } - + if ($wp->getIsMultishippingOrder()) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + if ($paymentMethodCode == 'worldpay_paybylink') { + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode; + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername; + $xmlPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $xmlPassword; + } $captureSimpleXml = $this->xmlcapture->build( $merchantCode, $orderCode, @@ -655,7 +937,8 @@ public function partialCapture(\Magento\Sales\Model\Order $order, $wp, $grandTot return $this->_sendRequest( dom_import_simplexml($captureSimpleXml)->ownerDocument, $xmlUsername, - $xmlPassword + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } catch (Exception $e) { $this->_wplogger->error($e->getMessage()); @@ -671,11 +954,12 @@ public function partialCapture(\Magento\Sales\Model\Order $order, $wp, $grandTot * @param SimpleXmlElement $xml * @param string $username * @param string $password + * @param bool $additionalHeader * @return SimpleXmlElement $response */ - protected function _sendRequest($xml, $username, $password) + protected function _sendRequest($xml, $username, $password, $additionalHeader = false) { - $response = $this->_request->sendRequest($xml, $username, $password); + $response = $this->_request->sendRequest($xml, $username, $password, $additionalHeader); $this->_checkForError($response, $xml); return $response; } @@ -735,7 +1019,9 @@ public function refund( $orderCode = $wp->getWorldpayOrderId(); $loggerMsg = '########## Submitting refund request. OrderCode: '; $this->_wplogger->info($loggerMsg . $orderCode . ' ##########'); - $this->xmlrefund = new \Sapient\Worldpay\Model\XmlBuilder\Refund(); + $this->xmlrefund = new \Sapient\Worldpay\Model\XmlBuilder\Refund( + $this->scopeConfig + ); $currencyCode = $order->getOrderCurrencyCode(); $exponent = $this->worldpayhelper->getCurrencyExponent($currencyCode); @@ -750,6 +1036,23 @@ public function refund( $merchantCode = !empty($this->worldpayhelper->getMotoMerchantCode()) ? $this->worldpayhelper->getMotoMerchantCode() : $merchantCode; } + if ($wp->getIsMultishippingOrder()) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + if ($paymentMethodCode == 'worldpay_paybylink') { + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode; + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername; + $xmlPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $xmlPassword; + } $refundSimpleXml = $this->xmlrefund->build( $merchantCode, @@ -765,7 +1068,8 @@ public function refund( return $this->_sendRequest( dom_import_simplexml($refundSimpleXml)->ownerDocument, $xmlUsername, - $xmlPassword + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } @@ -783,7 +1087,7 @@ public function refund( public function inquiry($merchantCode, $orderCode, $storeId, $paymentMethodCode, $paymenttype, $interactionType) { $this->_wplogger->info('########## Submitting order inquiry. OrderCode: (' . $orderCode . ') ##########'); - + $this->_wplogger->info('## Interaction Type'.$interactionType); $xmlUsername = $this->worldpayhelper->getXmlUsername($paymenttype); $xmlPassword = $this->worldpayhelper->getXmlPassword($paymenttype); $merchantcode = $merchantCode; @@ -797,12 +1101,29 @@ public function inquiry($merchantCode, $orderCode, $storeId, $paymentMethodCode, ? $this->worldpayhelper->getMotoMerchantCode() : $merchantcode; } + if ($interactionType == \Sapient\Worldpay\Model\Payment\Service::INTERACTION_TYPE_MS) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantcode = !empty($msMerchantCode) ? $msMerchantCode : $merchantcode ; + } + + if ($paymentMethodCode == 'worldpay_paybylink') { + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode; + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername; + $xmlPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $xmlPassword; + } $this->xmlinquiry = new \Sapient\Worldpay\Model\XmlBuilder\Inquiry(); $inquirySimpleXml = $this->xmlinquiry->build( $merchantcode, $orderCode ); - return $this->_sendRequest( dom_import_simplexml($inquirySimpleXml)->ownerDocument, $xmlUsername, @@ -875,9 +1196,10 @@ public function tokenDelete( * Get Payment options based on country * * @param array $paymentOptionsParams + * @param boolean $isMultishipping * @return mixed */ - public function paymentOptionsByCountry($paymentOptionsParams) + public function paymentOptionsByCountry($paymentOptionsParams, $isMultishipping = false) { $spoofCountryId = ''; $countryCodeSpoofs = $this->worldpayhelper->getCountryCodeSpoofs(); @@ -891,11 +1213,18 @@ public function paymentOptionsByCountry($paymentOptionsParams) $paymentOptionsParams['merchantCode'], $countryId ); - + $merchantUn = $this->worldpayhelper->getXmlUsername($paymentOptionsParams['paymentType']); + $merchantPw = $this->worldpayhelper->getXmlPassword($paymentOptionsParams['paymentType']); + if ($isMultishipping) { + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $mcMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + $merchantUn = !empty($msMerchantUn) ? $msMerchantUn : $merchantUn; + $merchantPw = !empty($mcMerchantPw) ? $mcMerchantPw : $merchantPw; + } return $this->_sendRequest( dom_import_simplexml($paymentOptionsXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($paymentOptionsParams['paymentType']), - $this->worldpayhelper->getXmlPassword($paymentOptionsParams['paymentType']) + $merchantUn, + $merchantPw ); } @@ -913,9 +1242,23 @@ public function walletsOrder($walletOrderParams) $requestConfiguration = [ 'threeDSecureConfig' => $walletOrderParams['threeDSecureConfig'], ]; + $xmlUsername = $this->worldpayhelper->getXmlUsername($walletOrderParams['paymentType']); + $xmlPassword = $this->worldpayhelper->getXmlPassword($walletOrderParams['paymentType']); + $merchantCode = $walletOrderParams['merchantCode']; + + if (!empty($walletOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $this->xmlredirectorder = new \Sapient\Worldpay\Model\XmlBuilder\WalletOrder($requestConfiguration); $walletSimpleXml = $this->xmlredirectorder->build( - $walletOrderParams['merchantCode'], + $merchantCode, $walletOrderParams['orderCode'], $walletOrderParams['orderDescription'], $walletOrderParams['currencyCode'], @@ -932,13 +1275,15 @@ public function walletsOrder($walletOrderParams) $walletOrderParams['cusDetails'], $walletOrderParams['shopperIpAddress'], $walletOrderParams['paymentDetails'], - $walletOrderParams['exponent'] + $walletOrderParams['exponent'], + $captureDelay ); return $this->_sendRequest( dom_import_simplexml($walletSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($walletOrderParams['paymentType']), - $this->worldpayhelper->getXmlPassword($walletOrderParams['paymentType']) + $xmlUsername, + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } @@ -955,8 +1300,22 @@ public function applePayOrder($applePayOrderParams) $this->xmlredirectorder = new \Sapient\Worldpay\Model\XmlBuilder\ApplePayOrder(); + $xmlUsername = $this->worldpayhelper->getXmlUsername($applePayOrderParams['paymentType']); + $xmlPassword = $this->worldpayhelper->getXmlPassword($applePayOrderParams['paymentType']); + $merchantCode = $applePayOrderParams['merchantCode']; + + if (!empty($applePayOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $appleSimpleXml = $this->xmlredirectorder->build( - $applePayOrderParams['merchantCode'], + $merchantCode, $applePayOrderParams['orderCode'], $applePayOrderParams['orderDescription'], $applePayOrderParams['currencyCode'], @@ -969,13 +1328,15 @@ public function applePayOrder($applePayOrderParams) $applePayOrderParams['ephemeralPublicKey'], $applePayOrderParams['publicKeyHash'], $applePayOrderParams['transactionId'], - $applePayOrderParams['exponent'] + $applePayOrderParams['exponent'], + $captureDelay ); return $this->_sendRequest( dom_import_simplexml($appleSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($applePayOrderParams['paymentType']), - $this->worldpayhelper->getXmlPassword($applePayOrderParams['paymentType']) + $xmlUsername, + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } @@ -990,10 +1351,24 @@ public function samsungPayOrder($samsungPayOrderParams) $loggerMsg = '########## Submitting samsung pay order request. OrderCode: '; $this->_wplogger->info($loggerMsg . $samsungPayOrderParams['orderCode'] . ' ##########'); + $xmlUsername = $this->worldpayhelper->getXmlUsername($samsungPayOrderParams['paymentType']); + $xmlPassword = $this->worldpayhelper->getXmlPassword($samsungPayOrderParams['paymentType']); + $merchantCode = $samsungPayOrderParams['merchantCode']; + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); + if (!empty($samsungPayOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + $this->xmlredirectorder = new \Sapient\Worldpay\Model\XmlBuilder\SamsungPayOrder(); $appleSimpleXml = $this->xmlredirectorder->build( - $samsungPayOrderParams['merchantCode'], + $merchantCode, $samsungPayOrderParams['orderCode'], $samsungPayOrderParams['orderDescription'], $samsungPayOrderParams['currencyCode'], @@ -1001,13 +1376,15 @@ public function samsungPayOrder($samsungPayOrderParams) $samsungPayOrderParams['paymentType'], $samsungPayOrderParams['shopperEmail'], $samsungPayOrderParams['data'], - $samsungPayOrderParams['exponent'] + $samsungPayOrderParams['exponent'], + $captureDelay ); return $response = $this->_sendRequest( dom_import_simplexml($appleSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($samsungPayOrderParams['paymentType']), - $this->worldpayhelper->getXmlPassword($samsungPayOrderParams['paymentType']) + $xmlUsername, + $xmlPassword, + self::SEND_ADDITIONAL_HEADER, ); } @@ -1022,6 +1399,7 @@ public function chromepayOrder($chromeOrderParams) $loggerMsg = '########## Submitting chromepay order request. OrderCode: '; $this->_wplogger->info($loggerMsg . $chromeOrderParams['orderCode'] . ' ##########'); $paymentType = 'worldpay_cc'; + $captureDelay = $this->worldpayhelper->getCaptureDelayValues(); $this->xmlredirectorder = new \Sapient\Worldpay\Model\XmlBuilder\ChromePayOrder(); $chromepaySimpleXml = $this->xmlredirectorder->build( $chromeOrderParams['merchantCode'], @@ -1034,13 +1412,15 @@ public function chromepayOrder($chromeOrderParams) $chromeOrderParams['shippingAddress'], $chromeOrderParams['billingAddress'], $chromeOrderParams['shopperEmail'], - $chromeOrderParams['exponent'] + $chromeOrderParams['exponent'], + $captureDelay ); //echo $this->worldpayhelper->getXmlUsername($paymentType);exit; return $this->_sendRequest( dom_import_simplexml($chromepaySimpleXml)->ownerDocument, $this->worldpayhelper->getXmlUsername($paymentType), - $this->worldpayhelper->getXmlPassword($paymentType) + $this->worldpayhelper->getXmlPassword($paymentType), + self::SEND_ADDITIONAL_HEADER ); } @@ -1054,16 +1434,26 @@ public function order3Ds2Secure($directOrderParams) { $loggerMsg = '########## Submitting direct 3Ds2Secure order request. OrderCode: '; $this->_wplogger->info($loggerMsg . ' ##########'); + $merchantCode = $directOrderParams['merchantCode']; + + if (!empty($directOrderParams['isMultishippingOrder'])) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + if (isset($directOrderParams['tokenRequestConfig'])) { $requestConfiguration = [ 'threeDSecureConfig' => $directOrderParams['threeDSecureConfig'], 'tokenRequestConfig' => $directOrderParams['tokenRequestConfig'] ]; - $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder($requestConfiguration); + $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\DirectOrder( + $this->customerSession, + $requestConfiguration + ); $paymentType = isset($directOrderParams['paymentDetails']['brand']) ? $directOrderParams['paymentDetails']['brand']: $directOrderParams['paymentDetails']['paymentType']; $orderSimpleXml = $this->xmldirectorder->build3Ds2Secure( - $directOrderParams['merchantCode'], + $merchantCode, $directOrderParams['orderCode'], $directOrderParams['paymentDetails'], $directOrderParams['paymentDetails']['dfReferenceId'] @@ -1075,16 +1465,26 @@ public function order3Ds2Secure($directOrderParams) $this->xmldirectorder = new \Sapient\Worldpay\Model\XmlBuilder\WalletOrder($requestConfiguration); $paymentType = $directOrderParams['paymentType']; $orderSimpleXml = $this->xmldirectorder->build3Ds2Secure( - $directOrderParams['merchantCode'], + $merchantCode, $directOrderParams['orderCode'], $directOrderParams['paymentDetails'], $directOrderParams['paymentDetails']['dfReferenceId'] ); } + $xmlUsername = $this->worldpayhelper->getXmlUsername($paymentType); + $xmlPassword = $this->worldpayhelper->getXmlPassword($paymentType); + if (!empty($directOrderParams['isMultishippingOrder'])) { + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + } + return $this->_sendRequest( dom_import_simplexml($orderSimpleXml)->ownerDocument, - $this->worldpayhelper->getXmlUsername($paymentType), - $this->worldpayhelper->getXmlPassword($paymentType) + $xmlUsername, + $xmlPassword ); } @@ -1177,6 +1577,23 @@ public function voidSale(\Magento\Sales\Model\Order $order, $wp, $paymentMethodC $merchantCode = !empty($this->worldpayhelper->getMotoMerchantCode()) ? $this->worldpayhelper->getMotoMerchantCode() : $merchantCode; } + if ($wp->getIsMultishippingOrder()) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + if ($paymentMethodCode == 'worldpay_paybylink') { + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode; + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername; + $xmlPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $xmlPassword; + } $voidSaleSimpleXml = $this->xmlvoidsale->build( $merchantCode, @@ -1222,7 +1639,23 @@ public function cancelOrder(\Magento\Sales\Model\Order $order, $wp, $paymentMeth $merchantCode = !empty($this->worldpayhelper->getMotoMerchantCode()) ? $this->worldpayhelper->getMotoMerchantCode() : $merchantCode; } - + if ($wp->getIsMultishippingOrder()) { + $msMerchantCode = $this->worldpayhelper->getMultishippingMerchantCode(); + $msMerchantUn = $this->worldpayhelper->getMultishippingMerchantUsername(); + $msMerchantPw = $this->worldpayhelper->getMultishippingMerchantPassword(); + + $xmlUsername = !empty($msMerchantUn) ? $msMerchantUn : $xmlUsername ; + $xmlPassword = !empty($msMerchantPw) ? $msMerchantPw : $xmlPassword ; + $merchantCode = !empty($msMerchantCode) ? $msMerchantCode : $merchantCode ; + } + if ($paymentMethodCode == 'worldpay_paybylink') { + $pblMerchantCode = $this->worldpayhelper->getPayByLinkMerchantCode(); + $pblMerchantUn = $this->worldpayhelper->getPayByLinkMerchantUsername(); + $pblMerchantPw = $this->worldpayhelper->getPayByLinkMerchantPassword(); + $merchantCode = !empty($pblMerchantCode) ? $pblMerchantCode : $merchantCode; + $xmlUsername = !empty($pblMerchantUn) ? $pblMerchantUn : $xmlUsername; + $xmlPassword = !empty($pblMerchantPw) ? $pblMerchantPw : $xmlPassword; + } $cancelSimpleXml = $this->xmlcancel->build( $merchantCode, $orderCode, @@ -1236,7 +1669,8 @@ public function cancelOrder(\Magento\Sales\Model\Order $order, $wp, $paymentMeth return $this->_sendRequest( dom_import_simplexml($cancelSimpleXml)->ownerDocument, $xmlUsername, - $xmlPassword + $xmlPassword, + self::SEND_ADDITIONAL_HEADER ); } diff --git a/Model/ResourceModel/Multishipping/Order/Collection.php b/Model/ResourceModel/Multishipping/Order/Collection.php index 552ec63..3c91197 100644 --- a/Model/ResourceModel/Multishipping/Order/Collection.php +++ b/Model/ResourceModel/Multishipping/Order/Collection.php @@ -86,4 +86,23 @@ public function getOriginalOrderId($order_id) ->addFieldToFilter('order_id', ['eq' => $order_id]); return $collection->getFirstItem(); } + + /** + * Fetch Multishipping Order ids + * + * @param int $quoteId + * @return array + */ + public function getMultishippingOrderIds($quoteId) + { + $connection = $this->getConnection(); + $select = $connection->select()->from( + ['wms' => $this->getTable('worldpay_multishipping')], + ['order_id'] + )->where( + 'wms.quote_id = :quote_id' + ); + + return $connection->fetchAll($select, [':quote_id' => $quoteId]); + } } diff --git a/Model/Response/RedirectResponse.php b/Model/Response/RedirectResponse.php index 77e304b..ace32d5 100644 --- a/Model/Response/RedirectResponse.php +++ b/Model/Response/RedirectResponse.php @@ -9,6 +9,11 @@ */ class RedirectResponse extends \Sapient\Worldpay\Model\Response\ResponseAbstract { + + /** + * @var \Magento\Framework\UrlInterface + */ + public $_urlBuilder; /** * Constructor * diff --git a/Model/Response/ResponseAbstract.php b/Model/Response/ResponseAbstract.php index 14e86a1..b41ad4f 100644 --- a/Model/Response/ResponseAbstract.php +++ b/Model/Response/ResponseAbstract.php @@ -19,7 +19,7 @@ abstract class ResponseAbstract public const PAYMENT_DETAILS_ERROR = 7; /** - * @var SimpleXmlElement + * @var \SimpleXmlElement */ protected $_responseXml; /** diff --git a/Model/SavedToken.php b/Model/SavedToken.php index 0562c68..bc53aa7 100644 --- a/Model/SavedToken.php +++ b/Model/SavedToken.php @@ -25,7 +25,7 @@ protected function _construct() * Load worldpay token Details * * @param string $order_id - * @return Sapient\Worldpay\Model\SavedToken + * @return \Sapient\Worldpay\Model\SavedToken */ public function loadByTokenCode($order_id) { diff --git a/Model/System/Config/Backend/AdminLabels.php b/Model/System/Config/Backend/AdminLabels.php index 1955cef..d0eabe5 100644 --- a/Model/System/Config/Backend/AdminLabels.php +++ b/Model/System/Config/Backend/AdminLabels.php @@ -27,6 +27,12 @@ class AdminLabels extends \Magento\Framework\App\Config\Value */ private $storeManager; + /** + * + * @var \Sapient\Worldpay\Helper\AdminLabels + */ + private $adminLabels; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/CheckoutLabels.php b/Model/System/Config/Backend/CheckoutLabels.php index 7e24290..1f97fea 100644 --- a/Model/System/Config/Backend/CheckoutLabels.php +++ b/Model/System/Config/Backend/CheckoutLabels.php @@ -26,6 +26,11 @@ class CheckoutLabels extends \Magento\Framework\App\Config\Value * @var \Magento\Store\Model\StoreManagerInterface */ private $storeManager; + /** + * + * @var \Sapient\Worldpay\Helper\CheckoutLabels + */ + private $checkoutLabels; /** * @param \Magento\Framework\Model\Context $context diff --git a/Model/System/Config/Backend/CreditCardException.php b/Model/System/Config/Backend/CreditCardException.php index 3022f90..a1a478b 100644 --- a/Model/System/Config/Backend/CreditCardException.php +++ b/Model/System/Config/Backend/CreditCardException.php @@ -24,6 +24,12 @@ class CreditCardException extends \Magento\Framework\App\Config\Value * @var \Magento\Store\Model\StoreManagerInterface */ private $storeManager; + /** + * Store manager interface + * + * @var \Sapient\Worldpay\Helper\CreditCardException + */ + private $creditcardexception; /** * @param \Magento\Framework\Model\Context $context diff --git a/Model/System/Config/Backend/CurrencyExponents.php b/Model/System/Config/Backend/CurrencyExponents.php index b58834f..269de40 100644 --- a/Model/System/Config/Backend/CurrencyExponents.php +++ b/Model/System/Config/Backend/CurrencyExponents.php @@ -25,6 +25,12 @@ class CurrencyExponents extends \Magento\Framework\App\Config\Value */ private $storeManager; + /** + * + * @var \Sapient\Worldpay\Helper\Currencyexponents + */ + private $currencyexponent; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/CurrentPluginVersion.php b/Model/System/Config/Backend/CurrentPluginVersion.php index 3c9053d..36f3ae7 100644 --- a/Model/System/Config/Backend/CurrentPluginVersion.php +++ b/Model/System/Config/Backend/CurrentPluginVersion.php @@ -11,6 +11,24 @@ class CurrentPluginVersion extends \Magento\Framework\App\Config\Value /* Module Name */ public const MODULE_NAME = 'Sapient_Worldpay'; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + /** + * @var \Magento\Framework\Component\ComponentRegistrarInterface + */ + protected $componentRegistrar; + + /** + * @var \Magento\Framework\Filesystem\Directory\ReadFactory + */ + protected $readFactory; + /** + * @var \Magento\Framework\App\Config\Storage\WriterInterface + */ + protected $configWriter; + /** * Constructor * diff --git a/Model/System/Config/Backend/ExtendedResponseCodes.php b/Model/System/Config/Backend/ExtendedResponseCodes.php index 782e51e..743ee10 100644 --- a/Model/System/Config/Backend/ExtendedResponseCodes.php +++ b/Model/System/Config/Backend/ExtendedResponseCodes.php @@ -11,7 +11,10 @@ */ class ExtendedResponseCodes extends \Magento\Framework\App\Config\Value { - + /** + * @var \Sapient\Worldpay\Helper\ExtendedResponseCodes + */ + protected $extendedResponseCodes; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/GeneralException.php b/Model/System/Config/Backend/GeneralException.php index 75b78ee..01e305f 100644 --- a/Model/System/Config/Backend/GeneralException.php +++ b/Model/System/Config/Backend/GeneralException.php @@ -18,6 +18,12 @@ class GeneralException extends \Magento\Framework\App\Config\Value * @var \Magento\Store\Model\StoreManagerInterface */ private $storeManager; + + /** + * + * @var \Sapient\Worldpay\Helper\GeneralException + */ + private $generalexception; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/Instalmentconfig.php b/Model/System/Config/Backend/Instalmentconfig.php index 4246317..6d11eef 100644 --- a/Model/System/Config/Backend/Instalmentconfig.php +++ b/Model/System/Config/Backend/Instalmentconfig.php @@ -10,6 +10,12 @@ class Instalmentconfig extends \Magento\Framework\App\Config\Value { + /** + * + * @var \Sapient\Worldpay\Helper\Instalmentconfig + */ + private $instalmentconfig; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/KlarnaCountries.php b/Model/System/Config/Backend/KlarnaCountries.php index c213349..d28c827 100644 --- a/Model/System/Config/Backend/KlarnaCountries.php +++ b/Model/System/Config/Backend/KlarnaCountries.php @@ -9,7 +9,13 @@ */ class KlarnaCountries extends \Magento\Framework\App\Config\Value { - + + /** + * + * @var \Sapient\Worldpay\Helper\KlarnaCountries + */ + private $klarnaCountries; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/Merchantprofile.php b/Model/System/Config/Backend/Merchantprofile.php index a505d8c..8cd3b31 100644 --- a/Model/System/Config/Backend/Merchantprofile.php +++ b/Model/System/Config/Backend/Merchantprofile.php @@ -9,6 +9,11 @@ */ class Merchantprofile extends \Magento\Framework\App\Config\Value { + /** + * + * @var \Sapient\Worldpay\Helper\Merchantprofile + */ + private $merchantprofile; /** * @param \Magento\Framework\Model\Context $context diff --git a/Model/System/Config/Backend/MyAccountException.php b/Model/System/Config/Backend/MyAccountException.php index 5f963f8..feb71d8 100644 --- a/Model/System/Config/Backend/MyAccountException.php +++ b/Model/System/Config/Backend/MyAccountException.php @@ -24,6 +24,13 @@ class MyAccountException extends \Magento\Framework\App\Config\Value * @var \Magento\Store\Model\StoreManagerInterface */ private $storeManager; + + /** + * + * @var \Sapient\Worldpay\Helper\MyAccountException + */ + private $myaccountexception; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/MyAccountLabels.php b/Model/System/Config/Backend/MyAccountLabels.php index f3c08f0..7eec3fa 100644 --- a/Model/System/Config/Backend/MyAccountLabels.php +++ b/Model/System/Config/Backend/MyAccountLabels.php @@ -27,6 +27,11 @@ class MyAccountLabels extends \Magento\Framework\App\Config\Value */ private $storeManager; + /** + * + * @var \Sapient\Worldpay\Helper\MyAccountLabels + */ + private $myAccountLabels; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry diff --git a/Model/System/Config/Backend/PluginUpgradeDates.php b/Model/System/Config/Backend/PluginUpgradeDates.php index 681efb2..7711158 100644 --- a/Model/System/Config/Backend/PluginUpgradeDates.php +++ b/Model/System/Config/Backend/PluginUpgradeDates.php @@ -9,6 +9,39 @@ */ class PluginUpgradeDates extends \Magento\Framework\App\Config\Value { + + /** + * + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; + + /** + * Store manager interface + * + * @var \Magento\Store\Model\StoreManagerInterface + */ + private $storeManager; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + private $scopeConfig; + + /** + * @var \Magento\Framework\App\Config\Storage\WriterInterface + */ + private $configWriter; + + /** + * @var \Magento\Framework\App\Cache\Manager + */ + private $cacheManager; + + /** + * @var \Sapient\Worldpay\Model\System\Config\Backend\PluginVersionHistory + */ + private $versionhistory; /** * Constructor * diff --git a/Model/System/Config/Backend/PluginVersionHistory.php b/Model/System/Config/Backend/PluginVersionHistory.php index b67d4c5..c4f662b 100644 --- a/Model/System/Config/Backend/PluginVersionHistory.php +++ b/Model/System/Config/Backend/PluginVersionHistory.php @@ -10,6 +10,30 @@ class PluginVersionHistory extends \Magento\Framework\App\Config\Value { /* Module Name */ public const MODULE_NAME = 'Sapient_Worldpay'; + /** + * + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + private $wplogger; + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + private $scopeConfig; + + /** + * @var \Magento\Framework\App\Config\Storage\WriterInterface + */ + private $configWriter; + + /** + * @var \Magento\Framework\App\Cache\Manager + */ + private $cacheManager; + + /** + * @var \Sapient\Worldpay\Model\System\Config\Backend\CurrentPluginVersion + */ + private $currentversionconfig; /** * Constructor diff --git a/Model/Token.php b/Model/Token.php index d6f54da..5afaa93 100644 --- a/Model/Token.php +++ b/Model/Token.php @@ -19,6 +19,16 @@ class Token */ protected $_request; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + protected $worldpayhelper; + + /** + * @var \Magento\Framework\Session\SessionManager + */ + protected $_session; + /** * Constructor * diff --git a/Model/Token/Service.php b/Model/Token/Service.php index f720ceb..5c67ef2 100644 --- a/Model/Token/Service.php +++ b/Model/Token/Service.php @@ -13,10 +13,25 @@ class Service { /** - * @var Sapient\WorldPay\Model\Request\PaymentServiceRequest + * @var \Sapient\WorldPay\Model\Request\PaymentServiceRequest */ protected $_paymentServiceRequest; + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $_wplogger; + + /** + * @var \Sapient\Worldpay\Model\Payment\Update\Factory + */ + protected $paymentupdatefactory; + + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + protected $worldpayPayment; + /** * Constructor * @@ -40,10 +55,10 @@ public function __construct( /** * Send token update request to WP server and gives back the answer * - * @param Sapient\Worldpay\Model\Token $tokenModel + * @param \Sapient\Worldpay\Model\Token $tokenModel * @param \Magento\Customer\Model\Customer $customer * @param int $storeId - * @return Sapient\Worldpay\Model\Token\UpdateXml + * @return \Sapient\Worldpay\Model\Token\UpdateXml */ public function getTokenUpdate( SavedToken $tokenModel, diff --git a/Model/Token/StateXml.php b/Model/Token/StateXml.php index 9505e90..50b529b 100644 --- a/Model/Token/StateXml.php +++ b/Model/Token/StateXml.php @@ -10,7 +10,7 @@ class StateXml implements \Sapient\Worldpay\Model\Token\StateInterface { /** - * @var SimpleXMLElement + * @var \SimpleXMLElement */ private $_xml; /** @@ -35,7 +35,7 @@ class StateXml implements \Sapient\Worldpay\Model\Token\StateInterface private $_orderStatusNode; /** - * @param SimpleXMLElement $xml + * @param \SimpleXMLElement $xml */ public function __construct(\SimpleXMLElement $xml) { diff --git a/Model/Token/UpdateXml.php b/Model/Token/UpdateXml.php index 02aaee8..2924ca0 100644 --- a/Model/Token/UpdateXml.php +++ b/Model/Token/UpdateXml.php @@ -12,12 +12,12 @@ class UpdateXml implements UpdateInterface { /** - * @var SimpleXMLElement + * @var \SimpleXMLElement */ private $_xml; /** - * @param SimpleXMLElement $xml + * @param \SimpleXMLElement $xml */ public function __construct(\SimpleXMLElement $xml) { diff --git a/Model/Token/WorldpayToken.php b/Model/Token/WorldpayToken.php index b90a931..7213948 100644 --- a/Model/Token/WorldpayToken.php +++ b/Model/Token/WorldpayToken.php @@ -37,15 +37,39 @@ class WorldpayToken */ private $paymentTokenRepository; /** - * @var Magento\Framework\Serialize\Serializer\Json + * @var \Magento\Framework\Serialize\Serializer\Json */ protected $serializer; + /** + * @var SavedToken + */ + protected $savedtoken; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var CreditCardTokenFactory + */ + protected $paymentTokenFactory; + /** + * @var OrderPaymentExtensionInterfaceFactory + */ + protected $paymentExtensionFactory; + + /** + * @var \Sapient\Worldpay\Model\Recurring\Subscription\TransactionsFactory + */ + protected $transactionFactory; + /** * Constructor * * @param SavedToken $savedtoken - * @param Sapient\Worldpay\Logger\WorldpayLogger $wplogger + * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger * @param \Sapient\Worldpay\Model\Recurring\Subscription\TransactionsFactory $transactionsFactory * @param OrderPaymentExtensionInterfaceFactory $paymentExtensionFactory * @param CreditCardTokenFactory $paymentTokenFactory @@ -79,9 +103,9 @@ public function __construct( /** * Update token of the given customer * - * @param Sapient\WorldPay\Model\Token $token + * @param \Sapient\WorldPay\Model\Token $token * @param \Magento\Customer\Model\Customer $customer - * @throws Sapient\Worldpay\Model\Token\AccessDeniedException + * @throws \Sapient\Worldpay\Model\Token\AccessDeniedException */ public function updateTokenByCustomer(SavedToken $token, \Magento\Customer\Model\Customer $customer) { diff --git a/Model/Utilities/PaymentMethods.php b/Model/Utilities/PaymentMethods.php index 47b56ae..dd7b8ff 100644 --- a/Model/Utilities/PaymentMethods.php +++ b/Model/Utilities/PaymentMethods.php @@ -10,7 +10,7 @@ class PaymentMethods { /** - * @var SimpleXMLElement + * @var \SimpleXMLElement */ protected static $_xml; @@ -19,6 +19,35 @@ class PaymentMethods */ protected $_xmlLocation; + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + protected $_storeManager; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ + protected $wplogger; + + /** + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutsession; + + /** + * @var \Magento\Backend\Model\Session\Quote + */ + protected $adminsessionquote; + + /** + * @var \Magento\Backend\Model\Auth\Session + */ + protected $authSession; public const PAYMENT_METHOD_PATH = '/paymentMethods/'; public const TYPE_PATH = '/types/'; diff --git a/Model/WorldpayConfigProvider.php b/Model/WorldpayConfigProvider.php index be858ea..ed0cee3 100644 --- a/Model/WorldpayConfigProvider.php +++ b/Model/WorldpayConfigProvider.php @@ -61,13 +61,6 @@ class WorldpayConfigProvider implements ConfigProviderInterface */ public $session; - /** - * Locale model - * - * @var \Magento\Framework\Locale\ResolverInterface - */ - protected $localeResolver; - /** * @var SerializerInterface */ @@ -77,6 +70,51 @@ class WorldpayConfigProvider implements ConfigProviderInterface * @var fileDriver */ protected $fileDriver; + + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + + /** + * @var \Magento\Backend\Model\Session\Quote + */ + protected $adminquotesession; + + /** + * @var SavedTokenFactory + */ + protected $savedTokenFactory; + + /** + * @var \Sapient\Worldpay\Model\Utilities\PaymentMethods + */ + protected $paymentmethodutils; + + /** + * @var \Magento\Backend\Model\Auth\Session + */ + protected $backendAuthSession; + + /** + * @var Repository + */ + protected $assetRepo; + + /** + * @var RequestInterface + */ + protected $request; + + /** + * @var Source + */ + protected $assetSource; + + /** + * @var \Magento\Framework\Locale\ResolverInterface + */ + protected $localeResolver; /** * @param \Sapient\Worldpay\Logger\WorldpayLogger $wplogger @@ -252,6 +290,9 @@ public function getConfig() $config['payment']['ccform']['latAmCountries'] = $this->worldpayHelper->getConfigCountries(); //ACH Pay $config['payment']['ccform']['achdetails'] = $this->worldpayHelper->getACHDetails(); + //Sepa Pay + $config['payment']['ccform']['sepadetails'] = $this->worldpayHelper->getSEPADetails(); + $config['payment']['ccform']['sepa_e_mandate'] = $this->worldpayHelper->getSepaEmandate(); //Prime Routing $config['payment']['ccform']['isPrimeRoutingEnabled'] = $this->worldpayHelper->isPrimeRoutingEnabled(); diff --git a/Model/XmlBuilder/ACHOrder.php b/Model/XmlBuilder/ACHOrder.php index f62070e..cf6b09d 100644 --- a/Model/XmlBuilder/ACHOrder.php +++ b/Model/XmlBuilder/ACHOrder.php @@ -86,6 +86,10 @@ class ACHOrder * @var array|string */ private $exponent; + /** + * @var string $captureDelay + */ + private $captureDelay; /** * Build xml for processing Request @@ -104,6 +108,7 @@ class ACHOrder * @param string $shopperId * @param string $statementNarrative * @param string $exponent + * @param string $captureDelay */ public function build( $merchantCode, @@ -119,7 +124,8 @@ public function build( $billingAddress, $shopperId, $statementNarrative, - $exponent + $exponent, + $captureDelay ) { $this->merchantCode = $merchantCode; @@ -136,6 +142,7 @@ public function build( $this->shopperId = $shopperId; $this->statementNarrative = $statementNarrative; $this->exponent = $exponent; + $this->captureDelay = $captureDelay; $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); $xml['merchantCode'] = $this->merchantCode; @@ -168,6 +175,9 @@ private function _addOrderElement($submit) { $order = $submit->addChild('order'); $order['orderCode'] = $this->orderCode; + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $this->_addAmountElement($order); $this->_addPaymentDetailsElement($order); diff --git a/Model/XmlBuilder/ApplePayOrder.php b/Model/XmlBuilder/ApplePayOrder.php index fffb09a..e3208a4 100644 --- a/Model/XmlBuilder/ApplePayOrder.php +++ b/Model/XmlBuilder/ApplePayOrder.php @@ -45,6 +45,41 @@ class ApplePayOrder */ private $exponent; + /** + * @var string $captureDelay + */ + private $captureDelay; + + /** + * @var string + */ + private $shopperEmail; + /** + * @var string + */ + private $protocolVersion; + + /** + * @var string + */ + private $signature; + /** + * @var array | string + */ + private $data; + /** + * @var string + */ + private $ephemeralPublicKey; + /** + * @var string + */ + private $publicKeyHash; + /** + * @var string + */ + private $transactionId; + /** * Build xml for processing Request * @@ -62,6 +97,7 @@ class ApplePayOrder * @param string $publicKeyHash * @param string $transactionId * @param string|array|float $exponent + * @param string $captureDelay * @return SimpleXMLElement $xml */ public function build( @@ -78,7 +114,8 @@ public function build( $ephemeralPublicKey, $publicKeyHash, $transactionId, - $exponent + $exponent, + $captureDelay ) { $this->merchantCode = $merchantCode; $this->orderCode = $orderCode; @@ -94,6 +131,7 @@ public function build( $this->publicKeyHash = $publicKeyHash; $this->transactionId = $transactionId; $this->exponent = $exponent; + $this->captureDelay = $captureDelay; $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); $xml['merchantCode'] = $this->merchantCode; $xml['version'] = '1.4'; @@ -126,7 +164,9 @@ private function _addOrderElement($submit) $order = $submit->addChild('order'); $order['orderCode'] = $this->orderCode; $order['shopperLanguageCode'] = "en"; - + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $this->_addAmountElement($order); $this->_addPaymentDetailsElement($order); diff --git a/Model/XmlBuilder/Capture.php b/Model/XmlBuilder/Capture.php index 7bba8e1..0022595 100644 --- a/Model/XmlBuilder/Capture.php +++ b/Model/XmlBuilder/Capture.php @@ -36,6 +36,54 @@ class Capture */ private $exponent; + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + protected $storeManager; + + /** + * @var Order $order + */ + protected $order; + + /** + * @var mixed + */ + protected $captureType; + + /** + * @var bool + */ + protected $isMultishippingOrder; + + /** + * @var string|null + */ + protected $paymentType; + + /** + * @var array|null + */ + protected $invoicedItems; + + /** + * Capture constructor + * + * @param Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + * @param Magento\Store\Model\StoreManagerInterface $storeManager + */ + + public function __construct( + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + \Magento\Store\Model\StoreManagerInterface $storeManager + ) { + $this->scopeConfig = $scopeConfig; + $this->storeManager = $storeManager; + } /** * Build xml for processing Request * @@ -81,12 +129,8 @@ public function build( $orderModification = $this->_addOrderModificationElement($modify); $capture = $this->_addCapture($orderModification); $this->_addCaptureElement($capture); - - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES; - - $level23DataEnabled = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) - ->getValue('worldpay/level23_config/level23', $storeScope); + $level23DataEnabled = $this->scopeConfig->getValue('worldpay/level23_config/level23', $storeScope); //Level23 data changes $countryCode = $order->getBillingAddress()->getCountryId(); @@ -140,13 +184,11 @@ private function _addOrderModificationElement($modify) private function _addCapture($orderModification) { $capture = $orderModification->addChild('capture'); - - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES; - $autoInvoice = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $autoInvoice = $this->scopeConfig ->getValue('worldpay/general_config/capture_automatically', $storeScope); - $partialCapture = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $partialCapture = $this->scopeConfig ->getValue('worldpay/partial_capture_config/partial_capture', $storeScope); //check the partial capture if ($this->captureType == 'partial' && $partialCapture) { @@ -182,12 +224,11 @@ private function _addCaptureElement($capture) $amountElement['exponent'] = $this->exponent; $amountElement['value'] = $this->_amountAsInt($this->amount); - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES; - $autoInvoice = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $autoInvoice = $this->scopeConfig ->getValue('worldpay/general_config/capture_automatically', $storeScope); - $partialCapture = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $partialCapture = $this->scopeConfig ->getValue('worldpay/partial_capture_config/partial_capture', $storeScope); //check the partial capture @@ -244,13 +285,12 @@ private function _addBranchSpecificExtension($order, $capture) $purchase->addChild('customerReference', $order->getCustomerId()); } - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES; - $cardAcceptorTaxId = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $cardAcceptorTaxId = $this->scopeConfig ->getValue('worldpay/level23_config/CardAcceptorTaxId', $storeScope); - $dutyAmount = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $dutyAmount = $this->scopeConfig ->getValue('worldpay/level23_config/duty_amount', $storeScope); $taxAmount = $order->getTaxAmount(); @@ -444,8 +484,7 @@ private function _addKlarnaOrderLineItemElement($order, $capture, $invoicedItems $this->_addCDATA($orderTaxAmountElement, $this->_amountAsInt($order->getTaxAmount())); //terms url - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $store = $objectManager->get(\Magento\Store\Model\StoreManagerInterface::class)->getStore(); + $store = $this->storeManager->getStore(); $termsURLElement = $orderLinesElement->addChild('termsURL'); $this->_addCDATA($termsURLElement, $store->getBaseUrl()); diff --git a/Model/XmlBuilder/ChromePayOrder.php b/Model/XmlBuilder/ChromePayOrder.php index 8e8dae8..ebd22c1 100644 --- a/Model/XmlBuilder/ChromePayOrder.php +++ b/Model/XmlBuilder/ChromePayOrder.php @@ -74,12 +74,21 @@ class ChromePayOrder * @var array|string */ private $exponent; + /** + * @var string + */ + private $paymentType; /** - * @var Sapient\Worldpay\Model\XmlBuilder\Config\TokenConfiguration + * @var \Sapient\Worldpay\Model\XmlBuilder\Config\TokenConfiguration */ protected $tokenRequestConfig; + /** + * @var string $captureDelay + */ + protected $captureDelay; + /** * Build xml for processing Request * @@ -94,6 +103,7 @@ class ChromePayOrder * @param float $billingAddress * @param string $shopperEmail * @param array|string $exponent + * @param string $captureDelay * @return SimpleXMLElement $xml */ public function build( @@ -111,7 +121,8 @@ public function build( $billingAddress, //$shopperId, $shopperEmail, - $exponent + $exponent, + $captureDelay ) { $this->merchantCode = $merchantCode; $this->orderCode = $orderCode; @@ -125,6 +136,7 @@ public function build( $this->billingAddress = $billingAddress; $this->shopperEmail = $shopperEmail; $this->exponent = $exponent; + $this->captureDelay = $captureDelay; //$this->acceptHeader = $acceptHeader; //$this->userAgentHeader = $userAgentHeader; @@ -159,6 +171,9 @@ private function _addOrderElement($submit) { $order = $submit->addChild('order'); $order['orderCode'] = $this->orderCode; + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $this->_addAmountElement($order); $this->_addPaymentDetailsElement($order); diff --git a/Model/XmlBuilder/DirectIdealOrder.php b/Model/XmlBuilder/DirectIdealOrder.php index 59f3267..ec2e533 100644 --- a/Model/XmlBuilder/DirectIdealOrder.php +++ b/Model/XmlBuilder/DirectIdealOrder.php @@ -92,7 +92,23 @@ class DirectIdealOrder * @var Sapient\Worldpay\Model\XmlBuilder\Config\TokenConfiguration */ private $tokenRequestConfig; + /** + * @var string $captureDelay + */ + private $captureDelay; + /** + * @var string + */ + private $callbackurl; + /** + * @var string + */ + private $bankcode; + /** + * @var string + */ + private $shopperId; /** * Constructor * @@ -129,6 +145,7 @@ public function __construct(array $args = []) * @param string $callbackurl * @param string $ccbank * @param array|string $exponent + * @param string $captureDelay * @return SimpleXMLElement $xml */ public function build( @@ -149,7 +166,8 @@ public function build( $hideAddress, $callbackurl, $ccbank, - $exponent + $exponent, + $captureDelay ) { $this->merchantCode = $merchantCode; $this->orderCode = $orderCode; @@ -169,6 +187,7 @@ public function build( $this->callbackurl = $callbackurl; $this->bankcode = $ccbank; $this->exponent = $exponent; + $this->captureDelay = $captureDelay; $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); $xml['merchantCode'] = $this->merchantCode; @@ -213,7 +232,9 @@ private function _addOrderElement($submit) $order['hideContact'] = 'false'; } } - + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $this->_addAmountElement($order); $this->_addOrderContentElement($order); diff --git a/Model/XmlBuilder/DirectOrder.php b/Model/XmlBuilder/DirectOrder.php index ff84d48..64d7113 100644 --- a/Model/XmlBuilder/DirectOrder.php +++ b/Model/XmlBuilder/DirectOrder.php @@ -137,13 +137,25 @@ class DirectOrder */ protected $tokenRequestConfig; + /** + * @var string $captureDelay + */ + protected $captureDelay; + + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; /** * Constructor - * + * @param \Magento\Customer\Model\Session $customerSession * @param array $args */ - public function __construct(array $args = []) - { + public function __construct( + \Magento\Customer\Model\Session $customerSession, + array $args = [] + ) { + $this->customerSession = $customerSession; $this->threeDSecureConfig = new \Sapient\Worldpay\Model\XmlBuilder\Config\ThreeDSecure( $args['threeDSecureConfig']['isDynamic3D'], $args['threeDSecureConfig']['is3DSecure'] @@ -179,6 +191,7 @@ public function __construct(array $args = []) * @param array|string $exponent * @param mixed $primeRoutingData * @param array $orderLineItems + * @param string $captureDelay * @return SimpleXMLElement $xml */ public function build( @@ -204,7 +217,8 @@ public function build( $shippingfee, $exponent, $primeRoutingData, - $orderLineItems + $orderLineItems, + $captureDelay ) { $this->merchantCode = $merchantCode; @@ -230,6 +244,7 @@ public function build( $this->exponent = $exponent; $this->primeRoutingData =$primeRoutingData; $this->orderLineItems = $orderLineItems; + $this->captureDelay = $captureDelay; $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); $xml['merchantCode'] = $this->merchantCode; @@ -333,6 +348,10 @@ private function _addOrderElement($submit) $session['id'] = $this->paymentDetails['sessionId']; return $order; } + + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $this->_addAmountElement($order); @@ -1016,10 +1035,8 @@ private function _addBranchSpecificExtension($order) $purchase = $branchSpecificExtension->addChild('purchase'); $customerId = ''; - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $customerSession = $objectManager->get(\Magento\Customer\Model\Session::class); - if ($customerSession->isLoggedIn()) { - $customerId = $customerSession->getCustomer()->getId(); + if ($this->customerSession->isLoggedIn()) { + $customerId = $this->customerSession->getCustomer()->getId(); } if (!empty($customerId)) { diff --git a/Model/XmlBuilder/RedirectKlarnaOrder.php b/Model/XmlBuilder/RedirectKlarnaOrder.php index 07df4bf..cf2c201 100644 --- a/Model/XmlBuilder/RedirectKlarnaOrder.php +++ b/Model/XmlBuilder/RedirectKlarnaOrder.php @@ -95,6 +95,14 @@ class RedirectKlarnaOrder * @var array|string */ private $orderContent; + /** + * @var string $captureDelay + */ + private $captureDelay; + /** + * @var array + */ + private $orderlineitems; /** * RedirectKlarnaOrder constructor @@ -128,6 +136,7 @@ public function __construct() * @param array|string $exponent * @param string $sessionData * @param array|string $orderContent + * @param string $captureDelay * @return SimpleXMLElement $xml */ public function build( @@ -149,7 +158,8 @@ public function build( $orderlineitems, $exponent, $sessionData, - $orderContent + $orderContent, + $captureDelay ) { $this->merchantCode = $merchantCode; $this->orderCode = $orderCode; @@ -170,7 +180,7 @@ public function build( $this->exponent = $exponent; $this->sessionData = $sessionData; $this->orderContent = $orderContent; - + $this->captureDelay = $captureDelay; $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); $xml['merchantCode'] = $this->merchantCode; $xml['version'] = '1.4'; @@ -214,6 +224,10 @@ private function _addOrderElement($submit) $order['hideContact'] = 'false'; } } + + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $this->_addAmountElement($order); $this->_addOrderContentElement($order); diff --git a/Model/XmlBuilder/RedirectOrder.php b/Model/XmlBuilder/RedirectOrder.php index 0bcfa2e..f0e9bbb 100644 --- a/Model/XmlBuilder/RedirectOrder.php +++ b/Model/XmlBuilder/RedirectOrder.php @@ -119,6 +119,19 @@ class RedirectOrder * @var array */ private $storedCredentialsEnabled; + /** + * @var string + */ + private $captureDelay; + + /** + * @var string + */ + private $shopperId; + /** + * @var array + */ + public $paymentDetails; /** * Constructor @@ -158,6 +171,7 @@ public function __construct(array $args = []) * @param mixed $exponent * @param string $cusDetails * @param array $orderLineItems + * @param string $captureDelay * @param string $savemyCard * @param string $storedCredentialsEnabled = null * @return SimpleXMLElement $xml @@ -184,6 +198,7 @@ public function build( $exponent, $cusDetails, $orderLineItems, + $captureDelay, $savemyCard = null, $storedCredentialsEnabled = null ) { @@ -208,6 +223,7 @@ public function build( $this->exponent = $exponent; $this->cusDetails = $cusDetails; $this->orderLineItems = $orderLineItems; + $this->captureDelay = $captureDelay; $this->saveCardEnabled = $savemyCard; $this->storedCredentialsEnabled = $storedCredentialsEnabled; @@ -255,7 +271,9 @@ private function _addOrderElement($submit) $order['hideContact'] = 'false'; } } - + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $amountElement = $order->addChild('amount'); $this->_addAmountElement($amountElement, $this->currencyCode, $this->exponent, $this->amount); diff --git a/Model/XmlBuilder/RedirectPayByLinkOrder.php b/Model/XmlBuilder/RedirectPayByLinkOrder.php new file mode 100644 index 0000000..c02531b --- /dev/null +++ b/Model/XmlBuilder/RedirectPayByLinkOrder.php @@ -0,0 +1,970 @@ + +EOD; + + /** + * @var string + */ + private $merchantCode; + /** + * @var string + */ + private $orderCode; + /** + * @var string + */ + private $orderDescription; + /** + * @var string + */ + private $currencyCode; + /** + * @var float + */ + private $amount; + /** + * @var string + */ + private $paymentType; + /** + * @var string + */ + private $shopperEmail; + /** + * @var string + */ + private $statementNarrative; + /** + * @var string + */ + private $acceptHeader; + /** + * @var string + */ + private $userAgentHeader; + /** + * @var array + */ + private $shippingAddress; + /** + * @var array + */ + private $billingAddress; + /** + * @var float + */ + private $paymentPagesEnabled; + /** + * @var string + */ + private $installationId; + /** + * @var string + */ + private $hideAddress; + /** + * @var string + */ + private $thirdparty; + /** + * @var mixed + */ + private $shippingfee; + /** + * @var mixed + */ + private $exponent; + /** + * @var string + */ + private $cusDetails; + /** + * @var array + */ + private $orderLineItems; + + /** + * @var Sapient\Worldpay\Model\XmlBuilder\Config\ThreeDSecure + */ + private $threeDSecureConfig; + + /** + * @var Sapient\Worldpay\Model\XmlBuilder\Config\TokenConfiguration + */ + private $tokenRequestConfig; + + /** + * @var array + */ + private $saveCardEnabled; + + /** + * @var array + */ + private $storedCredentialsEnabled; + /** + * @var string $captureDelay + */ + private $captureDelay; + + /** + * @var string + */ + private $shopperId; + + /** + * @var array + */ + private $paymentDetails; + + /** + * @var string + */ + private $savemyCard; + + /** + * Constructor + * + * @param array $args + */ + public function __construct(array $args = []) + { + $this->threeDSecureConfig = new \Sapient\Worldpay\Model\XmlBuilder\Config\ThreeDSecure(); + $this->tokenRequestConfig = new \Sapient\Worldpay\Model\XmlBuilder\Config\TokenConfiguration( + $args['tokenRequestConfig'] + ); + $this->shopperId = $args['shopperId']; + } + + /** + * Build xml for processing Request + * + * @param string $merchantCode + * @param string $orderCode + * @param string $orderDescription + * @param string $currencyCode + * @param float $amount + * @param string $paymentType + * @param string $shopperEmail + * @param string $statementNarrative + * @param string $acceptHeader + * @param string $userAgentHeader + * @param string $shippingAddress + * @param string $billingAddress + * @param float $paymentPagesEnabled + * @param string $installationId + * @param string $hideAddress + * @param array $paymentDetails + * @param string $thirdparty + * @param mixed $shippingfee + * @param mixed $exponent + * @param string $cusDetails + * @param array $orderLineItems + * @param string $captureDelay + * @param string $savemyCard + * @param string $storedCredentialsEnabled = null + * @return SimpleXMLElement $xml + */ + public function build( + $merchantCode, + $orderCode, + $orderDescription, + $currencyCode, + $amount, + $paymentType, + $shopperEmail, + $statementNarrative, + $acceptHeader, + $userAgentHeader, + $shippingAddress, + $billingAddress, + $paymentPagesEnabled, + $installationId, + $hideAddress, + $paymentDetails, + $thirdparty, + $shippingfee, + $exponent, + $cusDetails, + $orderLineItems, + $captureDelay, + $savemyCard = null, + $storedCredentialsEnabled = null + ) { + $this->merchantCode = $merchantCode; + $this->orderCode = $orderCode; + $this->orderDescription = $orderDescription; + $this->currencyCode = $currencyCode; + $this->amount = $amount; + $this->paymentType = $paymentType; + $this->shopperEmail = $shopperEmail; + $this->statementNarrative = $statementNarrative; + $this->acceptHeader = $acceptHeader; + $this->userAgentHeader = $userAgentHeader; + $this->shippingAddress = $shippingAddress; + $this->billingAddress = $billingAddress; + $this->paymentPagesEnabled = $paymentPagesEnabled; + $this->installationId = $installationId; + $this->hideAddress = $hideAddress; + $this->paymentDetails = $paymentDetails; + $this->thirdparty = $thirdparty; + $this->shippingfee = $shippingfee; + $this->exponent = $exponent; + $this->cusDetails = $cusDetails; + $this->orderLineItems = $orderLineItems; + $this->captureDelay = $captureDelay; + + $this->saveCardEnabled = $savemyCard; + $this->storedCredentialsEnabled = $storedCredentialsEnabled; + + $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); + $xml['merchantCode'] = $this->merchantCode; + $xml['version'] = '1.4'; + + $submit = $this->_addSubmitElement($xml); + $this->_addOrderElement($submit); + + return $xml; + } + + /** + * Add submit tag to xml + * + * @param SimpleXMLElement $xml + * @return SimpleXMLElement + */ + private function _addSubmitElement($xml) + { + return $xml->addChild('submit'); + } + + /** + * Add order tag to xml + * + * @param SimpleXMLElement $submit + * @return SimpleXMLElement $order + */ + private function _addOrderElement($submit) + { + $order = $submit->addChild('order'); + $order['orderCode'] = $this->orderCode; + + if ($this->paymentPagesEnabled) { + $order['installationId'] = $this->installationId; + + $order['fixContact'] = 'true'; + $order['hideContact'] = 'true'; + + if ($this->hideAddress) { + $order['fixContact'] = 'false'; + $order['hideContact'] = 'false'; + } + } + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } + $this->_addDescriptionElement($order); + $amountElement = $order->addChild('amount'); + $this->_addAmountElement($amountElement, $this->currencyCode, $this->exponent, $this->amount); + if (isset($this->paymentDetails['paymentType']) && $this->paymentDetails['paymentType'] == "TOKEN-SSL") { + $this->_addPaymentDetailsElement($order); + } else { + $this->_addPaymentMethodMaskElement($order); + } + $this->_addShopperElement($order); + $this->_addShippingElement($order); + $this->_addBillingElement($order); + + //Level 23 data request body + if (!empty($this->paymentDetails['isLevel23Enabled']) && $this->paymentDetails['isLevel23Enabled'] + && ($this->paymentDetails['cardType'] === 'ECMC-SSL' || $this->paymentDetails['cardType'] === 'VISA-SSL') + && ($this->paymentDetails['countryCode'] === 'US' || $this->paymentDetails['countryCode'] === 'CA')) { + $this->_addBranchSpecificExtension($order); + } else { + $this->addOrderLineItemsXML($order); + } + + if (!empty($this->thirdparty)) { + $this->_addThirdPartyData($order); + } + $this->_addDynamic3DSElement($order); + $this->_addCreateTokenElement($order); + if (!empty($this->statementNarrative)) { + $this->_addStatementNarrativeElement($order); + } + $this->_addFraudSightData($order); + return $order; + } + + /** + * Add description tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addDescriptionElement($order) + { + $description = $order->addChild('description'); + if (!empty($this->thirdparty['statement'])) { + $this->_addCDATA($description, $this->thirdparty['statement']); + } else { + $this->_addCDATA($description, $this->orderDescription); + } + } + + /** + * Add amount tag to xml + * + * @param SimpleXMLElement $amountElement + * @param string $currencyCode + * @param mixed $exponent + * @param float $amount + */ + private function _addAmountElement($amountElement, $currencyCode, $exponent, $amount) + { + $amountElement['currencyCode'] = $currencyCode; + $amountElement['exponent'] = $exponent; + $amountElement['value'] = $this->_amountAsInt($amount); + } + + /** + * Add dynamicInteractionType and its attribute tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addDynamic3DSElement($order) + { + if (isset($this->paymentDetails['PaymentMethod']) + && $this->paymentDetails['PaymentMethod'] == 'worldpay_moto') { + $threeDSElement = $order->addChild('dynamic3DS'); + $threeDSElement['overrideAdvice'] = self::DYNAMIC3DS_NO3DS; + } + + if ($this->threeDSecureConfig->isDynamic3DEnabled() === false) { + return; + } + + $threeDSElement = $order->addChild('dynamic3DS'); + if ($this->threeDSecureConfig->is3DSecureCheckEnabled() + && (isset($this->paymentDetails['PaymentMethod']) + && $this->paymentDetails['PaymentMethod'] !== 'worldpay_moto')) { + $threeDSElement['overrideAdvice'] = self::DYNAMIC3DS_DO3DS; + } else { + $threeDSElement['overrideAdvice'] = self::DYNAMIC3DS_NO3DS; + } + } + + /** + * Add createToken and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addCreateTokenElement($order) + { + if (! $this->tokenRequestConfig->istokenizationIsEnabled()) { + return; + } + + $createTokenElement = $order->addChild('createToken'); + $createTokenElement['tokenScope'] = self::TOKEN_SCOPE; + if ($this->paymentDetails['token_type']) { + $createTokenElement['tokenScope'] = 'merchant'; + $createTokenElement->addChild( + 'tokenEventReference', + time().'_'.random_int(0, 99999) + ); + } + if ($this->tokenRequestConfig->getTokenReason($this->orderCode)) { + $createTokenElement->addChild( + 'tokenReason', + $this->tokenRequestConfig->getTokenReason($this->orderCode) + ); + } + } + + /** + * Add paymentMethodMask and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addPaymentMethodMaskElement($order) + { + $paymentMethodMask = $order->addChild('paymentMethodMask'); + if ($this->saveCardEnabled && $this->storedCredentialsEnabled) { + $this->_addStoredCredentials($paymentMethodMask); + } + $include = $paymentMethodMask->addChild('include'); + $include['code'] = $this->paymentType; + } + + /** + * Add _addStatementNarrativeElement to xml + * + * @param SimpleXMLElement $order + */ + private function _addStatementNarrativeElement($order) + { + $order->addChild('statementNarrative', $this->statementNarrative); + } + /** + * Add shopper and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addShopperElement($order) + { + $shopper = $order->addChild('shopper'); + $shopper->addChild('shopperEmailAddress', $this->shopperEmail); + if (!$this->paymentDetails['token_type']) { + if ($this->tokenRequestConfig->istokenizationIsEnabled()) { + $shopper->addChild('authenticatedShopperID', $this->shopperId); + } elseif (isset($this->paymentDetails['tokenCode'])) { + $shopper->addChild('authenticatedShopperID', $this->paymentDetails['customerId']); + } + } + + $browser = $shopper->addChild('browser'); + + $acceptHeader = $browser->addChild('acceptHeader'); + $this->_addCDATA($acceptHeader, $this->acceptHeader); + + $userAgentHeader = $browser->addChild('userAgentHeader'); + $this->_addCDATA($userAgentHeader, $this->userAgentHeader); + } + + /** + * Add shippingAddress and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addShippingElement($order) + { + $shippingAddress = $order->addChild('shippingAddress'); + $this->_addAddressElement( + $shippingAddress, + $this->shippingAddress['firstName'], + $this->shippingAddress['lastName'], + $this->shippingAddress['street'], + $this->shippingAddress['postalCode'], + $this->shippingAddress['city'], + $this->shippingAddress['countryCode'] + ); + } + + /** + * Add billing and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addBillingElement($order) + { + $billingAddress = $order->addChild('billingAddress'); + $this->_addAddressElement( + $billingAddress, + $this->billingAddress['firstName'], + $this->billingAddress['lastName'], + $this->billingAddress['street'], + $this->billingAddress['postalCode'], + $this->billingAddress['city'], + $this->billingAddress['countryCode'] + ); + } + + /** + * Add address and its child tag to xml + * + * @param SimpleXMLElement $parentElement + * @param string $firstName + * @param string $lastName + * @param string $street + * @param string $postalCode + * @param string $city + * @param string $countryCode + */ + private function _addAddressElement( + $parentElement, + $firstName, + $lastName, + $street, + $postalCode, + $city, + $countryCode + ) { + $address = $parentElement->addChild('address'); + + $firstNameElement = $address->addChild('firstName'); + $this->_addCDATA($firstNameElement, $firstName); + + $lastNameElement = $address->addChild('lastName'); + $this->_addCDATA($lastNameElement, $lastName); + + $streetElement = $address->addChild('street'); + $this->_addCDATA($streetElement, $street); + + $postalCodeElement = $address->addChild('postalCode'); + //Zip code mandatory for worldpay, if not provided by customer we will pass manually + $zipCode = '00000'; + //If Zip code provided by customer + if ($postalCode) { + $zipCode = $postalCode; + } + $this->_addCDATA($postalCodeElement, $zipCode); + + $cityElement = $address->addChild('city'); + $this->_addCDATA($cityElement, $city); + + $countryCodeElement = $address->addChild('countryCode'); + $this->_addCDATA($countryCodeElement, $countryCode); + } + + /** + * Add cdata to xml + * + * @param SimpleXMLElement $element + * @param string $content + */ + private function _addCDATA($element, $content) + { + $node = dom_import_simplexml($element); + $no = $node->ownerDocument; + $node->appendChild($no->createCDATASection($content)); + } + + /** + * Returns the rounded value of num to specified precision + * + * @param float $amount + * @return int + */ + private function _amountAsInt($amount) + { + return round($amount, $this->exponent, PHP_ROUND_HALF_EVEN) * pow(10, $this->exponent); + } + + /** + * Add paymentDetails and its child tag to xml + * + * @param SimpleXMLElement $order + */ + protected function _addPaymentDetailsElement($order) + { + $paymentDetailsElement = $order->addChild('paymentDetails'); + $this->_addPaymentDetailsForTokenOrder($paymentDetailsElement); + $this->_addPaymentDetailsForStoredCredentialsOrder($paymentDetailsElement); + $session = $paymentDetailsElement->addChild('session'); + $session['id'] = $this->paymentDetails['sessionId']; + $session['shopperIPAddress'] = $this->paymentDetails['shopperIpAddress']; + } + /** + * Add stored credentials data and its child tag to xml + * + * @param element $paymentDetailsElement + * @return string + */ + protected function _addStoredCredentials($paymentDetailsElement) + { + $storedCredentials = $paymentDetailsElement->addChild('storedCredentials'); + $storedCredentials['usage'] = "FIRST"; + return $storedCredentials; + } + /** + * Add payment details for stored credentials data and its child tag to xml + * + * @param element $paymentDetailsElement + * @return string + */ + protected function _addPaymentDetailsForStoredCredentialsOrder($paymentDetailsElement) + { + $storedCredentials = $paymentDetailsElement->addChild('storedCredentials'); + $storedCredentials['usage'] = "USED"; + return $storedCredentials; + } + /** + * Add encryptedData and its child tag to xml + * + * @param SimpleXMLElement $paymentDetailsElement + */ + protected function _addPaymentDetailsForTokenOrder($paymentDetailsElement) + { + if (isset($this->paymentDetails['encryptedData'])) { + $cseElement = $this->_addCseElement($paymentDetailsElement); + } + $tokenNode = $paymentDetailsElement->addChild($this->paymentDetails['paymentType']); + $tokenNode['tokenScope'] = self::TOKEN_SCOPE; + if ($this->paymentDetails['token_type']) { + $tokenNode['tokenScope'] = 'merchant'; + } + if (isset($this->paymentDetails['ccIntegrationMode']) && + $this->paymentDetails['ccIntegrationMode'] == "redirect") { + $tokenNode['captureCvc'] = "true"; + } + + $tokenNode->addChild('paymentTokenID', $this->paymentDetails['tokenCode']); + } + + /** + * Add third party data and its child tag to xml + * + * @param element $order + * @return string + */ + protected function _addThirdPartyData($order) + { + $thirdparty = $order->addChild('thirdPartyData'); + if (!empty($this->thirdparty['instalment'])) { + $thirdparty->addChild('instalments', $this->thirdparty['instalment']); + } + if ($this->billingAddress['countryCode']=='BR' && !empty($this->shippingfee['shippingfee'])) { + $firstinstalment = $thirdparty->addChild('firstInstalment'); + $firstinstalment = $firstinstalment->addChild('amountNoCurrency'); + $firstinstalment['value'] =$this->_amountAsInt($this->shippingfee['shippingfee']); + } + if (!empty($this->thirdparty['cpf'])) { + $thirdparty->addChild('cpf', $this->thirdparty['cpf']); + } + return $thirdparty; + } + + /** + * Add fraud sight data and its child tag to xml + * + * @param element $order + * @return string + */ + private function _addFraudSightData($order) + { + $fraudsightData = $order->addChild('FraudSightData'); + $shopperFields = $fraudsightData->addChild('shopperFields'); + $shopperFields->addChild('shopperName', $this->cusDetails['shopperName']); + if (isset($this->cusDetails['shopperId'])) { + $shopperFields->addChild('shopperId', $this->cusDetails['shopperId']); + } + if (isset($this->cusDetails['birthDate'])) { + $shopperDOB = $shopperFields->addChild('birthDate'); + $dateElement= $shopperDOB->addChild('date'); + $dateElement['dayOfMonth'] = date("d", strtotime($this->cusDetails['birthDate'])); + $dateElement['month'] = date("m", strtotime($this->cusDetails['birthDate'])); + $dateElement['year'] = date("Y", strtotime($this->cusDetails['birthDate'])); + } + $shopperAddress = $shopperFields->addChild('shopperAddress'); + $this->_addAddressElement( + $shopperAddress, + $this->billingAddress['firstName'], + $this->billingAddress['lastName'], + $this->billingAddress['street'], + $this->billingAddress['postalCode'], + $this->billingAddress['city'], + $this->billingAddress['countryCode'] + ); + } + + /** + * Add branchSpecificExtension and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addBranchSpecificExtension($order) + { + $order_details = $this->cusDetails['order_details']; + $branchSpecificExtension = $order->addChild('branchSpecificExtension'); + $purchase = $branchSpecificExtension->addChild('purchase'); + if (!empty($order_details['customer_id'])) { + $purchase->addChild('customerReference', $order_details['customer_id']); + } else { + $purchase->addChild('customerReference', 'guest'); + } + $purchase->addChild('cardAcceptorTaxId', $this->paymentDetails['cardAcceptorTaxId']); + + $salesTax = $purchase->addChild('salesTax'); + $salesTaxElement = $salesTax->addChild('amount'); + $this->_addAmountElement( + $salesTaxElement, + $this->currencyCode, + $this->exponent, + $this->paymentDetails['salesTax'] + ); + + if (isset($this->cusDetails['discount_amount'])) { + $discountAmount = $purchase->addChild('discountAmount'); + $discountAmountElement = $discountAmount->addChild('amount'); + $this->_addAmountElement( + $discountAmountElement, + $this->currencyCode, + $this->exponent, + $this->cusDetails['discount_amount'] + ); + } + if (isset($this->cusDetails['shipping_amount'])) { + $shippingAmount = $purchase->addChild('shippingAmount'); + $shippingAmountElement = $shippingAmount->addChild('amount'); + $this->_addAmountElement( + $shippingAmountElement, + $this->currencyCode, + $this->exponent, + $this->cusDetails['shipping_amount'] + ); + } + + if (isset($this->paymentDetails['dutyAmount'])) { + $dutyAmount = $purchase->addChild('dutyAmount'); + $dutyAmountElement = $dutyAmount->addChild('amount'); + $this->_addAmountElement( + $dutyAmountElement, + $this->currencyCode, + $this->exponent, + $this->paymentDetails['dutyAmount'] + ); + } + + //$purchase->addChild('shipFromPostalCode', ''); + $purchase->addChild('destinationPostalCode', $this->shippingAddress['postalCode']); + $purchase->addChild('destinationCountryCode', $this->shippingAddress['countryCode']); + + $orderDate = $purchase->addChild('orderDate'); + $dateElement = $orderDate->addChild('date'); + $today = new \DateTime(); + $dateElement['dayOfMonth'] = $today->format('d'); + $dateElement['month'] = $today->format('m'); + $dateElement['year'] = $today->format('Y'); + + $purchase->addChild('taxExempt', $this->paymentDetails['salesTax'] > 0 ? 'false' : 'true'); + + $this->_addL23OrderLineItemElement($order, $purchase); + } + + /** + * Add all order line item element values to xml + * + * @param Order $order + * @param mixed $purchase + */ + private function _addL23OrderLineItemElement($order, $purchase) + { + + $orderLineItems = $this->orderLineItems; + + foreach ($orderLineItems['lineItem'] as $lineitem) { + $this->_addLineItemElement( + $purchase, + $lineitem['description'], + $lineitem['productCode'], + $lineitem['commodityCode'], + $lineitem['quantity'], + $lineitem['unitCost'], + $lineitem['unitOfMeasure'], + $lineitem['itemTotal'], + $lineitem['itemTotalWithTax'], + $lineitem['itemDiscountAmount'], + $lineitem['taxAmount'] + ); + } + } + + /** + * Add order line item element values to xml + * + * @param SimpleXMLElement $parentElement + * @param string $description + * @param string $productCode + * @param string $commodityCode + * @param string $quantity + * @param float $unitCost + * @param string $unitOfMeasure + * @param float $itemTotal + * @param float $itemTotalWithTax + * @param float $itemDiscountAmount + * @param float $taxAmount + */ + private function _addLineItemElement( + $parentElement, + $description, + $productCode, + $commodityCode, + $quantity, + $unitCost, + $unitOfMeasure, + $itemTotal, + $itemTotalWithTax, + $itemDiscountAmount, + $taxAmount + ) { + $item = $parentElement->addChild('item'); + + $descriptionElement = $item->addChild('description'); + $this->_addCDATA($descriptionElement, $description); + + $productCodeElement = $item->addChild('productCode'); + $this->_addCDATA($productCodeElement, $productCode); + + if ($commodityCode) { + $commodityCodeElement = $item->addChild('commodityCode'); + $this->_addCDATA($commodityCodeElement, $commodityCode); + } + $quantityElement = $item->addChild('quantity'); + $this->_addCDATA($quantityElement, $quantity); + + $unitCostElement = $item->addChild('unitCost'); + $unitCostAmount = $unitCostElement->addChild('amount'); + $this->_addAmountElement($unitCostAmount, $this->currencyCode, $this->exponent, $unitCost); + + if ($unitOfMeasure) { + $unitOfMeasureElement = $item->addChild('unitOfMeasure'); + $this->_addCDATA($unitOfMeasureElement, $unitOfMeasure); + } + + $itemTotalElement = $item->addChild('itemTotal'); + $itemTotalElementAmount = $itemTotalElement->addChild('amount'); + $this->_addAmountElement($itemTotalElementAmount, $this->currencyCode, $this->exponent, $itemTotal); + + $itemTotalWithTaxElement = $item->addChild('itemTotalWithTax'); + $itemTotalWithTaxElementAmount = $itemTotalWithTaxElement->addChild('amount'); + $this->_addAmountElement( + $itemTotalWithTaxElementAmount, + $this->currencyCode, + $this->exponent, + $itemTotalWithTax + ); + + $itemDiscountAmountElement = $item->addChild('itemDiscountAmount'); + $itemDiscountElementAmount = $itemDiscountAmountElement->addChild('amount'); + $this->_addAmountElement($itemDiscountElementAmount, $this->currencyCode, $this->exponent, $itemDiscountAmount); + + $taxAmountElement = $item->addChild('taxAmount'); + $taxAmountElementAmount = $taxAmountElement->addChild('amount'); + $this->_addAmountElement($taxAmountElementAmount, $this->currencyCode, $this->exponent, $taxAmount); + } + /** + * Add order line items to XML + * + * @param SimpleXMLElement $order + */ + private function addOrderLineItemsXML($order) + { + $diffAmt = 0; + $totalAmount = 0; + + $orderLinesElement = $order->addChild('orderLines'); + + $orderlineitems = $this->orderLineItems; + + $orderTaxAmountElement = $orderLinesElement->addChild('orderTaxAmount'); + $this->_addCDATA($orderTaxAmountElement, $this->_amountAsInt($orderlineitems['orderTaxAmount'])); + + $termsURLElement = $orderLinesElement->addChild('termsURL'); + $this->_addCDATA($termsURLElement, $orderlineitems['termsURL']); + + foreach ($orderlineitems['lineItem'] as $lineitem) { + + $totaldiscountamount = (isset($lineitem['totalDiscountAmount'])) ? $lineitem['totalDiscountAmount'] : 0; + if ($lineitem['productType'] === 'bundle' && $diffAmt > 0) { + $totaldiscountamount = $diffAmt; + $totalAmount = $lineitem['totalAmount'] - $diffAmt; + } else { + $totalAmount = 0; + } + + $this->_addOrderLineItemElement( + $orderLinesElement, + $lineitem['reference'], + $lineitem['name'], + $lineitem['productType'], + $lineitem['quantity'], + $lineitem['quantityUnit'], + $lineitem['unitPrice'], + $lineitem['taxRate'], + ($totalAmount > 0 ? $totalAmount : $lineitem['totalAmount']), + $lineitem['totalTaxAmount'], + $totaldiscountamount + ); + } + } + + /** + * Add order line item element values to xml + * + * @param SimpleXMLElement $parentElement + * @param string $reference + * @param string $name + * @param string $productType + * @param string $quantity + * @param string $quantityUnit + * @param string $unitPrice + * @param float $taxRate + * @param float $totalAmount + * @param float $totalTaxAmount + * @param float $totalDiscountAmount + */ + private function _addOrderLineItemElement( + $parentElement, + $reference, + $name, + $productType, + $quantity, + $quantityUnit, + $unitPrice, + $taxRate, + $totalAmount, + $totalTaxAmount, + $totalDiscountAmount = 0 + ) { + $unitPrice = sprintf('%0.2f', $unitPrice); + + $lineitem = $parentElement->addChild('lineItem'); + + if ($productType === 'shipping') { + $lineitem->addChild('shippingFee'); + } elseif ($productType === 'downloadable' || $productType === 'virtual' || $productType === 'giftcard') { + $lineitem->addChild('digital'); + } elseif ($productType === 'Store Credit') { + $lineitem->addChild('storeCredit'); + } elseif ($productType === 'Gift Card') { + $lineitem->addChild('giftCard'); + } else { + $lineitem->addChild('physical'); + } + $referenceElement = $lineitem->addChild('reference'); + $this->_addCDATA($referenceElement, $reference); + + $nameElement = $lineitem->addChild('name'); + $this->_addCDATA($nameElement, $name); + + $quantityElement = $lineitem->addChild('quantity'); + $this->_addCDATA($quantityElement, $quantity); + + $quantityUnitElement = $lineitem->addChild('quantityUnit'); + $this->_addCDATA($quantityUnitElement, $quantityUnit); + + $unitPriceElement = $lineitem->addChild('unitPrice'); + $this->_addCDATA($unitPriceElement, $this->_amountAsInt($unitPrice)); + + $taxRateElement = $lineitem->addChild('taxRate'); + $this->_addCDATA($taxRateElement, $this->_amountAsInt($taxRate)); + + $totalAmountElement = $lineitem->addChild('totalAmount'); + $this->_addCDATA($totalAmountElement, $this->_amountAsInt($totalAmount)); + + $totalTaxAmountElement = $lineitem->addChild('totalTaxAmount'); + $this->_addCDATA($totalTaxAmountElement, $this->_amountAsInt($totalTaxAmount)); + + if ($totalDiscountAmount > 0) { + $totalDiscountAmountElement = $lineitem->addChild('totalDiscountAmount'); + $this->_addCDATA($totalDiscountAmountElement, $this->_amountAsInt($totalDiscountAmount)); + } + } +} diff --git a/Model/XmlBuilder/Refund.php b/Model/XmlBuilder/Refund.php index d329e8c..e7599b3 100644 --- a/Model/XmlBuilder/Refund.php +++ b/Model/XmlBuilder/Refund.php @@ -39,7 +39,22 @@ class Refund * @var mixed */ private $exponent; + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + /** + * Refund constructor + * + * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + */ + public function __construct( + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + ) { + $this->scopeConfig = $scopeConfig; + } + /** * Build xml for processing Request * @@ -122,11 +137,9 @@ private function _addRefundElement($orderModification, $order, $paymentType) $amountElement['value'] = $this->_amountAsInt($this->amount); $amountElement['currencyCode'] = $this->currencyCode; $amountElement['exponent'] = $this->exponent; - - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES; - $level23DataEnabled = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $level23DataEnabled = $this->scopeConfig ->getValue('worldpay/level23_config/level23', $storeScope); //Level23 data changes @@ -167,13 +180,12 @@ private function _addBranchSpecificExtension($order, $refund) $purchase->addChild('customerReference', $order->getCustomerId()); } - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES; - $cardAcceptorTaxId = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $cardAcceptorTaxId = $this->scopeConfig ->getValue('worldpay/level23_config/CardAcceptorTaxId', $storeScope); - $dutyAmount = $objectManager->get(\Magento\Framework\App\Config\ScopeConfigInterface::class) + $dutyAmount = $this->scopeConfig ->getValue('worldpay/level23_config/duty_amount', $storeScope); $purchase->addChild('cardAcceptorTaxId', $cardAcceptorTaxId); diff --git a/Model/XmlBuilder/SEPAOrder.php b/Model/XmlBuilder/SEPAOrder.php new file mode 100644 index 0000000..3e9eb67 --- /dev/null +++ b/Model/XmlBuilder/SEPAOrder.php @@ -0,0 +1,315 @@ + +EOD; + + /** + * @var string + */ + private $merchantCode; + /** + * @var string + */ + private $orderCode; + /** + * @var string + */ + private $orderDescription; + /** + * @var string + */ + private $currencyCode; + /** + * @var float + */ + private $amount; + /** + * @var array + */ + private $paymentDetails; + /** + * @var string + */ + private $shopperEmail; + /** + * @var string + */ + private $acceptHeader; + /** + * @var string + */ + private $userAgentHeader; + /** + * @var array + */ + private $shippingAddress; + /** + * @var array + */ + private $billingAddress; + /** + * @var string + */ + private $shopperId; + /** + * @var array|string + */ + private $statementNarrative; + /** + * @var array|string + */ + private $exponent; + /** + * @var string $captureDelay + */ + private $captureDelay; + + /** + * Build xml for processing Request + * + * @param string $merchantCode + * @param string $orderCode + * @param string $orderDescription + * @param string $currencyCode + * @param float $amount + * @param array $paymentDetails + * @param string $shopperEmail + * @param string $acceptHeader + * @param string $userAgentHeader + * @param string $shippingAddress + * @param float $billingAddress + * @param string $shopperId + * @param string $statementNarrative + * @param string $exponent + * @param string $captureDelay + */ + public function build( + $merchantCode, + $orderCode, + $orderDescription, + $currencyCode, + $amount, + $paymentDetails, + $shopperEmail, + $acceptHeader, + $userAgentHeader, + $shippingAddress, + $billingAddress, + $shopperId, + $statementNarrative, + $exponent, + $captureDelay + ) { + + $this->merchantCode = $merchantCode; + $this->orderCode = $orderCode; + $this->orderDescription = $orderDescription; + $this->currencyCode = $currencyCode; + $this->amount = $amount; + $this->paymentDetails = $paymentDetails; + $this->shopperEmail = $shopperEmail; + $this->acceptHeader = $acceptHeader; + $this->userAgentHeader = $userAgentHeader; + $this->shippingAddress = $shippingAddress; + $this->billingAddress = $billingAddress; + $this->shopperId = $shopperId; + $this->statementNarrative = $statementNarrative; + $this->exponent = $exponent; + $this->captureDelay = $captureDelay; + + $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); + $xml['merchantCode'] = $this->merchantCode; + $xml['version'] = '1.4'; + + $submit = $this->_addSubmitElement($xml); + $this->_addOrderElement($submit); + + return $xml; + } + + /** + * Add submit tag to xml + * + * @param SimpleXMLElement $xml + * @return SimpleXMLElement + */ + private function _addSubmitElement($xml) + { + return $xml->addChild('submit'); + } + + /** + * Add order and its child tag to xml + * + * @param SimpleXMLElement $submit + * @return SimpleXMLElement $order + */ + private function _addOrderElement($submit) + { + $order = $submit->addChild('order'); + $order['orderCode'] = $this->orderCode; + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } + $this->_addDescriptionElement($order); + $this->_addAmountElement($order); + $this->_addPaymentDetailsElement($order); + $this->_addShopperElement($order); + $this->_addBillingElement($order); + $this->_addMandateElement($order); + + return $order; + } + + /** + * Add description tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addDescriptionElement($order) + { + $description = $order->addChild('description'); + $this->_addCDATA($description, $this->orderDescription); + } + + /** + * Add amount and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addAmountElement($order) + { + $amountElement = $order->addChild('amount'); + $amountElement['currencyCode'] = $this->currencyCode; + $amountElement['exponent'] = $this->exponent; + $amountElement['value'] = $this->_amountAsInt($this->amount); + } + + /** + * Add paymentDetails and its child tag to xml + * + * @param SimpleXMLElement $order + */ + protected function _addPaymentDetailsElement($order) + { + $paymentDetailsElement = $order->addChild('paymentDetails'); + $sepaElement = $paymentDetailsElement->addChild('SEPA_DIRECT_DEBIT-SSL'); + $sepaElement = $sepaElement->addChild('bankAccount-SEPA'); + $sepaElement->addChild('iban', $this->paymentDetails['sepaIban']); + $sepaElement->addChild('accountHolderName', $this->paymentDetails['sepaAccountHolderName']); + return $paymentDetailsElement; + } + + /** + * Add shopper and its child tag to xml + * + * @param SimpleXMLElement $order + */ + protected function _addShopperElement($order) + { + $shopper = $order->addChild(self::TOKEN_SCOPE); + $shopper->addChild('shopperEmailAddress', $this->shopperEmail); + return $shopper; + } + + /** + * Add billing and its child tag to xml + * + * @param SimpleXMLElement $order + */ + private function _addBillingElement($order) + { + + $billingAddress = $order->addChild('billingAddress'); + $address = $billingAddress->addChild('address'); + + $firstNameElement = $address->addChild('firstName'); + $this->_addCDATA($firstNameElement, $this->billingAddress['firstName']); + + $lastNameElement = $address->addChild('lastName'); + $this->_addCDATA($lastNameElement, $this->billingAddress['lastName']); + + $streetElement = $address->addChild('address1'); + $this->_addCDATA($streetElement, $this->billingAddress['street']); + + $postalCodeElement = $address->addChild('postalCode'); + $postalCode = $this->billingAddress['postalCode']; + //Zip code mandatory for worldpay, if not provided by customer we will pass manually + $zipCode = '00000'; + //If Zip code provided by customer + if ($postalCode) { + $zipCode = $postalCode; + } + $this->_addCDATA($postalCodeElement, $zipCode); + + $cityElement = $address->addChild('city'); + $this->_addCDATA($cityElement, $this->billingAddress['city']); + + if (isset($this->billingAddress['state'])) { + $stateElement = $address->addChild('state'); + $this->_addCDATA($stateElement, $this->billingAddress['state']); + } + + $countryCodeElement = $address->addChild('countryCode'); + $this->_addCDATA($countryCodeElement, $this->billingAddress['countryCode']); + + if (isset($this->billingAddress['telephone'])) { + $telephoneElement = $address->addChild('telephoneNumber'); + $this->_addCDATA($telephoneElement, $this->billingAddress['telephone']); + } + + return $address; + } + + /** + * Add mandate and its child tag to xml + * + * @param SimpleXMLElement $order + */ + protected function _addMandateElement($order) + { + $time = strtotime("now"); + $merchantNumber = $this->paymentDetails['sepaMerchantNumber']; + $mandateId = "M-".$merchantNumber."-".$time; + $mandateElement = $order->addChild('mandate'); + $mandateElement->addChild('mandateType', $this->paymentDetails['sepaMandateType']); + $mandateElement->addChild('mandateId', $mandateId); + return $mandateElement; + } + + /** + * Add cdata to xml + * + * @param SimpleXMLElement $element + * @param string $content + */ + protected function _addCDATA($element, $content) + { + $node = dom_import_simplexml($element); + $no = $node->ownerDocument; + $node->appendChild($no->createCDATASection($content)); + } + + /** + * Returns the rounded value of num to specified precision + * + * @param float $amount + * @return int + */ + private function _amountAsInt($amount) + { + return round($amount, $this->exponent, PHP_ROUND_HALF_EVEN) * pow(10, $this->exponent); + } +} diff --git a/Model/XmlBuilder/SamsungPayOrder.php b/Model/XmlBuilder/SamsungPayOrder.php index b442046..9026e77 100644 --- a/Model/XmlBuilder/SamsungPayOrder.php +++ b/Model/XmlBuilder/SamsungPayOrder.php @@ -44,6 +44,19 @@ class SamsungPayOrder * @var mixed */ private $exponent; + /** + * @var string $captureDelay + */ + private $captureDelay; + + /** + * @var string + */ + private $shopperEmail; + /** + * @var array + */ + private $data; /** * Build xml for processing Request @@ -57,6 +70,7 @@ class SamsungPayOrder * @param string $shopperEmail * @param array $data * @param mixed $exponent + * @param string $captureDelay * @return SimpleXMLElement $xml */ public function build( @@ -68,7 +82,8 @@ public function build( $paymentType, $shopperEmail, $data, - $exponent + $exponent, + $captureDelay ) { $this->merchantCode = $merchantCode; $this->orderCode = $orderCode; @@ -79,6 +94,7 @@ public function build( $this->shopperEmail = $shopperEmail; $this->data = $data; $this->exponent = $exponent; + $this->captureDelay = $captureDelay; $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); $xml['merchantCode'] = $this->merchantCode; $xml['version'] = '1.4'; @@ -110,6 +126,9 @@ private function _addOrderElement($submit) $order = $submit->addChild('order'); $order['orderCode'] = $this->orderCode; $order['shopperLanguageCode'] = "en"; + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $this->_addDescriptionElement($order); $this->_addAmountElement($order); diff --git a/Model/XmlBuilder/TokenDelete.php b/Model/XmlBuilder/TokenDelete.php index a031c32..5498fa3 100644 --- a/Model/XmlBuilder/TokenDelete.php +++ b/Model/XmlBuilder/TokenDelete.php @@ -19,12 +19,12 @@ class TokenDelete EOD; /** - * @var Mage_Customer_Model_Customer + * @var \Magento\Customer\Model\Customer */ private $customer; /** - * @var Sapient_WorldPay_Model_Token + * @var \Sapient\WorldPay\Model\Token */ private $tokenModel; diff --git a/Model/XmlBuilder/TokenInquiry.php b/Model/XmlBuilder/TokenInquiry.php index d696451..2865c4d 100644 --- a/Model/XmlBuilder/TokenInquiry.php +++ b/Model/XmlBuilder/TokenInquiry.php @@ -19,12 +19,12 @@ class TokenInquiry EOD; /** - * @var Mage_Customer_Model_Customer + * @var \Magento\Customer\Model\Customer */ private $customer; /** - * @var Sapient_WorldPay_Model_Token + * @var \Sapient\WorldPay\Model\Token */ private $tokenModel; diff --git a/Model/XmlBuilder/TokenUpdate.php b/Model/XmlBuilder/TokenUpdate.php index 3e3ac5a..3da7352 100644 --- a/Model/XmlBuilder/TokenUpdate.php +++ b/Model/XmlBuilder/TokenUpdate.php @@ -19,12 +19,12 @@ class TokenUpdate EOD; /** - * @var Mage_Customer_Model_Customer + * @var \Magento\Customer\Model\Customer */ private $customer; /** - * @var Sapient_WorldPay_Model_Token + * @var \Sapient\WorldPay\Model\Token */ private $tokenModel; diff --git a/Model/XmlBuilder/VoidSale.php b/Model/XmlBuilder/VoidSale.php index 0a86df1..dd97dc3 100644 --- a/Model/XmlBuilder/VoidSale.php +++ b/Model/XmlBuilder/VoidSale.php @@ -44,7 +44,7 @@ class VoidSale * @param float $amount * @param float $exponent * @param string|null $paymentType - * @return SimpleXMLElement $xml + * @return \SimpleXMLElement $xml */ public function build($merchantCode, $orderCode, $currencyCode, $amount, $exponent, $paymentType = null) { diff --git a/Model/XmlBuilder/WalletOrder.php b/Model/XmlBuilder/WalletOrder.php index 8fbb1d5..8279400 100644 --- a/Model/XmlBuilder/WalletOrder.php +++ b/Model/XmlBuilder/WalletOrder.php @@ -57,13 +57,18 @@ class WalletOrder */ private $sessionId; /** - * @var Sapient\Worldpay\Model\XmlBuilder\Config\ThreeDSecure + * @var \Sapient\Worldpay\Model\XmlBuilder\Config\ThreeDSecure */ protected $threeDSecureConfig; /** * @var string */ private $cusDetails; + + /** + * @var string + */ + private $shopperEmail; /** * @var string */ @@ -84,7 +89,30 @@ class WalletOrder * @var string */ protected $userAgentHeader; - + /** + * @var string $captureDelay + */ + protected $captureDelay; + + /** + * @var string + */ + protected $protocolVersion; + + /** + * @var string + */ + protected $signature; + + /** + * @var string + */ + protected $signedMessage; + + /** + * @var array + */ + protected $billingAddress; /** * Constructor * @@ -119,7 +147,8 @@ public function __construct(array $args = []) * @param string $shopperIpAddress * @param array $paymentDetails * @param float $exponent - * @return SimpleXMLElement $xml + * @param string $captureDelay + * @return \SimpleXMLElement $xml */ public function build( $merchantCode, @@ -139,7 +168,8 @@ public function build( $cusDetails, $shopperIpAddress, $paymentDetails, - $exponent + $exponent, + $captureDelay ) { $this->merchantCode = $merchantCode; $this->orderCode = $orderCode; @@ -159,6 +189,7 @@ public function build( $this->shopperIpAddress = $shopperIpAddress; $this->paymentDetails = $paymentDetails; $this->exponent = $exponent; + $this->captureDelay = $captureDelay; $xml = new \SimpleXMLElement(self::ROOT_ELEMENT); $xml['merchantCode'] = $this->merchantCode; $xml['version'] = '1.4'; @@ -258,6 +289,9 @@ private function _addOrderElement($submit) $session['id'] = $this->paymentDetails['sessionId']; return $order; } + if ($this->captureDelay!="") { + $order['captureDelay'] = $this->captureDelay; + } $order['shopperLanguageCode'] = "en"; $this->_addDescriptionElement($order); $this->_addAmountElement($order); diff --git a/Observer/AddtoCartBefore.php b/Observer/AddtoCartBefore.php index 75eb18c..9436e2a 100644 --- a/Observer/AddtoCartBefore.php +++ b/Observer/AddtoCartBefore.php @@ -12,11 +12,49 @@ class AddtoCartBefore implements ObserverInterface { - /** - * @var \Sapient\Worldpay\Helper\Recurring - */ + /** + * @var \Sapient\Worldpay\Logger\WorldpayLogger + */ private $wplogger; + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + private $quoteRepository; + /** + * @var \Magento\Customer\Model\Session + */ + private $customerSession; + + /** + * @var \Magento\Checkout\Model\Cart + */ + private $customerCart; + + /** + * @var \Sapient\Worldpay\Helper\Data + */ + private $wpHelper; + + /** + * @var \Magento\Quote\Model\QuoteManagement + */ + private $quoteManagement; + + /** + * @var \Magento\Customer\Api\CustomerRepositoryInterface + */ + private $customerRepository; + + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + private $storeManager; + + /** + * @var \Magento\Checkout\Model\Session + */ + private $checkoutSession; /** * Constructor function * diff --git a/Observer/AfterPlaceOrder.php b/Observer/AfterPlaceOrder.php index 1e78b40..1f69fc4 100644 --- a/Observer/AfterPlaceOrder.php +++ b/Observer/AfterPlaceOrder.php @@ -11,11 +11,36 @@ class AfterPlaceOrder implements ObserverInterface { - /** - * @var \Sapient\Worldpay\Helper\Recurring - */ + /** + * @var \Sapient\Worldpay\Helper\Recurring + */ private $wplogger; + /** + * @var \Magento\Quote\Api\CartRepositoryInterface + */ + private $quoteRepository; + + /** + * @var \Magento\Checkout\Model\Session + */ + private $checkoutSession; + + /** + * @var \Magento\Customer\Model\Session + */ + private $customerSession; + + /** + * @var \Magento\Framework\Controller\ResultFactory + */ + private $responseFactory; + + /** + * @var \Magento\Customer\CustomerData\SectionPoolInterface + */ + private $sectionPoolInterface; + /** * Constructor function * diff --git a/Observer/CheckoutCartUpdateItemsAfterObserver.php b/Observer/CheckoutCartUpdateItemsAfterObserver.php index aff468d..8a968c8 100644 --- a/Observer/CheckoutCartUpdateItemsAfterObserver.php +++ b/Observer/CheckoutCartUpdateItemsAfterObserver.php @@ -36,10 +36,13 @@ public function execute(\Magento\Framework\Event\Observer $observer) $info = $observer->getEvent()->getInfo(); foreach ($info->getData() as $itemId => $itemInfo) { - $item = $quote->getItemById($itemId); - if ($this->recurringHelper->getSelectedPlan($item->getProduct())) { - $item->setQty(1); + if (!empty($itemInfo)) { + $item = $quote->getItemById($itemId); + if ($this->recurringHelper->getSelectedPlan($item->getProduct())) { + $item->setQty(1); + } } + } } } diff --git a/Observer/MultishippingLayoutLoadBefore.php b/Observer/MultishippingLayoutLoadBefore.php new file mode 100644 index 0000000..3f22eec --- /dev/null +++ b/Observer/MultishippingLayoutLoadBefore.php @@ -0,0 +1,53 @@ +helper = $helper; + $this->wplogger = $wplogger; + } + + /** + * Change multishipping checkout layout based on configuration + * + * @param \Magento\Framework\Event\Observer $observer + */ + public function execute(Observer $observer) + { + $layout = $observer->getEvent()->getLayout(); + $controllerAction = $observer->getEvent()->getFullActionName(); + if ($controllerAction == 'multishipping_checkout_billing') { + if ($this->helper->isWorldPayEnable() && $this->helper->isMultishippingEnabled()) { + $layout->getUpdate()->addHandle("wp_multishipping_checkout_billing"); + } else { + $layout->getUpdate()->addHandle("multishipping_checkout_billing"); + } + } + } +} diff --git a/Observer/SalesServiceQuoteSubmitBeforeObserver.php b/Observer/SalesServiceQuoteSubmitBeforeObserver.php index 5b72261..e523471 100644 --- a/Observer/SalesServiceQuoteSubmitBeforeObserver.php +++ b/Observer/SalesServiceQuoteSubmitBeforeObserver.php @@ -24,7 +24,10 @@ class SalesServiceQuoteSubmitBeforeObserver implements ObserverInterface * @var \Sapient\Worldpay\Model\Recurring\Order\Address\ToSubscriptionAddress */ private $orderAddressToSubscriptionAddress; - + /** + * @var \Magento\Framework\DataObject\Copy + */ + private $objectCopyService; /** * @param \Sapient\Worldpay\Helper\Recurring $recurringHelper * @param \Sapient\Worldpay\Model\Recurring\Order\Item\ToSubscription $orderItemToSubscription diff --git a/Plugin/Checkout/Block/Onepage.php b/Plugin/Checkout/Block/Onepage.php index 274ca2c..0c4aa67 100644 --- a/Plugin/Checkout/Block/Onepage.php +++ b/Plugin/Checkout/Block/Onepage.php @@ -20,7 +20,7 @@ class Onepage */ private $checkoutSession; /** - * @var Magento\Framework\Serialize\Serializer\Json + * @var \Magento\Framework\Serialize\Serializer\Json */ protected $serializer; diff --git a/Plugin/Checkout/CustomerData/Cart.php b/Plugin/Checkout/CustomerData/Cart.php index 872c7b6..e9e4ebd 100644 --- a/Plugin/Checkout/CustomerData/Cart.php +++ b/Plugin/Checkout/CustomerData/Cart.php @@ -35,7 +35,12 @@ class Cart protected $wplogger; /** - * @var quoteIdToMaskedQuoteId + * @var \Sapient\Worldpay\Helper\Data + */ + protected $wpHelper; + + /** + * @var QuoteIdToMaskedQuoteIdInterface */ protected $quoteIdToMaskedQuoteId; diff --git a/Plugin/Checkout/CustomerData/Customer.php b/Plugin/Checkout/CustomerData/Customer.php index c25be98..57eb6bb 100644 --- a/Plugin/Checkout/CustomerData/Customer.php +++ b/Plugin/Checkout/CustomerData/Customer.php @@ -17,15 +17,30 @@ class Customer { /** - * @var wplogger + * @var \Sapient\Worldpay\Logger\WorldpayLogger */ protected $wplogger; /** - * @var currentCustomer + * @var \Sapient\Worldpay\Helper\Data */ + protected $wpHelper; + + /** + * @var CurrentCustomer + */ protected $currentCustomer; + /** + * @var CustomerAddressDataProvider + */ + protected $customerAddressData; + + /** + * @var CustomerRepository + */ + protected $customerRepository; + /** * Constructor Function * diff --git a/Plugin/GuestPaymentInformationManagement.php b/Plugin/GuestPaymentInformationManagement.php index b187130..0084835 100644 --- a/Plugin/GuestPaymentInformationManagement.php +++ b/Plugin/GuestPaymentInformationManagement.php @@ -24,7 +24,7 @@ class GuestPaymentInformationManagement */ private $cartManagement; /** - * @var LoggerInterface + * @var WorldpayLogger */ private $logger; /** @@ -39,7 +39,7 @@ class GuestPaymentInformationManagement /** * GuestPaymentInformationManagement constructor. * @param GuestCartManagementInterface $cartManagement - * @param LoggerInterface $logger + * @param WorldpayLogger $logger * @param MethodList $methodList * @param bool $checkMethods */ diff --git a/Plugin/PaymentInformationManagement.php b/Plugin/PaymentInformationManagement.php index ff70d0a..6d33127 100644 --- a/Plugin/PaymentInformationManagement.php +++ b/Plugin/PaymentInformationManagement.php @@ -22,7 +22,7 @@ class PaymentInformationManagement */ private $cartManagement; /** - * @var LoggerInterface + * @var WorldpayLogger */ private $logger; /** @@ -37,7 +37,7 @@ class PaymentInformationManagement /** * PaymentInformationManagement constructor. * @param CartManagementInterface $cartManagement - * @param LoggerInterface $logger + * @param WorldpayLogger $logger * @param MethodList $methodList * @param bool $checkMethods */ diff --git a/Plugin/PluginBefore.php b/Plugin/PluginBefore.php index c7f7b16..f4f4d38 100644 --- a/Plugin/PluginBefore.php +++ b/Plugin/PluginBefore.php @@ -15,6 +15,43 @@ */ class PluginBefore { + /** + * @var \Magento\Framework\UrlInterface + */ + public $_urlBuilder; + /** + * @var \Magento\Sales\Model\Order + */ + public $order; + /** + * @var \Magento\Framework\App\RequestInterface + */ + public $request; + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + public $worldpaypaymentmodel; + /** + * @var \Magento\Framework\Stdlib\DateTime\DateTime + */ + public $objDate; + /** + * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface + */ + public $timeobj; + /** + * @var \Sapient\Worldpay\Model\Worldpayment + */ + public $worldpaymodel; + /** + * @var \Sapient\Worldpay\Helper\Data + */ + public $worldpayHelper; + + /** + * @var object + */ + public $_request; /** * PluginBefore constructor @@ -22,17 +59,29 @@ class PluginBefore * @param \Magento\Framework\UrlInterface $urlBuilder * @param \Magento\Sales\Model\Order $order * @param RequestInterface $request + * @param \Sapient\Worldpay\Model\Worldpayment $worldpaypaymentmodel + * @param \Magento\Framework\Stdlib\DateTime\DateTime $objDate + * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timeobj + * @param \Sapient\Worldpay\Model\Worldpayment $worldpaymodel * @param Data $worldpayHelper */ public function __construct( \Magento\Framework\UrlInterface $urlBuilder, \Magento\Sales\Model\Order $order, RequestInterface $request, + \Sapient\Worldpay\Model\Worldpayment $worldpaypaymentmodel, + \Magento\Framework\Stdlib\DateTime\DateTime $objDate, + \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timeobj, + \Sapient\Worldpay\Model\Worldpayment $worldpaymodel, Data $worldpayHelper ) { $this->_urlBuilder = $urlBuilder; $this->order = $order; $this->request = $request; + $this->worldpaypaymentmodel = $worldpaypaymentmodel; + $this->objDate = $objDate; + $this->timeobj = $timeobj; + $this->worldpaymodel = $worldpaymodel; $this->worldpayHelper = $worldpayHelper; } @@ -66,7 +115,7 @@ public function beforePushButtons( ['label' => __('Sync Status'), 'onclick' => 'setLocation("'.$syncurl.'")', 'class' => 'reset'], -1 ); - } + //Cancel button function to send order-modification request to Cancel Order. $cancelurl = $this->_urlBuilder->getUrl( @@ -94,10 +143,13 @@ public function beforePushButtons( -1 ); } - if ($paymenttype === 'ACH_DIRECT_DEBIT-SSL' || $this->isPrimeRoutingRequest($data['increment_id'])) { + if ($paymenttype === 'ACH_DIRECT_DEBIT-SSL' || + $paymenttype === 'SEPA_DIRECT_DEBIT-SSL' || + $this->isPrimeRoutingRequest($data['increment_id'])) { $buttonList->remove('void_payment'); $this->removeShipmentButton($order, $buttonList); } + } } return [$context, $buttonList]; @@ -111,13 +163,10 @@ public function beforePushButtons( */ public function getOrderDateDetails($order) { - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $orderdate=$order->getCreatedAt(); - $objDate = $objectManager->create(\Magento\Framework\Stdlib\DateTime\DateTime::class); - $currentdate = $objDate->Date(); - $timeobj= $objectManager->create(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class); - $formattedCurrentDate=$timeobj->formatDate($currentdate, \IntlDateFormatter::SHORT); - $formattedOrderDate=$timeobj->formatDate($orderdate, \IntlDateFormatter::SHORT); + $currentdate = $this->objDate->Date(); + $formattedCurrentDate=$this->timeobj->formatDate($currentdate, \IntlDateFormatter::SHORT); + $formattedOrderDate=$this->timeobj->formatDate($orderdate, \IntlDateFormatter::SHORT); if ($formattedCurrentDate===$formattedOrderDate) { return true; @@ -134,9 +183,7 @@ public function getOrderDateDetails($order) */ public function getPaymentType($orderid) { - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $worldpaymodel = $objectManager->create(\Sapient\Worldpay\Model\Worldpayment::class); - $worldpaydata=$worldpaymodel->loadByPaymentId($orderid); + $worldpaydata=$this->worldpaymodel->loadByPaymentId($orderid); return $worldpaydata->getPaymentType(); } @@ -170,9 +217,7 @@ public function checkEligibilityForVoidSale($order) */ public function isPrimeRoutingRequest($orderid) { - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $worldpaymodel = $objectManager->create(\Sapient\Worldpay\Model\Worldpayment::class); - $worldpaydata=$worldpaymodel->loadByPaymentId($orderid); + $worldpaydata=$this->worldpaymodel->loadByPaymentId($orderid); if ($worldpaydata->getIsPrimeroutingEnabled()) { return true; diff --git a/Plugin/SalesOrderGridPlugin.php b/Plugin/SalesOrderGridPlugin.php new file mode 100644 index 0000000..6f17869 --- /dev/null +++ b/Plugin/SalesOrderGridPlugin.php @@ -0,0 +1,33 @@ +isLoaded()) { + $orderIncrementColumnName = 'increment_id'; + $tableName = $subject->getResource()->getTable('worldpay_payment'); + + $subject->getSelect()->joinLeft( + $tableName, + $tableName . '.order_id = main_table.' . $orderIncrementColumnName, + $tableName . '.merchant_id' + ); + } + return [$printQuery, $logQuery]; + } +} diff --git a/README.txt b/README.txt index 0d190db..4283f67 100644 --- a/README.txt +++ b/README.txt @@ -1,5 +1,12 @@ Latest releases for all supported version: +For Magento 2.4.6 + +Worldpay Plugin version: 2.4.6-rc0523 +1. Magento 2.4.6 compatible +2. Pay by link for multishipping orders +2. PHP 8.2 compatibility + For Magento 2.4.5 Worldpay Plugin version: 2.4.5-p10123 diff --git a/Setup/Patch/Data/DefaultConfigurations.php b/Setup/Patch/Data/DefaultConfigurations.php index 083ab48..acf3b78 100644 --- a/Setup/Patch/Data/DefaultConfigurations.php +++ b/Setup/Patch/Data/DefaultConfigurations.php @@ -1742,6 +1742,21 @@ public function addExtraCheckoutLabels() 'wpay_label_code' => 'CO28', 'wpay_label_desc'=> $iframeCheckOutMsg, 'wpay_custom_label'=> "" + ], + [ + 'wpay_label_code' => 'CO29', + 'wpay_label_desc'=> 'Mandate Type', + 'wpay_custom_label'=> '' + ], + [ + 'wpay_label_code' => 'CO30', + 'wpay_label_desc'=> 'IBAN', + 'wpay_custom_label'=> '' + ], + [ + 'wpay_label_code' => 'CO31', + 'wpay_label_desc'=> "Account Holder Name", + 'wpay_custom_label'=> '' ] ]; foreach ($newLabels as $label) { diff --git a/Ui/Component/Listing/Column/FraudisightMessage.php b/Ui/Component/Listing/Column/FraudisightMessage.php index 5192e47..27b54d5 100644 --- a/Ui/Component/Listing/Column/FraudisightMessage.php +++ b/Ui/Component/Listing/Column/FraudisightMessage.php @@ -41,6 +41,12 @@ class FraudisightMessage extends Column * @var OrderRepositoryInterface */ protected $_orderRepository; + + /** + * + * @var Data + */ + protected $helper; /** * FraudisightMessage constructor diff --git a/Ui/Component/Listing/Column/InvoiceStatus.php b/Ui/Component/Listing/Column/InvoiceStatus.php index d2845f1..8f0a1ed 100644 --- a/Ui/Component/Listing/Column/InvoiceStatus.php +++ b/Ui/Component/Listing/Column/InvoiceStatus.php @@ -39,6 +39,12 @@ class InvoiceStatus extends Column * @var OrderRepositoryInterface */ protected $_orderRepository; + + /** + * + * @var Data + */ + protected $helper; /** * Invoice Status constructor diff --git a/Ui/Component/Listing/Column/MerchantId.php b/Ui/Component/Listing/Column/MerchantId.php new file mode 100644 index 0000000..2c37743 --- /dev/null +++ b/Ui/Component/Listing/Column/MerchantId.php @@ -0,0 +1,114 @@ +_worldpaypayment = $_worldpaypayment; + $this->_orderRepository = $orderRepository; + $this->_searchCriteria = $criteria; + $this->helper = $helper; + parent::__construct($context, $uiComponentFactory, $components, $data); + } + + /** + * Prepare Data Source + * + * @param array $dataSource + * @return array + */ + public function prepareDataSource(array $dataSource) + { + if (isset($dataSource['data']['items'])) { + foreach ($dataSource['data']['items'] as & $item) { + $worldpaypayment =$this->_worldpaypayment->loadByPaymentId($item["increment_id"]); + $merchantId = $worldpaypayment->getMerchantId(); + if (empty($merchantId)) { + $merchantId = 'N/A'; + } + $item[$this->getData('name')] = strtoupper($merchantId); + } + } + + return $dataSource; + } + + /** + * Prepare component configuration + * + * @return void + */ + public function prepare() + { + parent::prepare(); + if ($this->helper->isWorldPayEnable()) { + $this->_data['config']['componentDisabled'] = false; + } else { + $this->_data['config']['componentDisabled'] = true; + } + } +} diff --git a/Ui/Component/Listing/Column/MultishippingId.php b/Ui/Component/Listing/Column/MultishippingId.php index 6a8aeec..2125067 100644 --- a/Ui/Component/Listing/Column/MultishippingId.php +++ b/Ui/Component/Listing/Column/MultishippingId.php @@ -39,6 +39,12 @@ class MultishippingId extends Column * @var OrderRepositoryInterface */ protected $_orderRepository; + + /** + * + * @var Data + */ + protected $helper; /** * Mulishipping Id constructor diff --git a/Ui/Component/Listing/Column/WorldpayPaymentStatus.php b/Ui/Component/Listing/Column/WorldpayPaymentStatus.php index 6c51fd1..d8f949c 100644 --- a/Ui/Component/Listing/Column/WorldpayPaymentStatus.php +++ b/Ui/Component/Listing/Column/WorldpayPaymentStatus.php @@ -39,6 +39,12 @@ class WorldpayPaymentStatus extends Column * @var OrderRepositoryInterface */ protected $_orderRepository; + + /** + * + * @var Data + */ + protected $helper; /** * Worldpay Payment Status constructor diff --git a/composer.json b/composer.json index d49026c..af62d28 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,7 @@ "magento/module-quote": ">=100.0.0", "magento/module-vault": ">=100.0.0" }, - "version": "2.4.5-p10123", + "version": "2.4.6-rc0523", "license":"proprietary", "autoload":{ "files":[ diff --git a/docs/Worldpay Plugin For Magento 2 Installation Guide.pdf b/docs/Worldpay Plugin For Magento 2 Installation Guide.pdf index d88b692f210ea5598cdfbd04b41ff18498b728df..641c32394fc251a3ce519284707da41b956a9ae8 100644 GIT binary patch delta 64655 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 delta 88409 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

U`EeVrK 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%0A8k%u( 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 Cuc>MP diff --git a/docs/Worldpay plugin for Magento 2 user guide.pdf b/docs/Worldpay plugin for Magento 2 user guide.pdf index 41a91ba70d7e8f5ade1e4c58b9e3c7f86c612865..b38b61ee203ef12417b7b8e05987119e2454faed 100644 GIT binary patch delta 342782 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%0D$XdVl_Ck-%Zh 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

E}|zm?*Jap$-Uw)Z=O^kR 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

_7~03}@8a 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

lm>VoGg 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%0A-)5-nl2w$kU&Ji6A)dmH%?JXd-7oXI?% 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

;-n)^4dE^{V{CvTNq>quti3Z{Eu5HyA+aP>_g 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 delta 341993 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ⅇ) ztR(H@pnWx;+*w_$W=+dw4lAtds@T+Or3RPLB)Pt1O3nXFA@#0Osb0?d=OS~1>L~gx z&%}$X6mUvx=^qi!HTuAJFc^xIMoSD*vZI2)tXgp3>?^v|K#Fxr4c-{8yR1 z3X1933V|!=xi5qmxwy4YWdaxTvK68&kG%?`O`z%xj_R1SX-^tD;;(Ct;hupOeS5!v z_)n4ik@SUx(KwC$c>uK^e|KPKDQ4X+>Xxsx)7UEgvNjd;?Dh% z91z}ma=qEohyt5wizW^pLiO5_z^+|ygWyUkrCHYF@lr!MAK=$Tor^Jn)E8YuZZs&a zV?uqTqaRN!TvB}twpym-uD8431jKniFWA)c_sWBtA?F3Ot1=2C`Bu+I=pYG$4E z{o3gQy-ia@GJx;bmZ5CWI9{vi?$_2j zh-`;?DXHd;(Fj2`MzT%4$(-{?)__VqHU@6Gw`kp_kBWZcR<>;Tu7X*gtRyvj@Cw%{NGJR z$o6yrO{Z~piyCr+G1A@rAGcJZw7glA4%5*PN0Z+jt9no}yrN8wP>nZ5iCwEB`i`-EE6bNKt_!0;fd`c@0s@nNJ+_AWTZfh4M5sp}b1*Ib-M_i3o!~CwfVFRx zgRh)V0H9=%itN2~cv})!RLI`-gCegl=++}|;OzX)!C$elci?R4O`=a^GEv|Hr4PV0 znnP=+C>tIw34yvU@58GPw_8MqWj&dNd1JAFDNz0exBjPbDW$_Cn$vsYbiPS`;_9ul z(dEzU8Of;3B+_k>cdxPCKSS7tXMMr^p5-(`6cvmx zr5&YKr5$Ai7JRnh52+XK?18om&TYva;*? zQ<20x6_4CE3q3MVhi?=;=%%Dl9rwhr&|&Gi^M4rMA%|ZcJHf*IxZ;Le3d&DN&gyUeIv9JtexcamcavRC2rv@sxDr>CO8{Z`gXDWoZ6cE~WTp zQKB&XwENMKXb(1JW}}q2xosGdw9z@M960!+!XtE-7hAv=TH*Ggo^=nU*zLO`HA!Y8 zhUw@Xr_N~CpbZovX?m4|=UGSDv^N2qkyZQ^HB@@>LyeTGgW{f}F;J?FkWhl+O_5H! zdmSMl zfMWPC)2enqsL%XXh@L>DMYenb`g#472+yjGz&Pdr$L_hdq02pcvAGSUUs?b)XXJ~P zSby}jzW*c&zd`+O1JSJza|6`0rDH5O=?-2jun@!YLA4nXBRyFlO2LmBD+^Vh3nQ#- zT=ilGPQ&N1;<&-rQ1h4jnIXAtjm9XkT*$im;Q}O?zMj~KjTf5(Tg?ztw!xU z)Y%tW^?>2@twlbuMBD5+Z2&F@`9|^Nr%^LEllxEjr2~-7x_jctRwYBfz!wJN#&v7y zU6a{xDXP0|H2BU@F`S~(tXr&pQx~^Gr^v#ubon8ew1Xe9RkWDrK5T{2-u#Qz`3nV~ z`Fl&Ck#OP;OJO$e0|p6gUY1_$Q}~HPTGKIR%y<U~Mc|^XZro%(JBiaJe-FOXkw73iZ2aYM#aRfJ(AFe!tl6cJ*X)>|vF~B$ z(^DMcg;Em&8N3qti#1_lOs!2Sp>!`}laOX5NH;v$E#uBhEtttMhG_|XV(sIXj%E#Y z`dkU_#;T5Lb1T!2{eTYz&c#T(?DRQQ-I%B=kvd>VCRsLNTnX@!;1}7e{8tpl7`#DK ziq)=P0-c*~{VR*^Q5w~cgtL3OSIwAIo{z`0w)|B~*1baFXlI0(KJxk^ZtTyK$ z)qBQNgR%n%_=2WW6v~rRqPcom>BzN1_3g0pWD!R;cW`ucf{*uG9O}$~*iN8hR0_Me zmM1U{o|I~v#|FUsi_4#r@{VlhKfT61umR9YB98v3C1g6#mKt8F4mgPxeVwX<^H8IG z<15C~XED+S{0F|@G}QN}!pI%XQ=R=Dd&?SskvKTOE4;9tO!6Wo1asYRH}Ov4V#DO< z!h>b$k~tI@QvO8fn50h~lRIk`6z_v3&k9HiB1H7N1|ZR_Y3wbN$c%8bEq3u0Y-%XR z0wj`ns!X$=I=scHX6uq|9`*mQ^^QS~fbF_&+nTm*PuteCZQHiewx?~|wrx(^nl`76 zo$p)c>{GSs{76-jUrALe&-1=FF6jn(_{f*?+z-!a9%bWh2TiZl@J{53b3)#mC2sgs zRw5}rJ!Xt^daZ|oH&TQg*gNYufrO+aHXzASnI3K<33TF9Fk-k~hyiKNcw-={(~h`R zQ^zB_WrU8zD7$<|@uzRA6{P+|;q&J_ENgPK2Dw@LSY)@pYqIyKqcDW})=ii~GA z;q^a52?<9v90^Aa_)u>{!qIr+2Cy>!FToi&oDMlK{gD%Z!>J2aVv%yp+Q;DF1zz~nPad@i3_XEjGDo!Eo_|VT^2Piq; zS!tcLA&(He^7Upg`4jARGe+I13HW6nA0PU1^y>QoXd3?Bi2G~MQ=vJ#JIR0f_zqJK z37%Gy$NZI5DTz?Y#+6JRxm#coOjy5LSf9CDcuD#lV;;7(MMUIeISnIF)37YE&)WRr zXgBc)8In}-?R_5Wu=J_~Ghz#ZU%++b&f?pL!oX7`T)is%CFK^)o1}(t9{Yrjc zd0rL}9J&iX%CEoov5UM{)*p}`D@SQCSH9j(y2O}o4j9Ls;)@=bJt-t^U3!Uf+qXa6?)*{?>A=bZg zWaRerj09JmN(v3(ownZZu0Z{wX@SZ!LFH5Eqq&(i$;NPjkQTn(Gnp~2+|8dYozfF zV!TN?>mV?o@_f+tALZHZ_GcbYc~<|A^32EO#Eu^+EPy{TKqruEq|9_{rVeZ!h1?xK zu!3BIA9#M}PG+2#M-o6Z`wQS;Pz-VqpfXNl&p`yDf272XfK2u0K*8ic{a6XsnUs%i zpyD)N)wAgsJPRVy3J5+($dvEN2c~S!K;#Uj+Lnu)3qWtY6VmE>> z{dMcET#ew$0zwxDa`CyVv6c<@c4wMJtud1vvbAA^V6#xKH6CsdG&c$`$c9Hy z9$XI?Q@yNWapaBApn!ZOyh{(W=vJn`ca@L7d3$Gfet3pDLEpgN2Ym@nC&EWV9yAS; z;yKa|9xQ-M;>M)vs^qp{$08u&`wJtT_U-#PLAygJpHA^=PID1$k!()k=Xi+~3JQ;5 z^%Z#ypT^|xB13knPJ9H+b$EEcg&e>oiLw$AfBiHVI7J|#-USp8YqIZhSeE`w@Dm9= z+FlpSW-etgIY;=~7TZ64H7(vxo6xKlal(u$SfQ3#f%{^jLaO>_IxPCx8QmzH88g$8 z5#!69jPt=C%0ieaQL#266Stl3U4wYFJjkh#cW%ql`0MO-SVA;O#0j?~f><106&GD! z0#DbO0zK=m*#}^Ra08Me6S^e3&JN{t9zDS63lGK6=P+_{PS$Zi;+IbT8C=t(4PI=d zo-u3kD5D>@IvL6qIY8{v|Jig0#+UL5*O`k?3Dh}?JeL!4rG-CweH;grge zCsLcrz7CcJPQ5y${|dF8^7y*%OysB-K<6cWV0Hoo2{ct+F{N9GWR9dbIG&oF==bw7 z!`(LsBh^{ouDVaiJ7Y>tr3EAZ=@@U6$oBaK7}7uuZcnWw*# zBD8R{HPKi`k5$`7m4J{rkgr>AfXq)7@GS~p9hniPsby#PkrQf#Zi3kNJ@pq{3$-v^ zV1%m&m5tk1DHrR$TFm1NQW15;6cuz61tnY+@)c1{_dbgG?Zy6U&O4 zy3jc0)z3K%7tCIZ?m72I`#msL17maoNYcH|+qD&DdOx}%j|QHuz` z!bkP1b{7X7Gi}ZvPYv;BL42v{op0FcZGMA@NZ+mgKiE!ZGb6kIJWXRpRfP$U*3oE- z*3qo)2eAI{!pQ&6Z2N!xZ$hRNK#Pgme=R2e@xMjx~*u z4fNxEb*{f^oh&8&Tq3=A!(U?KGQeioW!FAib*Kz z=OyL=)!gff_J7F7L28)C{Z|o$+t(n8-f_mbq{Yd&a0k*PWCx`ntgt8c=mf5bD=fIi zrxYQPxk#g#;uG{?;vC@8d#DN!XGJ@DVx&;vmH^LIw`TPRYU7sHp1Rb*)d)5A++nO}wlOdu ze9#}roBWW>ocon)0PM+(|# zu^cIMpEZO*nj@kK$u^= zgR@M_j$ba=S*AV6p54X2&=7^3s9jJ9!bw-w#sF6@>CbzIRMwpVgVaw4Z*$Db!U99X zIsbMxcqC%2F#N&_;pvGVnC}PD6h%wUw7_Q}-3sM`cMwl>RW>Q@z*0-qlqkfpJBX>! z#0>cYCt*jDoAx+j5dLVkiPHjNN+0DO>mYRNg%h=lA`r% zf-Lth42aJ-Z1X#IS}Pb%*fg#y*_sB$X_Z*3ZIxJCgc88{znyP7 zIxbmKnEoCq-=c!jI!e*KLPP4(YH==F4tD0<4P_@JtjKGI>+G18C{a`I7th&C0SORD ziNslzIjV*ErQB(C3VAw3XIiO(TcK^-KA+y+si*r_e)tV@OBb%M?~iX@I0{TducD|Y z$W|;p+JN07uE%(;m;+l56NjDLCP4)SVDS#oE@u??G@@=T`$NlK?p))` z%)hgV#~wpaWIlI44{uV##-ZCK&oDe}-ToM4jj$OFq2!sfECb(nNAG*D;nBXP3qWpe zH@Nn<0Kd_V05G2z4d<}Pr+{^(-L0_n;mF{74fxBzuoYlak#XU;Z=)Q_Rt}NZek?iv zJi@H%L-Bnm&4KXBz{nb{z7|mOgFORPp1=@IsnCXnfx=eSl-fh( z?Z}2a)II$v*Tf!s^OWrV^FT^N(~q4)X;MDa#1bZUNL9N;e#UNRI8-49KJvaQAam(D zDE>9(2IeSA8b(z_lY(&!jT>$Zjoo`R9@x5r&6MO@ElJmHJT=DNjup1*K?8^}x3!fZ z8k-d0h))EQQ^?qA%bX43++#{PsgGe_0RB};*zCzjvG-6uZX>>Jy69d{*6tnt-gEMk z+(*3$>Z=pBkeB;!?M}`rh$SfU)(@saNEe}N(Rq>c0nYrD6csYTbe(67VS5uFp+ZwyKoj;P-gOd5wf z+7>S$o&tyy&>5@A_+YF@dyh~G15u8TJ!`_~uelq-0oS#9OQchTm|lW# z3mi*Gsn_b%`K5-ELi8b5pgt4BpVfFLv1qHo*_0N8WCvEDGb`})HVbCN4;^AMpB(+v-?vfXq4UUrB z{(ycTtDxO)f4*x(4tjFc0B4yOhbANbgrdfDkp!sCEsP5|<$Om_uLZcOgMXf=F-hDp z!YAbTQq6nzMkOzw08rwRNP2G&veKz;AZ}cK+VT@519Q7W(%LCx*?trakbLrtaf~PP zFZD?*E)u&sUgI{-$vq_PXOf{8LK?GL`hs5&H(s0o*ckdL-*2IPI1gN(AT6LIMyi*s z6sJ>KP;wae)gNERJmm93nnaSOuwHCZF}cu@6PerqM4{G*Yg_W)=I1WG8)z$-HiwP9EErzv1*GYa>b*&*ids zfl!+&qpJYXzqp|}ME4X(Jd|Z*#nKs^O3M_F0d4WAWWMU61JeL zO;zC;*<_A!hM(+b4dE}`UqU%icX$@?) zZdvT1VW<;)mw|e6nCag(Vl8px7RG~2xnI3&0Mnx={5{GW`CCf$Fmt-yxZf-`w0w9J zOYqWb_P2@Qv=2s}@G3k?@t}2@KPwY3`Rdb5@}apbIBr_Dm$8ebZ++xv+rEd$89Gu4 zu&O6qXX;BY0zG{M{1un%j<~YVIGT9r;GrE|Gi9mCOro03AhlXrmfKnKMml5qxSP27 z0k|{HT9}q>bZs~hH3>;Uw}8qI^2!qNrm`$0HobbosSnaKJc1Iv>kJN8 zZ-wX-qYdV^$yAPTcljc$mVV%*EyS@7z zwNQDL)*S#8Er!QOTvz!--pkM%nx>@(pstL&T+j;mQ3b8cJz~v$;==|=H`=4?*}_7s zQz5FzDhtX_I9pM}xWeq<@fzzzh>`1u6@Q&rTtr0Ey05znqo>#ps~cCv+HDZqZbIyh zkcJ)quF0$?FDpD);DD(jC2K5Tk-=IADgTuxN#?H&u^Nw(l-mvy9^);~zZ~;ch8?(j4}CI|rgJ5o4K~9C z@k?V*g9Z>`Q=;#SPJN*^#-<8R9S^S#kA~lcP;_ZbTe#ND0UTttB}J+;Sp?D2a%D z-0l|~rwDSPzZQshHJ#TLuu5y?7n}#|-J9KvC)WS*6Y$w1Ni{&xp68tZbyBO=ov0t} zy7QdAuABLh7yHrz@xtH+m?b$YNmbM&&}@V!|A*=G*XLy6?@S!8_l{FJu6yxgy5lE9 zcx5*hfi)4q{iyx#L3Qis421cupqPr-O)6VbEInSG>b2nhO3S}}<_Xn_U9P z)l=3`703@(PaBS(T*uS$3!T`4d2)Q&R8H5jeWPU-^`B0)GIRUb@@{j6y4|h7=2*Q~ zgpYspG^AIW*P;3LcM#G=bCp!ht6Y}4@S>?(c4YB=rb1Z2T zRBhg}X?s0Yfz)uW09g{@J4@dFrn;`4LnLAMtz0)_3$-DJt9g=zbbk+3PX3wP{2 zXi@>J-S{kE%(Id#-7&T<(6jX_`(_m2Jz~N1f}C1H4f|#M?a4>KYfwoM9s|}Ji>$Qn zCRg3>YHkmiJ7)GuWRX6LzAhr4hd5A z-GM=<6XSVzD&Rn`!*0=SBJRx+rL9kxUMyh!>DfED9j^;4d%-L z^P+wi2(pyrjM}vsEWp98T@sdU!ndK+$o~?+9z~#L&SfQR|9sYnx9_sBz2PxDCDkjW zpI+P6TTxs2XO9#=b$(6RRXe=d7CxqyqPKejf48)6*6?+Fdp`xFK+L6jR8@D<#%$T05>;Yi$mW@=x)K45@RC3+Lj7Z5T5-C^TbnCK`9Kbh$^u|OIKK`TO=YF$-`$b-!g75;Z?u@Vw+)sNZA+c_-(M+~8*o?o6262RL}zP6 zrCM&w$KUPga!ntp>Am{xU!f3`DvrO z{)ds{e+tk_EF6ES6CM3Kh2xz(zZ`?^PnBMQoYPh~WZ#Ui-Go6wxc^~C0Mdy5-2mAU zHcUxps`ES?Y0?gVPkPTAde_e44mB&W6_HUoq^1_N~GQx zYr}cNRZNWey$f<)QXHjX0PxRI<`SV|DgyQ^1y4M(aLJY$IfgBa{|22ZA6%u0u*4PH1W4Q@TCp4~0SOUM5=jSPQN{XA%7qm}^H{B!i@&&>poH$UpWaEmXE>UzrJbvuo zcWvH=-g`vGf5{%ughXX2w!@BOaplc?2HSEVBlYgZLj&Ov{+ep60KeOayx}*0a3DP5 zGz%;@)fkh=Hye`AF5?i6tsBK(#~RoaFANZzM_v1yF97wqUm@yCq&rg{{bnTkdG)gZ z;j>_PEF<3ujY$ae2DPszcp#y(90PJuMo$wB2#?r{e4%YIMA-X8wcbBJbIAXrD3!Au zRf2_7mMY(mJqkhxNUmT)g@F14cEs&oVU|k<^I-3jTQtZpGCmqT6z$e30{(sXc$ssH z^qpIidO&P21L#igp+AFYR;;Oy;=mgU>3<vVA;W_ zI_XJS2cbVcQ*S@v-OiwB++!gi*s}<$hjG=I7P~w%X95>Jg!aVcU32JehTUnvR38t* z^HokZ&cR^?z!|vsf{#J$GQ;=fSCG%5l8v~;&D9N)2}t^@4^QeItalEFw=t6npy1&q zrg13`OgcaYg1tM-=Hp62kvN2wW6-#mu1+%IA?mMXNlX zDVeIzk3kU=@8gJxN({~lb;FRvYmmYu3XjJv{8N6}aB)J$;SPZbfDK=sc2*aGLDGj{ z<^a(H3~KV_R5T+9aYw#nIHW~ic)=)*AVTq2GvDIxloxrurCQ)3SjteHI4L(tv~evV z1gbsiOyP%#TUrwux0MZr<+|e+#u=NW&R4A0Qs}Owf{*^QymT48Cm86?zY5k%q{YZ; zQ1C!#Xx@cSVZ*iDuvIBw>=K8UDZ^X#b9IabIIwz)S^z>b6{Dtf7LSaz;%BF-3oYPn zP&}r=tZo(|^hq>-gQaPwt_P3bE?FyOJ&A|0vOv(Hz=|xCYr`#ITV(c6<(DkfmXOd1 z2Uyys2=-Uu-eAyYVW*r3Ve8f4x>Nb5Y3o_wJB1N!R@m>u|9-(A{|dC-nS-`OpPRr0 z{Pc1mhh>%V&F^m&3F8|Y^<_Od#aSQ|rKC@Qy)D$82WgnJ8TrzkXCmFH6GJF8Jalm) zmjzyxNjzu_N5{;tC@*OG8J}*nJM6U=d_x`1hfUorMGHriR)vp(RVO;gV$yQ0lV*1t_(Z_{+nxkof-F3rYqn1FN0WzYh066h(-` zb;u;*2M%CNp3<%@LFgWnNi-pN&!uE~sT6w9N6z6C91_=;diz;ptph&wkb1ZjQX{or z1&iFFT2$5Pm?=gOZPX>B_4?t^SNZ3+5Z4or|0>B=7sI_harw`qL$myP@8^yJWKKL~ z8<32Q7bj(uC=}ZbI1lVeqd48)Pi*MmCiV?j$xKC1c~d${xor*)4U<)s2;UPmYVCPn zRe2v_jA%Z;+-fCQF+r5FIz*(yHkjztO{dqQZ{nXn~-az(7E!3 zFTplHB!Njst=;sa;MC=#n@&&z&`bK+5837zlqoD^T7?qwl}Ug9rj`ydMZ^W?4}-L) zeF{cFXSR%VaWaBZYxJ@g`O8^&*XG$Y^h-G4HbOuaCoJ?=h_Iz3w!3UE>+9l;9KwCB zuGM{ed@TGnlFaywpc}q36?5>|(eC?b9_K!EFE6ZY^6@YhI!K95g8L9M;5%6qRPdzz zR*X|vDZ!Sh4I_>1j(|T7yJ=ss1r$ijjjQ?K!9TPVy_*`IW)IXSaI!{IyAHENyt*j4 z&}`(bhr5Jg6IZnlfkh}UD%;Lyhmj>ehA@RV_Pnf@f=)#69-b*yJ|k}m>a6usy?=h) zBAnxb_ZdASi6W2{`dhfv5tp?b;1q0*NQXA9=mF;}XdkZ;!>a z?&=n6d2{uMEuI(=jFDEkJ?XlOJPM~a;Qxz|ugq3rfcd6<-X8h~8ZQ*53V_5BUNkVc zRvZ61J-kBihA;aYhqa*Rj`D;ub8aLG5izs<&TK)0ME%(Ni8Wvva92F|*GsvjQMa{?bo~1v_&miC*`#Y}v?(IhWqkux!#hvGDfd!)R2W zhmpxznq)44(qA{fO$U<~qH!V-4tn)w#?m}P*>B_>m%Cu;sFu66Fp7qrj6nar+pQq? zifC!<1`zqiOrFP}0RTq@CgXwMF-x+7b}N!5F)*}~P66B!=yT*Oaai>x8h8J~9=CtW z6EhjoC4i}N#B7)x3h)~HnUGa|5Uv_@@04A8;JF@6aoH)=(pt9_2!U18VA8k@2qP|8 z2p8a7>OVsk>r4zusJ~Nj{@vM6W#lUhk;p;$ znGp}oMF@H#eRm7vJ#~eiJUUMOX>Z3^BE2r<(vYtN=yv;)$f+8>=liWDOp~}>G*|HR&!CLOq zrKsFlE=o&Q*}-JFFl?&l!;+dP7N4lBpXka~Q7I{YTu^)nw|Ocauna}a;?YoTf^^Dn z_;JzcIfPKWjIlXjOdALBi}bTKzQ2=bNn6g|mJX51!`(JYH&*-*!!lY|yV?$Blc&Lw zUPdBR0HCs6)v-fwBAv*MF@}Pq;xc6g$rab+DBVMxH_9m`oKSdhMY4(V$t!W8UMCJm z8XIR$=Qx>{;Q8$NR}`=7uwe|&c$SBp%abKfUnANIS`B5A%Ad%(j^VR;AXGZ6Cz(q} zP~Ie6?NUY%zkN!6AiZ*UA_&wOuZ18?Z>W0{4q%QL9@Wtmtuu|keL>DFRhcWBH@M#6 z_tSf4^SQivwWp{p*Q0QB*7pt0v+B)~OW0mwitQTQBF0Cf+d)=5V^ytO+eHK2Hv!fM zd%R3Di_{|uSl^5-D?YRg?l?|z2!(zI$XGQLe6!w*qvrt?YO zG|!6HBsEem8uE);k6Fonu0RV8@Ij1(5kR5-^jVg7_6ggb85S25zYmc!?x>~jUpK># z5Zua5HE%ga=|CRKKtYb;*vhUTZ-ra&b&oqx#>~L-+@&&aMB|1x{RdMyl zb!v5)?Uq`IhFNTR`!3}dPCE8C^i4%-!YnG>i`h7DGfX!MhdCFT36q0h16+{LMQy*Z z8Q?yFFAeMxT~vfPcqlj<_(Y_1y%W5UO*Tfc+XV~Q8&uoiy8Xx;VIR?k?Q(pMCqnr>nZT*L06(4D2f2-^tYQ z3&~r1Msw(tTX|7@C|a(30SIxe-f(305PXrccqL~84+<5?4i`AvaI880KNZ?EdJDHH ze?8-BPR@i@N(AbFwq-G8`B)b$0SOu~3UW;rO?`FSZ8rZjGOILO1s4L<+Y&c6^^D&C z;9Z{%Kgy3HovFIOPM?X4oXjP6VcSL1#5HR4erxi>d(VpL*Kkb8d`ZKlM$BHa0oy+O-T z(vV0?ZmnV_lSbDF*mA~3z{@4%!C;(d`?PWoJIZbZmjsDPTzz>iPjaf}(|TmGv{Uqu z^!#qWvUTSq_&cj60Js=X!#R5~&`N8nTD|RL?NVQf*{LK%t4qTaqk}c9JyRN!=l1ra z-0Qns7L_W)HG7v^nDF833>>tt7a$+y43{>MtAy4ixKnH6e#7zoSx*MZ>+K>J$F^l(3@)u?P(sm*xK5JPn#=j|FIkxVD(&FCKESt zC1J!1(O#@0O2#E?upf1A*46yEi4dj4W*nJOM%lwe%SeZzQ&Xao9nvIEvV|vHtZQeG z!%`D~c!%YNX^>Q)nAoT$MBKIZ;fI>Fv|7^_VdQPN#SvRbW4brOTWiVo3CF>b6M{~a@IzclmDGvJQ)rXnTxP!{>PxPI>A6{J?JQ8^b+6sI(_S#0c3|8zH{4LGx z)qk&C(oCIoX#xM+aG|{oBy^$zfd0?G_(jly5#(R04VuJq?$6$qNb7R$K0rh#x{iBH zEQLmD+uu)MdOg{UJ5`w-!w1s-(@+YXn-%|y%i!p!yE^s3RlDJ)H!E91ji+bM{POCk zRr6b*wBKc>L>Q^z)dT4z41 zV%MLC-|OP%w}<iur5sr@)n|Krp^3D^wyKdk=(=*`l3Sb&!-x=*6k zrVy(qO5(Z_@#_t&#I;}(_GJz|)Hqpgrd*eK_J2%la~+VV0d^_hpYFUI`_lL19}sYT z7zFXQ)@l+Qxc*n$^uZ|fq_2TvgSsJcg+)Lv!c-!85)&PXU3Uw# zh&`MZQWz1&G>4cuT!Me2s3s-Mnlt>Tt2PpOq+kQ*WBI@*2N;ROsV+UeYp}*0wMdTx ztEHEK^p^)I{1vm^F|da-9hvlsU~<}EP7P~4i2JpPGqNAmB8 zwV6FxrL5JMFl4Bu1d(e9+cT6eahjO*78qG?uc-la5@;>&B8|1kzQ~ j+gl=bZfA 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�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 - \ No newline at end of file + + + + + + diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 9e4207a..a6d73fe 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -347,11 +347,11 @@ - Location of the ApplePay.key.pem. eg. /var/www/html/cert/. Files should be have read access by the webserver + Location of the ApplePay.key.pem. eg. /var/www/html/cert/ApplePay.key.pem. Files should be have read access by the webserver - Location of the ApplePay.crt.pem. eg. /var/www/html/cert/. Files should be have read access by the webserver + Location of the ApplePay.crt.pem. eg. /var/www/html/cert/ApplePay.crt.pem. Files should be have read access by the webserver @@ -477,17 +477,31 @@ Magento\Config\Model\Config\Source\Yesno - + + + + Sapient\Worldpay\Model\Config\Source\PaymentMethodsApm - + Sapient\Worldpay\Model\Config\Source\ACHAccountTypes - - + + + Sapient\Worldpay\Model\Config\Source\SEPAMandateTypes + + + + For this detail, You must connect with your Worldpay contact. + + + + You must ensure you display the official wording to your shoppers so they can agree to be debited. This is official wording which is to be used to constitute a SEPA-compliant mandate. Without this official wording, shoppers can easily reverse the direct debit with their bank.. + + @@ -1095,25 +1109,6 @@ 1 - - - - - Magento\Config\Model\Config\Source\Yesno - - - - Sapient\Worldpay\Model\Config\Backend\Image - sapient_worldpay/images - sapient_worldpay/images - -

- ]]> - 1 - - @@ -1266,11 +1261,31 @@ - + Magento\Config\Model\Config\Source\Yesno Set to yes if you want to enable the Worldpay Payment methods on multishipping orders. + + + 1 + Enter the merchant code for Multishipping orders. If it is blank, global merchant code entered under General configuration will be applicable. + + + + 1 + Enter the merchant username for Multishipping orders. If it is blank, global merchant username entered under General configuration will be applicable. + + + + 1 + Enter the merchant password for Multishipping orders. If it is blank, global merchant password entered under General configuration will be applicable. + + + + 1 + Enter the merchant Installation Id for Multishipping orders. If it is blank, global merchant Installation Id entered under HPP configuration will be applicable. + @@ -1284,7 +1299,76 @@ 1 + + + Enter the merchant code for Paybylink orders. If it is blank, global merchant code entered under General configuration will be applicable. + 1 + + + + Enter the merchant username for Paybylink orders. If it is blank, global merchant username entered under General configuration will be applicable. + 1 + + + + Enter the merchant password for Paybylink orders. If it is blank, global merchant password entered under General configuration will be applicable. + 1 + + + + 1 + Enter the merchant Installation Id for Pay By Link orders. If it is blank, global merchant Installation Id entered under HPP configuration will be applicable. + + + + 1 + validate-no-empty validate-digits validate-digits-range digits-range-1-48 + Pay By Link will be expired based on the above entered value. The value must be entered in the range between 1 to 48 hours. + + + + 1 + Magento\Config\Model\Config\Source\Yesno + If set "Yes", expiry lifetime will be doubled once. + + + + + + + + 1 + Enter the merchant code for Recurring orders. If it is blank, global merchnat code entered under General configuration will be applicable. + + + + 1 + Enter the username for this Recurring specific Merchant code. If it is blank, global XML username entered under General configuration will be applicable. + + + + 1 + Enter the password for this Recurring specific Merchant code. If it is blank, global XML password entered under General configuration will be applicable. + + + + + + + + + + Sapient\Worldpay\Model\Config\Source\CaptureDelay + 0 - Automatically captures immediately
1-14 - Sets the number of days to delay capture by
OFF - Disables capture completely (you have to capture with an order modification)
DEFAULT - Uses the default preconfigured value set on the merchantCode]]>
+
+ + + required-entry validate-digits validate-not-negative-number validate-digits-range digits-range-1-14 + custom + Sets the number of days to delay capture by +
+
diff --git a/etc/config.xml b/etc/config.xml index 942d35c..c9e13b9 100644 --- a/etc/config.xml +++ b/etc/config.xml @@ -80,6 +80,8 @@ 0 Alternative Payment Methods PAYPAL-EXPRESS + ONE-OFF + By signing this mandate form, you authorise (A) Worldpay to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from Worldpay. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights are explained in a statement that you can obtain from your bank. JE-GB,IM-GB @@ -108,8 +110,13 @@ adobe@fisglobal.com - Share Order + Pay By Link + 24 + + default + 1 + diff --git a/etc/cron_groups.xml b/etc/cron_groups.xml index 306ff5a..7e05290 100644 --- a/etc/cron_groups.xml +++ b/etc/cron_groups.xml @@ -18,4 +18,13 @@ 600 1 + + 1 + 4 + 2 + 10 + 60 + 600 + 1 + \ No newline at end of file diff --git a/etc/crontab.xml b/etc/crontab.xml index fa32315..a323964 100644 --- a/etc/crontab.xml +++ b/etc/crontab.xml @@ -10,4 +10,9 @@ * * * * * + + + * * * * * + + \ No newline at end of file diff --git a/etc/email_templates.xml b/etc/email_templates.xml index 68e22d3..394c847 100644 --- a/etc/email_templates.xml +++ b/etc/email_templates.xml @@ -13,9 +13,6 @@