Comments (6)
At first I thought this was a bug. But I can't really reproduce it in a freshly installed Mage 2.1.7, mainly because I can't find the "Show all articles" link you described.
As a background, why we introduced this change: Mage 2.2 doesn't allow serialized values anymore and prefers json, while we used serialized values in our plugin prior to Mage 2.2 compatibility. However, I'm not quite sure why our module is getting active in the stage you're describing. Do you maybe have a complete stacktrace?
from magento-2.
Sorry, with "Show all articles" i mean checkout/cart.
I sent you a complete stacktrace in a private mail ([email protected])
Thank you
from magento-2.
I have that issue too. A fresh completely untouched installation of Payone 2.0.2 (dc9ff4e) on Magento 2.1.10, PHP 7.0. Added an article to the cart and called /checkout/cart
.
The stack trace is as follows:
Exception #0 (Exception): Notice: unserialize(): Error at offset 0 of 751 bytes in /var/www/magento/vendor/payone-gmbh/magento-2/Helper/Base.php on line 139
#0 [internal function]: Magento\Framework\App\ErrorHandler->handler(8, 'unserialize(): ...', '/var/www/magent...', 139, Array)
#1 /var/www/magento/vendor/payone-gmbh/magento-2/Helper/Base.php(139): unserialize('{"Number_type":...')
#2 /var/www/magento/vendor/payone-gmbh/magento-2/Helper/HostedIframe.php(84): Payone\Core\Helper\Base->unserialize('{"Number_type":...')
#3 /var/www/magento/vendor/payone-gmbh/magento-2/Helper/HostedIframe.php(165): Payone\Core\Helper\HostedIframe->getHostedParams()
#4 /var/www/magento/vendor/payone-gmbh/magento-2/Model/ConfigProvider.php(195): Payone\Core\Helper\HostedIframe->getHostedFieldConfig()
#5 /var/www/magento/vendor/payone-gmbh/magento-2/Model/ConfigProvider.php(234): Payone\Core\Model\ConfigProvider->getPayoneConfig()
#6 /var/www/magento/vendor/magento/module-checkout/Model/CompositeConfigProvider.php(32): Payone\Core\Model\ConfigProvider->getConfig()
#7 /var/www/magento/vendor/magento/module-checkout/Block/Cart/Shipping.php(54): Magento\Checkout\Model\CompositeConfigProvider->getConfig()
#8 /var/www/magento/vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml(28): Magento\Checkout\Block\Cart\Shipping->getCheckoutConfig()
#9 /var/www/magento/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/var/www/magent...')
#10 /var/www/magento/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Checkout\Block\Cart\Shipping), '/var/www/magent...', Array)
#11 /var/www/magento/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/var/www/magent...')
#12 /var/www/magento/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Framework\View\Element\Template->_toHtml()
#13 /var/www/magento/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#14 /var/www/magento/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('checkout.cart.s...')
#15 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('checkout.cart.s...')
#16 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('checkout.cart.s...')
#17 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('checkout.cart.s...', true)
#18 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('checkout.cart.s...')
#19 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('cart.summary')
#20 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('cart.summary')
#21 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('cart.summary')
#22 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('cart.summary', true)
#23 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('cart.summary')
#24 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('checkout.cart.c...')
#25 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('checkout.cart.c...')
#26 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('checkout.cart.c...')
#27 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('checkout.cart.c...', true)
#28 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('checkout.cart.c...')
#29 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('checkout.cart.i...')
#30 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('checkout.cart.i...')
#31 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('checkout.cart.i...')
#32 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('checkout.cart.i...', true)
#33 /var/www/magento/vendor/magento/framework/View/Element/AbstractBlock.php(499): Magento\Framework\View\Layout\Interceptor->renderElement('checkout.cart.i...', true)
#34 /var/www/magento/vendor/magento/module-checkout/view/frontend/templates/cart.phtml(15): Magento\Framework\View\Element\AbstractBlock->getChildHtml('with-items')
#35 /var/www/magento/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/var/www/magent...')
#36 /var/www/magento/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Checkout\Block\Cart), '/var/www/magent...', Array)
#37 /var/www/magento/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/var/www/magent...')
#38 /var/www/magento/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Framework\View\Element\Template->_toHtml()
#39 /var/www/magento/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#40 /var/www/magento/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('checkout.cart')
#41 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('checkout.cart')
#42 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('checkout.cart')
#43 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('checkout.cart', true)
#44 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('checkout.cart')
#45 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('content')
#46 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('content')
#47 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('content')
#48 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('content', true)
#49 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('content')
#50 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('main')
#51 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('main')
#52 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main')
#53 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('main', true)
#54 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('main')
#55 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('columns')
#56 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('columns')
#57 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('columns')
#58 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('columns', true)
#59 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('columns')
#60 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('main.content')
#61 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('main.content')
#62 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main.content')
#63 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('main.content', true)
#64 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('main.content')
#65 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.wrapper')
#66 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#67 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#68 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('page.wrapper', true)
#69 /var/www/magento/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper')
#70 /var/www/magento/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('root')
#71 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('root')
#72 /var/www/magento/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#73 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('root', true)
#74 /var/www/magento/vendor/magento/framework/View/Layout.php(938): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#75 /var/www/magento/vendor/magento/framework/Interception/Interceptor.php(146): Magento\Framework\View\Layout->getOutput()
#76 /var/www/magento/var/generation/Magento/Framework/View/Layout/Interceptor.php(494): Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput', Array, Array)
#77 /var/www/magento/vendor/magento/framework/View/Result/Page.php(243): Magento\Framework\View\Layout\Interceptor->getOutput()
#78 /var/www/magento/vendor/magento/framework/View/Result/Layout.php(164): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#79 /var/www/magento/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#80 /var/www/magento/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array)
#81 /var/www/magento/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-varnish-...')
#82 /var/www/magento/vendor/magento/module-page-cache/Model/Controller/Result/VarnishPlugin.php(74): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#83 /var/www/magento/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\PageCache\Model\Controller\Result\VarnishPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor))
#84 /var/www/magento/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-builtin-...')
#85 /var/www/magento/vendor/magento/module-page-cache/Model/Controller/Result/BuiltinPlugin.php(67): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#86 /var/www/magento/vendor/magento/framework/Interception/Interceptor.php(142): Magento\PageCache\Model\Controller\Result\BuiltinPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor))
#87 /var/www/magento/var/generation/Magento/Framework/View/Result/Page/Interceptor.php(130): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#88 /var/www/magento/vendor/magento/framework/App/Http.php(139): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#89 /var/www/magento/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#90 /var/www/magento/pub/index.php(37): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#91 {main}
Tracing with xdebug led me to some more information: the full value in #1
is {"Number_type":"tel","Number_count":"30","Number_max":"16","Number_iframe":"standard","Number_style":"standard","CVC_type":"tel","CVC_count":"30","CVC_max":"4","CVC_iframe":"standard","CVC_style":"standard","Month_type":"select","Month_count":"3","Month_max":"2","Month_iframe":"custom","Month_width":"120px","Month_height":"20px","Month_style":"standard","Year_type":"select","Year_count":"5","Year_max":"4","Year_iframe":"custom","Year_width":"120px","Year_height":"20px","Year_style":"standard","Standard_input":"width:223px;height:30px;padding: 0 9px;font-size:14px;font-family:'Helvetica Neue',Verdana,Arial,sans-serif;","Standard_selection":"width:100px;","Iframe_width":"365px","Iframe_height":"30px","Errors_active":"false","Errors_lang":"de"}
and is loaded from config creditcard/cc_template
in getHostedParams
(#3
). Then it is tried to be unserialized with the PHP function unserialize
, but not json_decode
, since the Magento version is less than 2.2.0, which leads to the (notice) exception.
That renders the Payone extension unusable, I have no idea how to fix or work-around that.
from magento-2.
@nixn As a workaround you can patch Helper/Base.php
to always use json_decode()
instead of unserialize()
:
/**
* Handle the serialization of strings depending on the Magento version
*
* @param mixed $mValue
* @return string
*/
public function serialize($mValue) {
return json_encode($mValue);
}
/**
* @param string $sValue
* @return mixed
*/
public function unserialize($sValue) {
return json_decode($sValue, true);
}
This is not ideal and we'll take a look why the data is stored in json in the database the first place.
from magento-2.
Thanks for your hint, I've written a plugin to override these two methods:
<?php
namespace Vendor\Module\Plugin;
use Payone\Core\Helper\Base;
class HelperBase
{
public function aroundSerialize(Base $subject, callable $proceed, $mValue)
{
return json_encode($mValue);
}
public function aroundUnserialize(Base $subject, callable $proceed, $sValue)
{
if (preg_match('/^[a-z][:;]/i', $sValue))
return unserialize($sValue);
return json_decode($sValue, true);
}
}
I'm using this plugin for Helper\HostedIframe
only, but it could be used for every class deriving from Helper\Base
. I did not had any other wrong calls for this yet, so it's sufficient for now.
di.xml
:
<config>
<type name="Payone\Core\Helper\HostedIframe">
<plugin name="JsonFix" type="Vendor\Module\Plugin\HelperBase" />
</type>
</config>
from magento-2.
Can any of you confirm that #144 fixes this issue? Basically, we don't really care anymore whether the objects were saved with serialize()
or as JSON.
from magento-2.
Related Issues (20)
- Magento2 dont have option to map paid to processing HOT 1
- Facing multiple issue after integrate payone HOT 3
- Facing multiple issue after integrate payone HOT 1
- PayOne ApplePay compatibility with Magento Cloud HOT 2
- Adding PHP 8.2 support for Magento 2.4.6 release HOT 1
- deprecated _isScopePrivate in Totals.php HOT 3
- Credit card payment after canceling payment process still authorized and order status processing HOT 2
- Add compatibility to PHP 8.2 HOT 2
- Cannot checkout with PayPal Express HOT 6
- Version 3.8.1 : Deprecated Functionality: Function utf8_encode() HOT 8
- Version 3.8.1: Deprecated Functionality: Creation of dynamic property HOT 3
- PayPal Express Button does not respect Minimal Order Amount HOT 1
- Error 923 Payment type not available for this currency or card type Set correct currency, type of payment, type of card, type of account or portalid HOT 3
- Errorcode 1610 - probably rounding error in calculation of order amount HOT 1
- Issue with canceled orders HOT 1
- Random paypal/creditcard orders stuck in status "processing" HOT 1
- Comply with strict CSP ruling in Magento Checkout HOT 2
- Cannot modify readonly property Magento\Framework\HTTP\PhpEnvironment\RemoteAddress::$alternativeHeaders HOT 3
- Support of PHP 8.3 HOT 2
- Error 1380 because HTTP_X_FORWARDED_FOR is not handled correctly
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from magento-2.