You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
After installing Mollie payment module on Magento it breaks rendering checkout JSON configuration when the API key is not provided, even though the module is disabled in admin.
Used versions
Magento Version number(eg 2.3.5): 2.4.7-p3
Open source/Enterprise/B2b: Open Source
Mollie version number (Check configuration): 2.42.0
To Reproduce
Prerequisites:
Make sure that Mollie is disabled (Stores > Configuration > Mollie > General > Version > Enabled set to No).
Make sure the API keys are empty (Stores > Configuration > Mollie > General > API Details > Test API Key and Live API Key). The admin configuration form implements validation for those fields, so in case they are not empty, they have to be removed from the database directly: DELETE FROM core_config_data WHERE path in ('payment/mollie_general/apikey_test', 'payment/mollie_general/apikey_live'); to mimic vanilla installation.
Steps to reproduce the behavior:
Put any product to the cart.
Go to the checkout.
Expected behavior
The checkout page is rendered and the customer can proceed to the next step.
Actual behavior
The checkout page doesn't render correctly, there's only header and footer, but no content.
Additional context
During rendering the checkout config by Magento\Checkout\Model\CompositeConfigProvider->getConfig() method Mollie module throws an exception, which breaks the whole process. Stack trace:
Exception #0 (Mollie\Api\Exceptions\ApiException): [2024-11-27T10:49:55+0000] Invalid API key: ''. An API key must start with 'test_' or 'live_' and must be at least 30 characters long.
#1 Mollie\Payment\Service\Mollie\MollieApiClient->loadByApiKey() called at [vendor/mollie/magento2/Service/Mollie/MollieApiClient.php:60]
#2 Mollie\Payment\Service\Mollie\MollieApiClient->loadByStore() called at [vendor/mollie/magento2/Model/MollieConfigProvider.php:226]
#3 Mollie\Payment\Model\MollieConfigProvider->getIssuers() called at [vendor/mollie/magento2/Model/MollieConfigProvider.php:180]
#4 Mollie\Payment\Model\MollieConfigProvider->getConfig() called at [vendor/magento/module-checkout/Model/CompositeConfigProvider.php:39]
#5 Magento\Checkout\Model\CompositeConfigProvider->getConfig() called at [vendor/magento/module-checkout/Block/Onepage.php:106]
#6 Magento\Checkout\Block\Onepage->getCheckoutConfig() called at [generated/code/Magento/Checkout/Block/Onepage/Interceptor.php:41]
#7 Magento\Checkout\Block\Onepage\Interceptor->getCheckoutConfig() called at [vendor/magento/module-checkout/Block/Onepage.php:128]
#8 Magento\Checkout\Block\Onepage->getSerializedCheckoutConfig() called at [generated/code/Magento/Checkout/Block/Onepage/Interceptor.php:59]
#9 Magento\Checkout\Block\Onepage\Interceptor->getSerializedCheckoutConfig() called at [vendor/magento/module-checkout/view/frontend/templates/onepage.phtml:27]
#10 include() called at [vendor/magento/framework/View/TemplateEngine/Php.php:67]
#11 Magento\Framework\View\TemplateEngine\Php->render() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#12 Magento\Framework\View\TemplateEngine\Php\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#13 Magento\Framework\View\TemplateEngine\Php\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#14 Magento\Framework\View\TemplateEngine\Php\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/TemplateEngine/Php/Interceptor.php:23]
#15 Magento\Framework\View\TemplateEngine\Php\Interceptor->render() called at [vendor/magento/framework/View/Element/Template.php:263]
#16 Magento\Framework\View\Element\Template->fetchView() called at [generated/code/Magento/Checkout/Block/Onepage/Interceptor.php:122]
#17 Magento\Checkout\Block\Onepage\Interceptor->fetchView() called at [vendor/magento/framework/View/Element/Template.php:293]
#18 Magento\Framework\View\Element\Template->_toHtml() called at [vendor/magento/framework/View/Element/AbstractBlock.php:1128]
#19 Magento\Framework\View\Element\AbstractBlock->Magento\Framework\View\Element\{closure}() called at [vendor/magento/framework/View/Element/AbstractBlock.php:1132]
#20 Magento\Framework\View\Element\AbstractBlock->_loadCache() called at [vendor/magento/framework/View/Element/AbstractBlock.php:676]
#21 Magento\Framework\View\Element\AbstractBlock->toHtml() called at [generated/code/Magento/Checkout/Block/Onepage/Interceptor.php:329]
#22 Magento\Checkout\Block\Onepage\Interceptor->toHtml() called at [vendor/magento/framework/View/Layout.php:578]
#23 Magento\Framework\View\Layout->_renderBlock() called at [vendor/magento/framework/View/Layout.php:555]
#24 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#25 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#26 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#27 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
#28 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
#29 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#30 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#31 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#32 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
#33 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
#34 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#35 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#36 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#37 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
#38 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
#39 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#40 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#41 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#42 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
#43 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
#44 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#45 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#46 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#47 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
#48 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
#49 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#50 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#51 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#52 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
#53 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
#54 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#55 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#56 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#57 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
#58 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
#59 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
#60 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
#61 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
#62 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:975]
#63 Magento\Framework\View\Layout->getOutput() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#64 Magento\Framework\View\Layout\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#65 Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#66 Magento\Framework\View\Layout\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:347]
#67 Magento\Framework\View\Layout\Interceptor->getOutput() called at [vendor/magento/framework/View/Result/Page.php:260]
#68 Magento\Framework\View\Result\Page->render() called at [vendor/magento/framework/View/Result/Layout.php:171]
#69 Magento\Framework\View\Result\Layout->renderResult() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#70 Magento\Framework\View\Result\Page\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#71 Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#72 Magento\Framework\View\Result\Page\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/Result/Page/Interceptor.php:95]
#73 Magento\Framework\View\Result\Page\Interceptor->renderResult() called at [vendor/magento/framework/App/Http.php:120]
#74 Magento\Framework\App\Http->launch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#75 Magento\Framework\App\Http\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#76 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/module-application-performance-monitor/Plugin/ApplicationPerformanceMonitor.php:38]
#77 Magento\ApplicationPerformanceMonitor\Plugin\ApplicationPerformanceMonitor->aroundLaunch() called at [vendor/magento/framework/Interception/Interceptor.php:135]
#78 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/msp/adminrestriction/Plugin/AppInterfacePlugin.php:138]
#79 MSP\AdminRestriction\Plugin\AppInterfacePlugin->aroundLaunch() called at [vendor/magento/framework/Interception/Interceptor.php:135]
#80 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#81 Magento\Framework\App\Http\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:23]
#82 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:264]
#83 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:107]
The text was updated successfully, but these errors were encountered:
Frank-Magmodules
changed the title
Mollie module breaks the checkout after installation
Mollie module breaks the checkout after installation if the API Keys are not configured.
Nov 28, 2024
Thank you for opening this issue! We’ve already prepared a solution that will be included in the upcoming release on Monday. I’ll follow up on this ticket as soon as the plugin is released.
Looking ahead, we’re adjusting our release process slightly. Starting next week, we’ll push Pull Requests to this repository immediately after they’re finalized on our end. This way, if needed, you’ll have the option to grab the PR directly without waiting for the official release.
I’ll keep this issue open for now and update you once the version with the fix is available.
Thanks again for bringing this to our attention!
I've run into the same issue, lucky we have staging sites before release anything to production.
Imho, you should fix your integration tests, as it seems they do not test if the API keys are not defined
As you may have noticed, we addressed this issue in the latest release.
Thank you for bringing it to our attention and for sharing the detailed debug report—it was a big help!
We also took @jakwinkler’s feedback into account and added an integration test to prevent similar issues in the future.
I’ll go ahead and close this issue for now, but feel free to comment or reopen it if needed.
Describe the bug
After installing Mollie payment module on Magento it breaks rendering checkout JSON configuration when the API key is not provided, even though the module is disabled in admin.
Used versions
To Reproduce
Prerequisites:
DELETE FROM core_config_data WHERE path in ('payment/mollie_general/apikey_test', 'payment/mollie_general/apikey_live');
to mimic vanilla installation.Steps to reproduce the behavior:
Expected behavior
The checkout page is rendered and the customer can proceed to the next step.
Actual behavior
The checkout page doesn't render correctly, there's only header and footer, but no content.
Additional context
During rendering the checkout config by
Magento\Checkout\Model\CompositeConfigProvider->getConfig()
method Mollie module throws an exception, which breaks the whole process. Stack trace:The text was updated successfully, but these errors were encountered: