2

我在使用 Paypal Express 的 Onepage 结帐时遇到了一个奇怪的错误。

登录的客户“即时”输入新的账单地址,设置“保存在地址簿”和“运送到该地址”,然后进行结账。

此时地址已正确保存在数据库中。

客户选择 Paypal,Magento 会执行其逻辑(收集总计、保存报价 - 两次和数据检查等)。

我已经使用 Xdebug 逐步完成了逻辑,但在 afterSave() 回调的第 318 行的 /app/code/core/Mage/Sales/Model/Quote.php 中重定向到 Paypal 之前,我无法准确定位,有一条线

if (null !== $this->_addresses) {
    $this->getAddressesCollection()->save();
}

在 $this->getAddressesCollection() 中,账单地址和送货地址是错误的,它们都是客户的默认值。但是,数据库仍然是正确的。

一旦 ->save() 触发,正确的将被覆盖。

它肯定似乎是 Magento 错误,但我需要找到解决方案。这是 EE 1.11.1.0。

以前有人经历过吗?

谢谢

4

2 回答 2

0

我有一个类似的错误,也许它和你一样。如果您在地址簿中选择一个地址作为您的默认地址,则会破坏一页结帐。

假设我的通讯录中有 3 个人:John、Suzy 和 Bill。

有一天,我碰巧在我的通讯录中,我选择约翰作为我的默认账单和送货地址。然后我去我的购物车,订购一些物品,选择约翰作为账单,然后选择运送到不同的地址。在下一步中,我选择 Suzy 作为我的地址。我单击下一步转到运输方式步骤,但是哇,等等!Suzy 的地址已被覆盖并替换为 Johns 的地址。

它与这里发布的完全相同的问题(虽然我认为这家伙不明白发生了什么,但截图是相同的结果): http: //www.magentocommerce.com/boards/viewthread/7520/P0/

问题出在 opcheckout.js 文件中。我有一个修复。基本上,一旦选择了默认地址,添加新地址表单(隐藏表单)总是会填充您的默认地址。

通常,如果没有在地址簿中选择默认地址,我相信 opcheckout.js 会使用您在选择框中选择的地址正确填写隐藏字段。

以下修改的 opcheckout.js 脚本:( http://pastebin.com/chiwyRJZ ) 将修复它,以便隐藏字段正确填充正确的数据。据我了解,这是一个未修复的旧错误,可能来自 Magento 在单页结帐中添加“添加新地址”表单的任何版本

要应用修复,请从粘贴箱复制代码并将其替换为主题 opcheckout.js 中的代码

通常 opcheckout.js 在 skin\frontend\default\yourtheme\js

或者

\skin\frontend\base\default\js

于 2014-12-30T18:31:54.403 回答
-2

我知道发布这个为时已晚,但我在 Magento 1.9.x 上遇到了这个问题。不仅在贝宝上,而且在所有其他付款方式上。

检查这个方法,女巫在创建新报价时调用:

public function assignCustomerWithAddressChange
于 2018-05-10T11:15:31.417 回答