我在我的Magento店面出现问题,在结帐时向我的商店注册的客户无法完成OnePageCheckout结帐流程。这个错误对我来说很难重现。以下是我收到的错误消息:客户在结帐时注册时,结帐和客户注册失败
付款交易失败提醒
付款交易失败。原因:客户电子邮件是必需的。
支付交易失败提醒
支付交易失败。原因:此客户电子邮件已存在。
我很确定这意味着客户第二次尝试,并且无法完成第二次结帐。
这个错误对我来说很奇怪,原因有两个。首先,这个错误在结帐时不应该发生。由于在一页结帐的验证不允许您使用已存在的电子邮件地址进行注册,因此第二种错误应该是不可能的。如果没有输入电子邮件地址(第一种错误),验证检查也不会让您再进一步。在这两种情况下,最终付款标签似乎是遇到错误的地方,都应该通过JavaScript隐藏。
这怎么可能,一个客户得到一路在那里他们可以点击Place Order按钮,但没有通过注册选项卡上的验证得到筛选了点?
我的猜测是,它可能是导致验证失效的浏览器,并让客户一路走到最后一位。
当我说这个错误是“罕见的”,我的意思是它发生在1000次订单中的2次。
我很确定它在报价转换为订单时发生。在订单保存事件中,它将尝试并保存客户,作为交易的一部分,同时还处理付款。我不认为支付网关正在抛出错误,但可能控制权已转交给该类。它最有可能发生在OnePageController.php
文件中调用saveOrderAction()
函数之后。后一个错误在此函数被抛出时,错误被报道这样的堆栈跟踪:
Mage::helper('checkout')->sendPaymentFailedEmail($this->getOnepage()->getQuote(), $e->getMessage());
这是“付款事务失败提醒”电子邮件获取生成哪里。我认为错误必须在这个部分:
$this->getOnepage()->saveOrder();
我该如何去寻找PHP代码中哪里出现这个错误?我该如何纠正这一点,以便我不会失去试图从我那里购买产品的顾客?
我的店面正在运行Magento 1.9.1.1版本。
更新:刚刚得到的这些一个又一个。客户记录完全丢失,但有一个送货和账单地址。很奇怪。
您是否设置了任何测试以尝试复制数据?如果不是的话,我建议尽快与Selenium合作。 – Nic 2012-01-30 00:56:20
我可以使用Ecomdev测试套件进行复制。但是这不是一个完整的浏览测试。我有一个有趣的怀疑,即客户记录在回滚时被删除,因为出错了,但只有客户数据丢失,而不是地址,而且他们实际上已分配了客户ID。 – ShaunOReilly 2012-01-30 01:24:19
我已经完成了浏览器测试的分配,包含大约100种不同的场景和不同的字符,但是网页在您下订单之前会停止任何无效的条目。 – ShaunOReilly 2012-01-30 06:02:16