OpenCart - 中文论坛

标题: 为何有一些订单时放弃/丢失的订单? [打印本页]

作者: sunboy    时间: 2013-8-21 14:30
标题: 为何有一些订单时放弃/丢失的订单?
为何有一些订单时放弃/丢失的订单?

在 1.4.x 版本系列,当结账/确认页面加载时生成临时订单。
在 1.5.x 版本系列,当结账的第六步页面加载时,产生临时订单。

当支付完成后,会更新该临时订单的订单状态,转换成为真实的订单。但如果没有支付,或客户在结账过程中放弃了,那该临时订单会一直保留。当客户在结账过程中来回反复时,也会产生新的临时订单,这样旧的临时订单也会予以保留。

以前的时候,我们会清除无用的临时订单,但现在决定保留它们,这样可以提醒客户回来再次付款。

但问题在于客户每次加载确认页面时均会产生新的临时订单,例如你在结账过程中反复了5次,生成了六个订单,客户只是结账了地六个订单。于是前五个临时订单就永远保留在了系统中。当你问客户为何不付款时,客户会说我付过了啊。这会造成一些困惑。

一个解决办法是限定临时订单的数量,同一个客户使用已经产生的一个临时订单。
如下附件成功解决了此问题,请下载安装使用即可。适合于opencart 1.4.x-1.5.x,使用前请安装好vqmod。

single_temp_order_id.zip (1.84 KB, 下载次数: 155)

该附件的作用原理是:一旦客户生成了临时订单,则强制购物车使用此临时订单,例如一个客户走到了确认页面生成了订单id为101,则无论该客户回去又选择了多个产品,还是修改了其他的东西,再次回到确认页面时,仍然使用订单id为101的。

在有许多临时订单的情况下,可以在后台查看这些订单。Admin->Sales->Order,选择abandoned 或 Missing状态(根据你的opencart版本来决定)。你可以到订单的编辑页面,此时你会看到该订单的状态栏是canceled,但其实不是这样。之所以是canceled状态,是因为订单状态列表的第一项就是canceled,并不是真的canceled。这样的情况,管理员会误认为是canceld取消订单,这回造成一些困惑。

一个订单在真实支付后,订单的状态还处于临时订单状态的时,会是如下情况造成的:
- 你所在服务器防火墙或端口屏蔽了
- 代码错误
- 支付接口没有返回任何信息
- 错误的 htaccess
- http密码保护组织了信息

如果你想手工删除这些临时订单,可以在phpmyadmin中运行如下sql语句:

DELETE FROM `oc_order` WHERE order_status_id = 0


根据你是否使用了数据库表前缀,来决定是否添加使用前缀oc_
作者: 大山的OPENCART    时间: 2014-3-20 10:14





欢迎光临 OpenCart - 中文论坛 (https://bbs.opencart.cn/) Powered by Discuz! X3.2