From 40398b9f825145d3cecf9383519a1b89185b2578 Mon Sep 17 00:00:00 2001 From: David Runtic Date: Fri, 3 Apr 2026 12:54:50 +0200 Subject: [PATCH 1/4] first version --- Model/CheckoutConfigProvider.php | 12 ++++++- Model/Ui/Redirect/ConfigProvider.php | 17 ++++++++- .../view/method-renderer/monri_components.js | 35 ++++++++++++++++++- .../js/view/method-renderer/monri_payments.js | 34 ++++++++++++++++++ 4 files changed, 95 insertions(+), 3 deletions(-) diff --git a/Model/CheckoutConfigProvider.php b/Model/CheckoutConfigProvider.php index 68e6c68..2c30d20 100644 --- a/Model/CheckoutConfigProvider.php +++ b/Model/CheckoutConfigProvider.php @@ -5,6 +5,7 @@ namespace Monri\Payments\Model; use Magento\Checkout\Model\ConfigProviderInterface; +use Magento\Framework\HTTP\PhpEnvironment\RemoteAddress; use Monri\Payments\Gateway\Config\Components as Config; use Magento\Checkout\Model\Session; @@ -20,18 +21,26 @@ class CheckoutConfigProvider implements ConfigProviderInterface */ private $checkoutSession; + /** + * @var RemoteAddress + */ + private $remoteAddress; + /** * CheckoutConfigProvider constructor. * * @param Config $config * @param Session $session + * @param RemoteAddress $remoteAddress */ public function __construct( Config $config, - Session $session + Session $session, + RemoteAddress $remoteAddress ) { $this->config = $config; $this->checkoutSession = $session; + $this->remoteAddress = $remoteAddress; } /** @@ -50,6 +59,7 @@ public function getConfig() 'authenticityToken' => $this->config->getClientAuthenticityToken($quote->getStoreId()), 'locale' => $this->config->getGatewayLanguage($quote->getStoreId()), 'allowInstallments' => $this->config->getAllowInstallments($quote->getStoreId()), + 'customerIp' => $this->remoteAddress->getRemoteAddress(), ] ] ]; diff --git a/Model/Ui/Redirect/ConfigProvider.php b/Model/Ui/Redirect/ConfigProvider.php index d552e05..9a32f58 100644 --- a/Model/Ui/Redirect/ConfigProvider.php +++ b/Model/Ui/Redirect/ConfigProvider.php @@ -5,6 +5,7 @@ namespace Monri\Payments\Model\Ui\Redirect; use Magento\Checkout\Model\ConfigProviderInterface; +use Magento\Framework\HTTP\PhpEnvironment\RemoteAddress; use Monri\Payments\Gateway\VaultConfig; class ConfigProvider implements ConfigProviderInterface @@ -14,6 +15,19 @@ class ConfigProvider implements ConfigProviderInterface */ private const CODE = 'monri_payments'; + /** + * @var RemoteAddress + */ + private $remoteAddress; + + /** + * @param RemoteAddress $remoteAddress + */ + public function __construct(RemoteAddress $remoteAddress) + { + $this->remoteAddress = $remoteAddress; + } + /** * Retrieve assoc array of payment method configuration * @@ -24,7 +38,8 @@ public function getConfig(): array return [ 'payment' => [ self::CODE => [ - 'vaultCode' => VaultConfig::CODE + 'vaultCode' => VaultConfig::CODE, + 'customerIp' => $this->remoteAddress->getRemoteAddress() ] ] ]; diff --git a/view/frontend/web/js/view/method-renderer/monri_components.js b/view/frontend/web/js/view/method-renderer/monri_components.js index 53336e7..5124017 100644 --- a/view/frontend/web/js/view/method-renderer/monri_components.js +++ b/view/frontend/web/js/view/method-renderer/monri_components.js @@ -220,6 +220,38 @@ define( }.bind(this)); }, + collectBrowserInfo: function () { + var screen_width = window && window.screen ? window.screen.width : ''; + var screen_height = window && window.screen ? window.screen.height : ''; + var color_depth = window && window.screen ? window.screen.colorDepth : ''; + var user_agent = window && window.navigator ? window.navigator.userAgent : ''; + var java_enabled = window && window.navigator ? navigator.javaEnabled() : false; + var ip_address = monriConfig.customerIp || ''; + + var language = ''; + if (window && window.navigator) { + language = window.navigator.language + ? window.navigator.language + : window.navigator.browserLanguage || ''; + } + + var time_zone_offset = (new Date()).getTimezoneOffset(); + + return { + screen_width: screen_width, + screen_height: screen_height, + color_depth: color_depth, + user_agent: user_agent, + time_zone_offset: time_zone_offset, + language: language, + java_enabled: java_enabled, + http_accept: '*/*', + http_user_agent: user_agent, + http_accept_language: language || '*', + ip: ip_address + }; + }, + getTransactionData: function () { var email = customer.isLoggedIn() ? customer.customerData.email : quote.guestEmail; var address = quote.billingAddress(); @@ -241,7 +273,8 @@ define( phone: address.telephone, country: address.countryId, email: email, - orderInfo: $t('Magento Order') + orderInfo: $t('Magento Order'), + browser_info: this.collectBrowserInfo() }; }, diff --git a/view/frontend/web/js/view/method-renderer/monri_payments.js b/view/frontend/web/js/view/method-renderer/monri_payments.js index e4028d5..65688f1 100644 --- a/view/frontend/web/js/view/method-renderer/monri_payments.js +++ b/view/frontend/web/js/view/method-renderer/monri_payments.js @@ -75,11 +75,45 @@ define( }); }, + collectBrowserInfo: function () { + var screen_width = window && window.screen ? window.screen.width : ''; + var screen_height = window && window.screen ? window.screen.height : ''; + var color_depth = window && window.screen ? window.screen.colorDepth : ''; + var user_agent = window && window.navigator ? window.navigator.userAgent : ''; + var java_enabled = window && window.navigator ? navigator.javaEnabled() : false; + var ip_address = window.checkoutConfig.payment[this.getCode()].customerIp || ''; + + var language = ''; + if (window && window.navigator) { + language = window.navigator.language + ? window.navigator.language + : window.navigator.browserLanguage || ''; + } + + var time_zone_offset = (new Date()).getTimezoneOffset(); + + return { + screen_width: screen_width, + screen_height: screen_height, + color_depth: color_depth, + user_agent: user_agent, + time_zone_offset: time_zone_offset, + language: language, + java_enabled: java_enabled, + http_accept: '*/*', + http_user_agent: user_agent, + http_accept_language: language || '*', + ip: ip_address + }; + }, + redirect: function (url, payload) { var form = document.createElement('form'); form.method = 'POST'; form.action = url; + payload['browser_info'] = JSON.stringify(this.collectBrowserInfo()); + for (var field in payload) { if (payload.hasOwnProperty(field)) { var input = document.createElement('input'); From 0eec150889cede9a0cc216133d25958d199d3361 Mon Sep 17 00:00:00 2001 From: David Runtic Date: Fri, 3 Apr 2026 13:37:49 +0200 Subject: [PATCH 2/4] removed supported payment methods from monri redirect, --- .../SupportedPaymentMethodsAction.php | 19 ------------------- .../Redirect/ProcessingDataBuilder.php | 5 ----- etc/adminhtml/system.xml | 6 ------ 3 files changed, 30 deletions(-) delete mode 100644 Block/Adminhtml/Config/Source/Redirect/SupportedPaymentMethodsAction.php diff --git a/Block/Adminhtml/Config/Source/Redirect/SupportedPaymentMethodsAction.php b/Block/Adminhtml/Config/Source/Redirect/SupportedPaymentMethodsAction.php deleted file mode 100644 index cffb9e2..0000000 --- a/Block/Adminhtml/Config/Source/Redirect/SupportedPaymentMethodsAction.php +++ /dev/null @@ -1,19 +0,0 @@ - 'keks-pay-hr', 'label' => __('KEKS pay')], - ['value' => 'pay-cek', 'label' => __('PayCek')], - ]; - } -} diff --git a/Gateway/Request/Redirect/ProcessingDataBuilder.php b/Gateway/Request/Redirect/ProcessingDataBuilder.php index 827d9eb..0cd4858 100644 --- a/Gateway/Request/Redirect/ProcessingDataBuilder.php +++ b/Gateway/Request/Redirect/ProcessingDataBuilder.php @@ -37,8 +37,6 @@ class ProcessingDataBuilder implements BuilderInterface public const CALLBACK_URL_FIELD = 'callback_url_override'; - public const SUPPORTED_PAYMENT_METHODS = 'supported_payment_methods'; - public const TOKENIZE_PAN = 'tokenize_pan'; /** @@ -126,8 +124,6 @@ public function build(array $buildSubject) $installments = $this->config->getInstallments($order->getStoreId()); - $supportedPaymentMethods = $this->config->getSupportedPaymentMethods($order->getStoreId()) ?? 'card'; - $isMoto = false; $payload = [ @@ -148,7 +144,6 @@ public function build(array $buildSubject) 'monripayments/gateway/callback', ['_secure' => true] ), - self::SUPPORTED_PAYMENT_METHODS => $supportedPaymentMethods ]; if ($installments !== Config::INSTALLMENTS_DISABLED) { diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 5bec32f..d5f652e 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -53,12 +53,6 @@ Monri\Payments\Block\Adminhtml\Config\Source\Installments - - - Monri\Payments\Block\Adminhtml\Config\Source\Redirect\SupportedPaymentMethodsAction - 1 - From 375aa1760dff5d26609e3ccac8d77b426fc39412 Mon Sep 17 00:00:00 2001 From: David Runtic Date: Tue, 7 Apr 2026 09:36:00 +0200 Subject: [PATCH 3/4] version bump --- CHANGELOG.md | 3 +++ composer.json | 2 +- etc/adminhtml/system.xml | 6 +++--- view/frontend/web/js/view/monri_components.js | 2 +- view/frontend/web/js/view/monri_payments.js | 2 +- view/frontend/web/js/view/monri_wspay.js | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c4b617..f7d07fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +### 1.7.1 +- Added additional 3DS parameters for Monri Redirect and Monri Components + ### 1.7.0 - Improved Monri WebPay tokenization by using API for transaction creation. - Added "Instant Purchase" on the product page for customers with saved Monri WebPay tokens. diff --git a/composer.json b/composer.json index 39014f4..8def339 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ } ], "description": "The official Monri Payments Magento 2 module", - "version": "1.7.0", + "version": "1.7.1", "license": [ "OSL-3.0" ], diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index d5f652e..20b8580 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -19,7 +19,7 @@ showInDefault="1" showInWebsite="1" showInStore="0"> Magento\Config\Model\Config\Source\Yesno - + @@ -99,7 +99,7 @@ showInDefault="1" showInWebsite="1" showInStore="0"> Magento\Config\Model\Config\Source\Yesno - + @@ -172,7 +172,7 @@ Magento\Config\Model\Config\Source\Yesno - + diff --git a/view/frontend/web/js/view/monri_components.js b/view/frontend/web/js/view/monri_components.js index 59ff1d9..cd2912b 100644 --- a/view/frontend/web/js/view/monri_components.js +++ b/view/frontend/web/js/view/monri_components.js @@ -4,7 +4,7 @@ * (c) Monri Payments d.o.o. * * @author Favicode - * @version 1.7.0 + * @version 1.7.1 */ define( diff --git a/view/frontend/web/js/view/monri_payments.js b/view/frontend/web/js/view/monri_payments.js index d9cbb0c..4be9919 100644 --- a/view/frontend/web/js/view/monri_payments.js +++ b/view/frontend/web/js/view/monri_payments.js @@ -4,7 +4,7 @@ * (c) Monri Payments d.o.o. * * @author Favicode - * @version 1.7.0 + * @version 1.7.1 */ define( diff --git a/view/frontend/web/js/view/monri_wspay.js b/view/frontend/web/js/view/monri_wspay.js index 40db9fb..5aed676 100644 --- a/view/frontend/web/js/view/monri_wspay.js +++ b/view/frontend/web/js/view/monri_wspay.js @@ -4,7 +4,7 @@ * (c) Monri Payments d.o.o. * * @author Favicode - * @version 1.7.0 + * @version 1.7.1 */ define([ From df46fe16b84a07055210b9cc9475300e0226f9a6 Mon Sep 17 00:00:00 2001 From: David Runtic Date: Wed, 22 Apr 2026 10:06:57 +0200 Subject: [PATCH 4/4] added back default supported payment methods --- Gateway/Request/Redirect/ProcessingDataBuilder.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Gateway/Request/Redirect/ProcessingDataBuilder.php b/Gateway/Request/Redirect/ProcessingDataBuilder.php index 0cd4858..6ee4f8e 100644 --- a/Gateway/Request/Redirect/ProcessingDataBuilder.php +++ b/Gateway/Request/Redirect/ProcessingDataBuilder.php @@ -37,6 +37,8 @@ class ProcessingDataBuilder implements BuilderInterface public const CALLBACK_URL_FIELD = 'callback_url_override'; + public const SUPPORTED_PAYMENT_METHODS = 'supported_payment_methods'; + public const TOKENIZE_PAN = 'tokenize_pan'; /** @@ -124,6 +126,8 @@ public function build(array $buildSubject) $installments = $this->config->getInstallments($order->getStoreId()); + $supportedPaymentMethods = 'card'; + $isMoto = false; $payload = [ @@ -144,6 +148,7 @@ public function build(array $buildSubject) 'monripayments/gateway/callback', ['_secure' => true] ), + self::SUPPORTED_PAYMENT_METHODS => $supportedPaymentMethods ]; if ($installments !== Config::INSTALLMENTS_DISABLED) {