13

一个间歇性且看似随机的错误正在影响至少三个不同站点上的 Magento 结帐。Magento 论坛上有许多关于此主题的主题,但有一些不好的建议(吞下例外)。该问题导致销售损失,并导致网站所有者非常沮丧。自 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 以触发异常。

您能否建议哪些条件或数据会导致原型Form.serialize方法以这种方式失败和/或如何进一步解决该问题?

4

2 回答 2

9

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

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
});

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

真诚的,伊万

于 2012-12-08T13:45:09.453 回答
1

我遇到了类似的问题。要通过简单的步骤解决此问题,请打开数据库,现在数据库 << table 'core_config_data' 并将路径 'design/email/header' 和 'design/email/footer' 的值从 '2' 更改为 '0'。

结帐流程现在可以正常工作......为我工作!

于 2016-02-02T16:59:27.353 回答