Skip to content

Commit 78f04a7

Browse files
fix: scope PaymentManagement DI to frontend/webapi_rest to prevent EE admin crash
The PaymentManagementInterface preference was registered in the global etc/di.xml, making its implementation (PaymentManagement) resolvable in all areas including admin. PaymentManagement depends on Magento\Checkout\Model\Session — a frontend-only session class that cannot be properly instantiated in the admin area. On Adobe Commerce EE 2.4.8, the admin "Create New Order" page triggers resolution of this dependency chain, causing a PHP exception that crashes the entire page (6 MFTF test failures). Changes: - Move PaymentManagementInterface preference from global di.xml to etc/frontend/di.xml and etc/webapi_rest/di.xml - Inject Checkout\Session via Proxy to defer instantiation until actually needed (defense in depth) - Bump version to 3.0.5
1 parent b8e9cab commit 78f04a7

5 files changed

Lines changed: 21 additions & 7 deletions

File tree

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "pstk/paystack-magento2-module",
33
"description": "Paystack Magento2 Module using \\Magento\\Payment\\Model\\Method\\AbstractMethod",
4-
"version": "3.0.4",
4+
"version": "3.0.5",
55
"require": {},
66
"type": "magento2-module",
77
"license": [

etc/di.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
3-
4-
<!-- API -->
5-
<preference for="Pstk\Paystack\Api\PaymentManagementInterface" type="Pstk\Paystack\Model\PaymentManagement"/>
6-
73

84
</config>

etc/frontend/di.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
3+
<!-- Payment verify API (frontend + webapi_rest only — never in admin) -->
4+
<preference for="Pstk\Paystack\Api\PaymentManagementInterface" type="Pstk\Paystack\Model\PaymentManagement"/>
5+
<type name="Pstk\Paystack\Model\PaymentManagement">
6+
<arguments>
7+
<argument name="checkoutSession" xsi:type="object">Magento\Checkout\Model\Session\Proxy</argument>
8+
</arguments>
9+
</type>
10+
311
<type name="Magento\Checkout\Model\CompositeConfigProvider">
412
<arguments>
513
<argument name="configProviders" xsi:type="array">
@@ -11,7 +19,7 @@
1119
<plugin name="csrf_validator_skip" type="Pstk\Paystack\Plugin\CsrfValidatorSkip" />
1220
</type>
1321

14-
<!-- CSP: register Paystack domains via PHP collector (frontend only - Paystack is not used in admin) -->
22+
<!-- CSP: register Paystack domains via PHP collector (frontend only Paystack is not used in admin) -->
1523
<type name="Magento\Csp\Model\CompositePolicyCollector">
1624
<arguments>
1725
<argument name="collectors" xsi:type="array">

etc/module.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
3-
<module name="Pstk_Paystack" setup_version="3.0.4">
3+
<module name="Pstk_Paystack" setup_version="3.0.5">
44
<sequence>
55
<module name="Magento_Sales"/>
66
<module name="Magento_Payment"/>

etc/webapi_rest/di.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
3+
<!-- Payment verify API for REST calls -->
4+
<preference for="Pstk\Paystack\Api\PaymentManagementInterface" type="Pstk\Paystack\Model\PaymentManagement"/>
5+
<type name="Pstk\Paystack\Model\PaymentManagement">
6+
<arguments>
7+
<argument name="checkoutSession" xsi:type="object">Magento\Checkout\Model\Session\Proxy</argument>
8+
</arguments>
9+
</type>
10+
</config>

0 commit comments

Comments
 (0)