paynl / magento2-plugin

The Pay. plugin for Magento 2
https://www.pay.nl
27 stars 31 forks source link

Unable to load paylink_email_order_template #197

Closed reense closed 5 months ago

reense commented 5 months ago

Hello!

When I try to load the paylink_email_order_template in while creating a new template, I get the following message in a popup modal: The template did not load. Please review the log for details.

When I review the logfile, I am greeted with the following stacktrace:

[2024-03-21T07:37:49.141662+00:00] .CRITICAL: InvalidArgumentException: Unable to unserialize value. Error: Syntax error in /data/web/releases/releases/release/vendor/magento/framework/Serialize/Serializer/Json.php:45
Stack trace:
#0 /data/web/releases/releases/release/vendor/magento/module-email/Model/Template.php(310): Magento\Framework\Serialize\Serializer\Json->unserialize()
#1 /data/web/releases/releases/release/vendor/magento/module-email/Model/Template.php(324): Magento\Email\Model\Template->_parseVariablesString()
#2 /data/web/releases/releases/release/vendor/magento/module-email/Controller/Adminhtml/Email/Template/DefaultTemplate.php(65): Magento\Email\Model\Template->getVariablesOptionArray()
#3 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate->execute()
#4 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->___callParent()
#5 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->Magento\Framework\Interception\{closure}()
#6 /data/web/releases/releases/release/generated/code/Magento/Email/Controller/Adminhtml/Email/Template/DefaultTemplate/Interceptor.php(23): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->___callPlugins()
#7 /data/web/releases/releases/release/vendor/magento/framework/App/Action/Action.php(111): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->execute()
#8 /data/web/releases/releases/release/vendor/magento/module-backend/App/AbstractAction.php(151): Magento\Framework\App\Action\Action->dispatch()
#9 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Backend\App\AbstractAction->dispatch()
#10 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->___callParent()
#11 /data/web/releases/releases/release/vendor/magento/module-backend/App/Action/Plugin/Authentication.php(145): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->Magento\Framework\Interception\{closure}()
#12 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch()
#13 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->Magento\Framework\Interception\{closure}()
#14 /data/web/releases/releases/release/generated/code/Magento/Email/Controller/Adminhtml/Email/Template/DefaultTemplate/Interceptor.php(32): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->___callPlugins()
#15 /data/web/releases/releases/release/vendor/magento/framework/App/FrontController.php(245): Magento\Email\Controller\Adminhtml\Email\Template\DefaultTemplate\Interceptor->dispatch()
#16 /data/web/releases/releases/release/vendor/magento/framework/App/FrontController.php(212): Magento\Framework\App\FrontController->getActionResponse()
#17 /data/web/releases/releases/release/vendor/magento/framework/App/FrontController.php(147): Magento\Framework\App\FrontController->processRequest()
#18 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch()
#19 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->___callParent()
#20 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#21 /data/web/releases/releases/release/generated/code/Magento/Framework/App/FrontController/Interceptor.php(23): Magento\Framework\App\FrontController\Interceptor->___callPlugins()
#22 /data/web/releases/releases/release/vendor/magento/framework/App/Http.php(116): Magento\Framework\App\FrontController\Interceptor->dispatch()
#23 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\Http->launch()
#24 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\App\Http\Interceptor->___callParent()
#25 /data/web/releases/releases/release/vendor/justbetter/magento2-sentry/Plugin/GlobalExceptionCatcher.php(89): Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}()
#26 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(135): JustBetter\Sentry\Plugin\GlobalExceptionCatcher->aroundLaunch()
#27 /data/web/releases/releases/release/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}()
#28 /data/web/releases/releases/release/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http\Interceptor->___callPlugins()
#29 /data/web/releases/releases/release/vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#30 /data/web/releases/releases/release/pub/index.php(30): Magento\Framework\App\Bootstrap->run()
#31 {main} {"exception":"[object] (InvalidArgumentException(code: 0): Unable to unserialize value. Error: Syntax error at /data/web/releases/releases/release/vendor/magento/framework/Serialize/Serializer/Json.php:45)"} []

When I surround the unserialize() call in \Magento\Email\Model\Template@_parseVariableString, with a try catch, I see that the following string is unparsable:

{"store url=\"\"":"Store Url","skin url=\"images/logo_email.gif\" _area='frontend'":"Email Logo Image"},"var formattedBillingAddress|raw":"Billing Address","var email_customer_note|escape|nl2br":"Email Order Note","var order.increment_id":"Order Id","layout handle=\"sales_email_order_items\" order=$order area=\"frontend\"":"Order Items Grid","var payment_html|raw":"Payment Details","var formattedShippingAddress|raw":"Shipping Address","var order.shipping_description":"Shipping Description","var shipping_msg":"Shipping message","var created_at_formatted":"Order Created At (datetime)","var store.frontend_name":"Store Frontend Name","var store_phone":"Store Phone","var store_email":"Store Email","var store_hours":"Store Hours","var this.getUrl($store,'customer/account/',[_nosid:1])":"Customer Account URL","var is_not_virtual":"Order Type","var order":"Order","var customer_name":"Customer Name""var show_order_in_mail":"show Order",

For the time being, I managed to create the template with the try/catch. It would be nicer though to have the ability to create it the normal way!

Magento version: 2.4.6-p3 PayNL module version: 3.10.0

If there are any questions, please let me know!

woutse commented 5 months ago

Hi, thanks for your message. We'll look into it!

woutse commented 5 months ago

Hi, from our developer: The paylink e-mail templates are only used by our Paylink payment method. This is a payment method solely for backend orders, to send the customer a link to pay the order with.

When using this template with other methods, it will fail to send as it would be missing important variables that are used to create a paylink.

reense commented 5 months ago

@woutse I get that! I'm not trying to do that, purely loading the template in an email template fails.