gpt4 book ai didi

Magento "Quote Totals must be collected"由于原型(prototype) Form.serizalize 结帐失败导致异常

转载 作者:行者123 更新时间:2023-12-03 23:51:06 25 4
gpt4 key购买 nike

一个间歇性且看似随机的错误正在影响至少三个不同站点上的 Magento 结帐。 Magento 论坛上有许多关于此主题的主题,但有一些不好的建议(吞下异常(exception))。这个问题导致了销售损失,并给网站所有者带来了很多挫败感。自 2011 年 3 月 (http://www.magentocommerce.com/bug-tracking/issue/?issue=11081) 以来,Magento 已记录了此问题。

付款方式、浏览器、Magento 版本或我们试图关联的其他因素中没有任何模式。主要症状是记录在 var/log/exception.log 中的异常,其中指出“必须收集报价总计”,该异常被抛出 Mage_Sales_Model_Quote::prepareRecurringPaymentProfiles()。 .

我们记录了异常发生时的请求参数,并确定 payment参数为空。我们认为 Magento 在客户单击下订单时从付款步骤重新发送表单元素(因此信用卡详细信息不会在 AJAX 请求之间保留在网站上),并且表单序列化失败并返回 null/empty,然后 opcheckout.js 代码将其传递给 PHP 以触发异常。

你能建议什么条件或数据会导致原型(prototype)的Form.serialize吗?以这种方式失败的方法和/或如何进一步解决问题?

最佳答案

实际上,可能的原因很少。

原型(prototype)Form.serialize()方法正在使用同一类中的另一个方法,称为 Form.getElements() .您也可以尝试以下代码,看看从 payment.form 对象传递了哪些元素。只需覆盖 review.save()运行时用于调试目的的方法。

您可以将以下代码粘贴到您喜欢的浏览器(Chrome、Firefox 或 Safari)的控制台中:

review.save = review.save.wrap(function (originalMethod) {
console.log(payment.form); // Check what is in the form object
console.log(Form.getElements(payment.form)); // Check what items are returned for serializing
originalMethod(); // Calling original place order functionality to see if the issue occurs, so you can compare above debug info
});

我认为它将帮助您找出序列化过程的问题。付款表格可能以某种方式变空,或者表格中的所有项目都被禁用等等......

真挚地,
伊万

关于Magento "Quote Totals must be collected"由于原型(prototype) Form.serizalize 结帐失败导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com