eWAYPayment / eway-rapid-php

Eway Rapid PHP library
https://www.eway.com.au
MIT License
14 stars 24 forks source link

Critical Error - Sporadic checkout issues, error thrown referencing Eway SavedTokens #25

Open studio48internet opened 2 years ago

studio48internet commented 2 years ago

Hi

We're currently running Magento 2.4.3-p1 with Eway 3.1 and are having sporadic checkout issues. This affects all payment types, but the error appears to reference an issue with the extension:

`[2022-07-04 05:34:09] main.CRITICAL: TypeError: explode() expects parameter 2 to be string, object given in /.../public_html/vendor/magento/framework/Encryption/Encryptor.php:416
Stack trace:
#0 /.../public_html/vendor/magento/framework/Encryption/Encryptor.php(416): explode(':', Object(Eway\EwayRapid\Model\Customer\SavedTokens), 4)
#1 /.../public_html/vendor/eway/eway-rapid-magento2/Model/Customer/Token/Backend.php(67): Magento\Framework\Encryption\Encryptor->decrypt(Object(Eway\EwayRapid\Model\Customer\SavedTokens))
#2 [internal function]: Eway\EwayRapid\Model\Customer\Token\Backend->afterLoad(Object(Magento\Customer\Model\Customer\Interceptor))
#3 /.../public_html/vendor/magento/module-eav/Model/Entity/AbstractEntity.php(680): call_user_func_array(Array, Array)
#4 /.../public_html/vendor/magento/module-eav/Model/Entity/AbstractEntity.php(1821): Magento\Eav\Model\Entity\AbstractEntity->walkAttributes('backend/afterLo...', Array)
#5 /.../public_html/vendor/magento/module-eav/Model/Entity/VersionControl/AbstractEntity.php(48): Magento\Eav\Model\Entity\AbstractEntity->_afterLoad(Object(Magento\Customer\Model\Customer\Interceptor))
#6 /.../public_html/vendor/magento/module-eav/Model/Entity/AbstractEntity.php(1004): Magento\Eav\Model\Entity\VersionControl\AbstractEntity->_afterLoad(Object(Magento\Customer\Model\Customer\Interceptor))
#7 /.../public_html/vendor/magento/framework/Model/AbstractModel.php(540): Magento\Eav\Model\Entity\AbstractEntity->load(Object(Magento\Customer\Model\Customer\Interceptor), 7202, NULL)
#8 /.../public_html/app/code/Magedelight/Giftcard/Observer/Frontend/PlaceProductOrder.php(140): Magento\Framework\Model\AbstractModel->load(7202)
#9 /.../public_html/vendor/magento/framework/Event/Invoker/InvokerDefault.php(88): Magedelight\Giftcard\Observer\Frontend\PlaceProductOrder->execute(Object(Magento\Framework\Event\Observer))
#10 /.../public_html/vendor/magento/framework/Event/Invoker/InvokerDefault.php(74): Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod(Object(Magedelight\Giftcard\Observer\Frontend\PlaceProductOrder), Object(Magento\Framework\Event\Observer))
#11 /.../public_html/vendor/magento/framework/Event/Manager.php(66): Magento\Framework\Event\Invoker\InvokerDefault->dispatch(Array, Object(Magento\Framework\Event\Observer))
#12 /.../public_html/generated/code/Magento/Framework/Event/Manager/Proxy.php(95): Magento\Framework\Event\Manager->dispatch('sales_order_pla...', Array)
#13 /.../public_html/vendor/magento/module-sales/Model/Order.php(1215): Magento\Framework\Event\Manager\Proxy->dispatch('sales_order_pla...', Array)
#14 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Sales\Model\Order->place()
#15 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Sales\Model\Order\Interceptor->___callParent('place', Array)
#16 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Sales\Model\Order\Interceptor->Magento\Framework\Interception\{closure}()
#17 /.../public_html/generated/code/Magento/Sales/Model/Order/Interceptor.php(32): Magento\Sales\Model\Order\Interceptor->___callPlugins('place', Array, Array)
#18 /.../public_html/vendor/magento/module-sales/Model/Service/OrderService.php(209): Magento\Sales\Model\Order\Interceptor->place()
#19 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Sales\Model\Service\OrderService->place(Object(Magento\Sales\Model\Order\Interceptor))
#20 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Sales\Model\Service\OrderService\Interceptor->___callParent('place', Array)
#21 /.../public_html/vendor/xtento/orderexport/Plugin/OrderServicePlugin.php(46): Magento\Sales\Model\Service\OrderService\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Sales\Model\Order\Interceptor))
#22 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(135): Xtento\OrderExport\Plugin\OrderServicePlugin->aroundPlace(Object(Magento\Sales\Model\Service\OrderService\Interceptor), Object(Closure), Object(Magento\Sales\Model\Order\Interceptor))
#23 /.../public_html/vendor/magento/module-inventory-sales/Plugin/Sales/OrderManagement/AppendReservationsAfterOrderPlacementPlugin.php(195): Magento\Sales\Model\Service\OrderService\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Sales\Model\Order\Interceptor))
#24 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(135): Magento\InventorySales\Plugin\Sales\OrderManagement\AppendReservationsAfterOrderPlacementPlugin->aroundPlace(Object(Magento\Sales\Model\Service\OrderService\Interceptor), Object(Closure), Object(Magento\Sales\Model\Order\Interceptor))
#25 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Sales\Model\Service\OrderService\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Sales\Model\Order\Interceptor))
#26 /.../public_html/generated/code/Magento/Sales/Model/Service/OrderService/Interceptor.php(32): Magento\Sales\Model\Service\OrderService\Interceptor->___callPlugins('place', Array, NULL)
#27 /.../public_html/vendor/magento/module-quote/Model/QuoteManagement.php(575): Magento\Sales\Model\Service\OrderService\Interceptor->place(Object(Magento\Sales\Model\Order\Interceptor))
#28 /.../public_html/vendor/magento/module-quote/Model/QuoteManagement.php(456): Magento\Quote\Model\QuoteManagement->submitQuote(Object(Magento\Quote\Model\Quote\Interceptor), Array)
#29 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Quote\Model\QuoteManagement->submit(Object(Magento\Quote\Model\Quote\Interceptor))
#30 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Quote\Model\QuoteManagement\Interceptor->___callParent('submit', Array)
#31 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Quote\Model\QuoteManagement\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Quote\Model\Quote\Interceptor))
#32 /.../public_html/generated/code/Magento/Quote/Model/QuoteManagement/Interceptor.php(23): Magento\Quote\Model\QuoteManagement\Interceptor->___callPlugins('submit', Array, Array)
#33 /.../public_html/vendor/magento/module-quote/Model/QuoteManagement.php(414): Magento\Quote\Model\QuoteManagement\Interceptor->submit(Object(Magento\Quote\Model\Quote\Interceptor))
#34 /.../public_html/vendor/magento/module-checkout/Model/PaymentInformationManagement.php(125): Magento\Quote\Model\QuoteManagement->placeOrder(65090)
#35 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Checkout\Model\PaymentInformationManagement->savePaymentInformationAndPlaceOrder(65090, Object(Magento\Quote\Model\Quote\Payment\Interceptor), Object(Magento\Quote\Model\Quote\Address\Interceptor))
#36 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Checkout\Model\PaymentInformationManagement\Interceptor->___callParent('savePaymentInfo...', Array)
#37 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Checkout\Model\PaymentInformationManagement\Interceptor->Magento\Framework\Interception\{closure}(65090, Object(Magento\Quote\Model\Quote\Payment\Interceptor), Object(Magento\Quote\Model\Quote\Address\Interceptor))
#38 /.../public_html/generated/code/Magento/Checkout/Model/PaymentInformationManagement/Interceptor.php(23): Magento\Checkout\Model\PaymentInformationManagement\Interceptor->___callPlugins('savePaymentInfo...', Array, Array)
#39 [internal function]: Magento\Checkout\Model\PaymentInformationManagement\Interceptor->savePaymentInformationAndPlaceOrder(65090, Object(Magento\Quote\Model\Quote\Payment\Interceptor), Object(Magento\Quote\Model\Quote\Address\Interceptor))
#40 /.../public_html/vendor/magento/module-webapi/Controller/Rest/SynchronousRequestProcessor.php(95): call_user_func_array(Array, Array)
#41 /.../public_html/vendor/magento/module-webapi/Controller/Rest.php(188): Magento\Webapi\Controller\Rest\SynchronousRequestProcessor->process(Object(Magento\Framework\Webapi\Rest\Request\Proxy))
#42 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Webapi\Controller\Rest->dispatch(Object(Magento\Framework\App\Request\Http))
#43 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Webapi\Controller\Rest\Interceptor->___callParent('dispatch', Array)
#44 /.../public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Webapi\Controller\Rest\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#45 /.../public_html/generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(23): Magento\Webapi\Controller\Rest\Interceptor->___callPlugins('dispatch', Array, Array)
#46 /.../public_html/vendor/magento/framework/App/Http.php(116): Magento\Webapi\Controller\Rest\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#47 /.../public_html/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http->launch()
#48 /.../public_html/vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#49 /.../public_html/pub/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#50 {main} [] []

Frustratingly it doesn't do this consistently - perhaps one in twenty transactions or so. The result is that the customer sees an error along the lines of the order wasn't successful, but in reality the payment was successful and appears in the quote_payment table but the above presumably breaks the sales order creation and the result is a "ghost" order.

Is this a bug with the Eway extension? Any advice appreciated.

Cheers John