手动增加 quote_id
-
13-12-2019 - |
题
我的信用卡支付交易出现问题,我确信 quote_id 是造成该问题的原因。问题是我不知道如何手动增加 quote_id 以确定我是对还是错。
解决方案 2
首先,我遇到的问题是得到“ABORTED”答案,原因是一个字段总是以相同的值发送,该值是 orderid(实际上是 quote_id,因为订单 id 尚未被发送)在那时创建),这是被禁止的,因为这是他们数据库中的一个独特字段。Magento 永远不会为一个用户创建新的报价,直到其当前事务完成(或者当创建另一个会话时,我还不确定),为一个用户发送相同值的 quote_id(作为 orderid),一遍又一遍再次,因此每笔交易都会中止。
解决方案:当信用卡网关未回复字符串“APPROVED”时,只需停用当前报价即可 sales_flat_quote
刚刚设置 is_active
为 0,这样 Magento 就会给用户一个全新的报价。问题是用户购物车中的所有内容都会丢失(记录仍然存在,但用户无法再访问它),因此 Magento 必须克隆报价,然后停用当前报价并保存两者,克隆的报价现在将成为当前报价,但具有不同的内容 quote_id
.
// get the current quote
$current_quote = Mage::getModel('sales/quote')->load(23);
// create a new one
$cloned_quote = Mage::getModel('sales/quote');
// copy the content of the current one into the new one
$cloned_quote->merge($current_quote);
// deactive the current quote
$current_quote->setIsActive(false);
// save the cloned quote
$cloned_quote->collectTotals()->save();
// and save the changes of the current quote
$current_quote->save();
// now the current save is inactive
// and the cloned one is the "new" current quote
解决方案是从这里获取的 如何将一个报价(仅限购物车商品)复制到其他报价(仅限商品)
现在最后一步(或者可能是第一步)是增加 quote_id
手动,为什么?信用卡网关已经有很多在此电子商店注册的订单 ID,准确地说是 149 个(顺便说一句,使用 Magento 1.7)。我几乎将所有内容迁移到 Magento 1.9,但使用全新的数据库时,报价被设置为零,因此生成的第一个报价将被 cc 网关拒绝。这是解决方案:
ALTER TABLE sales_flat_quote AUTO_INCREMENT = 149;
所以,基本上这总结了我的问题的解决方案。希望这对其他人有用。
其他提示
第一的
您不能手动增加 quote_id
因为它被设置为 auto increment
在数据库中,因为它是 primary key
表的。
因此,当创建任何报价时, quote_id
是自动创建的,因为它是自动增量的,并且必须始终是唯一的 sql
规则。
针对你的问题
如果您有问题 credit card payment
那么你应该调试 payment
部分。如果您的支付系统使用任何外部扩展,请联系他们。否则,magento 应该默认处理所有付款而不会出现任何错误。