由于某种原因,订单ID(sales_flat_order表上的increment_id)随后在我的Magento 1.6.1上没有递增.这是它如何照顾一些实时订单:
increment_id created_at updated_at
100000001 2011-12-14 12:35:24 2011-12-14 12:35:25
100000002 2011-12-14 13:02:39 2011-12-14 13:02:39
100000003 2011-12-14 13:04:18 2011-12-14 13:04:18
100000004 2012-02-01 16:54:58 2012-02-01 16:54:58
100000005 2012-03-14 12:22:35 2012-03-14 12:22:35
100000006 2012-03-20 13:10:48 2012-03-20 13:10:48
100000011 2012-03-29 20:58:48 2012-03-29 20:58:48
100000012 2012-03-29 21:06:43 2012-03-29 21:06:43
100000013 2012-03-30 10:48:20 2012-03-30 10:48:21
100000014 2012-03-30 13:05:40 2012-03-30 13:05:41
100000015 2012-04-03 15:51:01 2012-04-03 15:51:02
100000016 2012-04-19 15:00:49 2012-04-19 15:00:50
100000017 2012-05-09 12:09:21 2012-05-09 12:09:22
100000019 2012-05-24 05:35:35 2012-05-24 05:35:36
100000020 2012-05-24 05:41:11 2012-05-24 05:41:12
100000008 2012-05-24 05:48:52 2012-05-24 05:48:53
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么Magento有时会跳跃增量?更糟糕的是,在我的示例顺序中,增量100000008在100000020之后.有人知道为什么会发生这种情况并且有没有办法解决它?
Ros*_*ius 24
这是正常的,虽然可以理解为令人不安.
当Magento进入结账流程时,它会"保留"increment_id并将其放在报价(购物车)对象上.您可以在以下位置查看获取增量ID的代码:
Mage_Eav_Model_Entity_Type::fetchNewIncrementId()
Run Code Online (Sandbox Code Playgroud)
每个商店的最后使用的ID存储在eav_entity_store中.如果客户在完成结账流程之前放弃了他们的购物车(即报价对象),则保留的increment_id将永远不会显示在订单上.您可以在繁忙的商店中看到订单号中的这种效果 - 偶尔会有一个非常古老的订单ID来自正在检查旧购物车的客户当天的订单.
此行为的存在是为了允许Magento在订单完成之前发送支付网关最终订单ID(increment_id),允许网关将订单ID与订单相关联.如果客户放弃了网关中的付款流程,则订单ID已死(或者更准确地仍附加到报价单).
您可以在PayPal Express模块中看到这种情况:
Mage_Paypal_Model_Express_Checkout::start()
Run Code Online (Sandbox Code Playgroud)
哪个叫
Mage_Sales_Model_Quote::reserveOrderId()
Run Code Online (Sandbox Code Playgroud)
如果要查找"缺失"的increment_ids,请查看字段reserved_order_id下的sales_flat_quote.您应该看到它们附加到未转换的引用对象(推车).
此行为可能会导致某些支付网关出现问题; 想起了Moneris.当您向Moneris的托管付款页发送两次相同的订单ID时,它会扼杀并为客户创建一个神秘的错误状态.当客户访问托管付费页面,退出并重新访问该页面时,会出现这种情况.因此,在某些情况下,有必要以编程方式重新生成与引用对象关联的订单ID.
| 归档时间: |
|
| 查看次数: |
12208 次 |
| 最近记录: |