我的信用卡支付交易出现问题,我确信 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 应该默认处理所有付款而不会出现任何错误。

许可以下: CC-BY-SA归因
scroll top