什么可能导致 Magento 在 Paypal 重定向时将新地址更改回默认地址?
Posted
技术标签:
【中文标题】什么可能导致 Magento 在 Paypal 重定向时将新地址更改回默认地址?【英文标题】:What could cause Magento to change new address back to default address on Paypal redirect? 【发布时间】:2013-08-06 11:01:51 【问题描述】:我在使用 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。
以前有人经历过吗?
谢谢
【问题讨论】:
您找到造成这种情况的原因了吗?我刚刚遇到了完全相同的问题。 【参考方案1】:我有一个类似的错误,也许它和你一样。如果您在地址簿中选择一个地址作为您的默认地址,它会搞砸一页结帐。
假设我的通讯录中有 3 个人:John、Suzy 和 Bill。
有一天,我碰巧在我的通讯录中,我选择 John 作为我的默认帐单和送货地址。然后我去我的购物车,订购一些物品,选择约翰作为账单,然后选择运送到不同的地址。在下一步中,我选择 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
【讨论】:
【参考方案2】:我知道现在发布这个为时已晚,但我在 Magento 1.9.x 上遇到了这个问题。不仅在贝宝上,而且在所有其他付款方式上。
在创建新报价时检查这个方法:
public function assignCustomerWithAddressChange
【讨论】:
以上是关于什么可能导致 Magento 在 Paypal 重定向时将新地址更改回默认地址?的主要内容,如果未能解决你的问题,请参考以下文章
Magento:支付完成后,paypal 标准支付未重定向到 Magento 成功页面
Magento 使用 PayPal 处理信用卡而不重定向到 PayPal
使用带有 paypal 支付专业版的信用卡时,Magento 不会重定向,但 express 选项重定向很好