gpt4 book ai didi

Magento 交易错误 "Please specify a shipping method"

转载 作者:行者123 更新时间:2023-12-04 12:59:28 25 4
gpt4 key购买 nike

我们使用 Templates Master 的自定义结帐扩展程序,称为“Firecheckout”。不确定这是否相关,但我想我应该提到它。有时我会看到一封交易失败的电子邮件,原因是“请指定送货方式”。我花了很长时间试图找出这是如何发生的,我迷路了。我已经尝试了我能想到的一切来复制这个问题。根据我所做的事情的组合(从购物车中添加/删除商品,添加/删除更改运输选项的优惠券代码,在移动和桌面网站之间切换等)我已经能够做到结帐页面没有'没有选择运输方式的选项。但是,如果我尝试提交订单,我会在运输方式部分立即收到一条红色消息,上面写着“请指定运输方式”(请注意电子邮件中的内容与页面上显示的错误中的内容之间的差异...缺少“a”)。这不会导致错误电子邮件。

搜索代码我发现错误邮件是在 中触发的。 TM_FireCheckout_Model_Service_Quote (扩展 Mage_Sales_Model_Service_Quote ) 中的类_验证 方法

$method= $address->getShippingMethod();
$rate = $address->getShippingRateByCode($method);
if (!$this->getQuote()->isVirtual() && (!$method || !$rate)) {
Mage::throwException($helper->__('Please specify a shipping method.'));
}

在这种情况下,我猜是 $方法 $率 为空或假,但为什么/怎么可能?我能做些什么来确保这永远不会发生吗? FireCheckout 的 之间的唯一区别_验证 方法和父类的 _验证 方法是在哪些字段被认为是必需的。它不会以任何方式改变地址对象,因此对 的后续调用getShippingMethod getShippingRateByCode 应该与默认安装相同。

如有必要,我可以提供更多详细信息。我基本上是在尝试了解可能触发该错误的原因以及如何重现它,以便最终修补导致该错误的漏洞。

谢谢!

最佳答案

我以前遇到过类似的事情,但不是 Firecheckout。但它也是来自 Apptha 的 Onestepcheckout 扩展,例如 @Lennon。长话短说,是 javascript 处理中的差异破坏了数据。我没有明确的答案给你,但我建议你看看在表单验证和结帐表单上的数据保存之间发生了什么。

你可以做的开始调查是在 FF 上启动 Firebug,观察控制台,看看你的数据是否仍在传递。您还可以在 controler_action_predispatch 创建一个简单的观察者模块来执行以下操作。事件:

$request = $observer->getControllerAction()->getRequest();
Mage::log(var_export($request->getParams(),true));

..或者直接在结帐 route 编辑 Controller 文件。任何漂浮你的船。

启用日志和 tail -f var/logs/system.log .您应该确保请求与日志匹配。这就是我开始解决问题的方式。

同样,这不是针对问题根源的“copypasta”修复或教程,而是分享我如何根据第一手经验诊断问题的经验。

您可以在 http://www.silksoftware.com/magento-module-creator 上快速创建模块

关于Magento 交易错误 "Please specify a shipping method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389591/

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