From f2e1c20f4ddf15b45a3fa7e15c29dc458d4232ab Mon Sep 17 00:00:00 2001 From: woutse Date: Wed, 31 Mar 2021 14:21:51 +0200 Subject: [PATCH] Added setting for authorisation transactions --- Controller/Checkout/Exchange.php | 18 ++++++------- Model/Config.php | 7 ++++- composer.json | 2 +- etc/adminhtml/system.xml | 8 ++++-- .../view/payment/method-renderer/default.js | 26 +++++++++---------- 5 files changed, 34 insertions(+), 27 deletions(-) diff --git a/Controller/Checkout/Exchange.php b/Controller/Checkout/Exchange.php index f3759cde..aa21adce 100644 --- a/Controller/Checkout/Exchange.php +++ b/Controller/Checkout/Exchange.php @@ -172,9 +172,8 @@ public function execute() } if ($action == 'capture') { $payment = $order->getPayment(); - if(!empty($payment) && $payment->getAdditionalInformation('manual_capture')){ + if (!empty($payment) && $payment->getAdditionalInformation('manual_capture')) { $this->logger->debug('Already captured.'); - return $this->result->setContents('TRUE| Already captured.'); } } @@ -182,8 +181,10 @@ public function execute() if ($transaction->isPaid() || $transaction->isAuthorized()) { return $this->processPaidOrder($transaction, $order); } elseif ($transaction->isCanceled()) { - if ($order->isCanceled()) { - return $this->result->setContents("TRUE| ALLREADY CANCELED"); + if ($order->getState() == Order::STATE_PROCESSING) { + return $this->result->setContents("TRUE| Ignoring cancel, order is `processing`"); + } elseif ($order->isCanceled()) { + return $this->result->setContents("TRUE| Already canceled"); } else { return $this->cancelOrder($order); } @@ -330,14 +331,11 @@ private function processPaidOrder(Transaction $transaction, Order $order) } } - # Make the invoice and send it to the customer if ($transaction->isAuthorized()) { - $paidAmount = $transaction->getCurrencyAmount(); - $payment->registerAuthorizationNotification($paidAmount); + $authAmount = $this->config->useMagOrderAmountForAuth() ? $order->getBaseGrandTotal() : $transaction->getCurrencyAmount(); + $payment->registerAuthorizationNotification($authAmount); } else { - $payment->registerCaptureNotification( - $paidAmount, $this->config->isSkipFraudDetection() - ); + $payment->registerCaptureNotification($paidAmount, $this->config->isSkipFraudDetection()); } $this->orderRepository->save($order); diff --git a/Model/Config.php b/Model/Config.php index 02fac8c1..8cdddda0 100644 --- a/Model/Config.php +++ b/Model/Config.php @@ -99,6 +99,11 @@ public function isAlwaysBaseCurrency() return $this->store->getConfig('payment/paynl/always_base_currency') == 1; } + public function useMagOrderAmountForAuth() + { + return $this->store->getConfig('payment/paynl/use_magorder_for_auth') == 1; + } + public function getLanguage() { $language = $this->store->getConfig('payment/paynl/language'); @@ -130,7 +135,7 @@ public function ignoreB2BInvoice($methodCode) { return $this->store->getConfig('payment/' . $methodCode . '/turn_off_invoices_b2b') == 1; } - + public function autoCaptureEnabled() { return $this->store->getConfig('payment/paynl/auto_capture') == 1; diff --git a/composer.json b/composer.json index d907ce42..d08c706f 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "paynl/magento2-plugin", "description": "PAY. Magento2 Payment methods", "type": "magento2-module", - "version": "1.7.4", + "version": "1.7.5", "require": { "magento/module-sales": "100 - 103", "magento/module-payment": "100 - 103", diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index c34f10e4..8e4051d3 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -48,12 +48,16 @@ This can be used if uncancelling the order in case of a second chance payment produces errors. WARNING! Orders will never be cancelled automaticly]]> Magento\Config\Model\Config\Source\Yesno - + Magento\Config\Model\Config\Source\Yesno + + + + Magento\Config\Model\Config\Source\Yesno + diff --git a/view/frontend/web/js/view/payment/method-renderer/default.js b/view/frontend/web/js/view/payment/method-renderer/default.js index 4cc63291..7eca6668 100755 --- a/view/frontend/web/js/view/payment/method-renderer/default.js +++ b/view/frontend/web/js/view/payment/method-renderer/default.js @@ -21,8 +21,8 @@ define( dateofbirth: null, billink_agree: null, initialize: function () { - this._super(); - if(!quote.paymentMethod() && window.checkoutConfig.payment.defaultpaymentoption[this.item.method]){ + this._super(); + if (!quote.paymentMethod() && window.checkoutConfig.payment.defaultpaymentoption[this.item.method]) { this.selectPaymentMethod(); } return this; @@ -38,10 +38,10 @@ define( return false; } } - if(this.getforCompany() == 1 && this.getCompany().length != 0){ + if (this.getforCompany() == 1 && this.getCompany().length != 0) { return false; } - if(this.getforCompany() == 2 && this.getCompany().length == 0){ + if (this.getforCompany() == 2 && this.getCompany().length == 0) { return false; } if (!this.currentIpIsValid()) { @@ -60,16 +60,16 @@ define( }, getDisallowedShipping: function () { return window.checkoutConfig.payment.disallowedshipping[this.item.method]; - }, - getCompany: function () { + }, + getCompany: function () { if (typeof quote.billingAddress._latestValue.company !== 'undefined' && quote.billingAddress._latestValue.company !== null) { return quote.billingAddress._latestValue.company; } - return ''; - }, + return ''; + }, getforCompany : function () { return window.checkoutConfig.payment.showforcompany[this.item.method]; - }, + }, getInstructions: function () { return window.checkoutConfig.payment.instructions[this.item.method]; }, @@ -80,23 +80,23 @@ define( return this.getKVK() > 0; }, getKVK: function () { - return window.checkoutConfig.payment.showkvk[this.item.method]; + return (typeof window.checkoutConfig.payment.showkvk !== 'undefined') ? window.checkoutConfig.payment.showkvk[this.item.method] : ''; }, showDOB: function () { return this.getDOB() > 0; }, getDOB: function () { - return window.checkoutConfig.payment.showdob[this.item.method]; + return (typeof window.checkoutConfig.payment.showdob !== 'undefined') ? window.checkoutConfig.payment.showdob[this.item.method] : ''; }, showKVKDOB: function () { return this.getKVKDOB() > 0; }, getKVKDOB: function () { return (this.getDOB() > 0 && this.getKVK() > 0); - }, + }, showBanks: function(){ return window.checkoutConfig.payment.banks[this.item.method].length > 0; - }, + }, getBanks: function(){ return window.checkoutConfig.payment.banks[this.item.method]; },