日期:2014-05-17  浏览次数:20731 次

Magento订单状态详解(一):Magento订单基本流程 http://www.php-source.com/thread-20100-1-1.html
Magento的订单状态相当强大,拥有高度的可定制性,但是在日常的订单管理中,Magento订单状态的的强大功能也可能是众多使用Magento用户当中最为头疼的一个。将会为大家带来一系列的关于Magento订单状态流程的教程,本文是该系列的第一篇《Magento订单状态详解(一):Magento订单基本流程》,有兴趣的朋友可以持续关注。

在详细解释Magento订单相关的代码之前,我们先把系统内置的订单状态及流程解释一下。管理过Magento订单的朋友应该知道,当客户新下一个订单的时候,后台初始的订单状态为Pending或者Pending Payment,即“未付款”状态。此时,管理员可以通过后台,根据情况,将订单取消(Cancel),挂起(Hold)。

此时,如果用户在付款时遇到问题,或者取消了付款,那么该订单在管理员未操作的情况下,将一直保持“未付款”(Pending Payment)的状态。那么接下来的订单流程是怎样的呢?
处理付款流程

我们拿Paypal付款作为例子,当然任意第三方的付款接口均适用。我们知道,当用户下单之后,后台立刻收到“未付款”的订单,此时,如果用户在Paypal付款成功,Paypal会向Magento返回支付成功代码。一切正常的话,之前处于“未付款”状态的订单,会被更新为“正在处理”(Processing)状态。

那么这里,需要注意一个情况,如果是线下收款,如支票收款,该如何让Magento知道该订单已经收到付款了呢?很多朋友会非常迷惑这个地方,因为Magento并未有一个明确的方式将“等待付款”的订单状态修改为“正在处理”。那么,这里需要了解下Invoice。一旦客户从在线渠道,或者是其它途径收到了付款,但是并未向Magento发送收款成功数据。则可以通过打印订单Invoice将“未付款”状态的订单修改为“正在处理”状态。
处理物流流程

订单完成付款之后,此时的订单状态就是“正在处理”了,实际上,这个地方就如刚下的订单状态是“未付款”而不是“新订单”一样,会让我们产生一个疑问,为什么此时的订单状态是“正在处理”而不是“已付款”呢?关于这个问题,我会在《Magento订单状态详解》的第二篇中解释。这里继续Magento的基本订单流程。

此时,当用户付款成功,并且商家也已经完成货物打包,交付物流发货之后,是时候在后台填写运单号,通知用户已经发货,准备接收了。此时,我们可以通过后台订单中点击运送,并填写物流商及运单号,告知用户已经发货,及具体的物流信息。
完成订单仅仅是一个开始

不出意外,当按照上述流程完成订单的支付及物流操作之后,你会发现,该订单的状态已经变成了“已完成”(complete)。

貌似,Magento系统内置的订单流程非常简单。当然这里的非常简单有几个前提。1,你已经非常了解Magento的这套基本订单流程,以及如何在新订单出现之后,处理通过线上及线下的付款方式,以及物流流程。2,没有碰到任何特殊情况。那么什么是特殊情况呢?例如,已完成的订单,客户退款了怎么办?处于Pending状态的订单,客户是否可以继续付款?(答案是不能,需要通过插件扩展)。等等这些问题。

当然,本文作为解释《Magento订单状态详解》的第一篇基础解释,不会过多考虑如上问题,之后的一系列关于Magento订单状态的文章会陆续解决上述及扩展新的问题。

最后,为下一篇关于Magento订单状态的文章留一个问题。从付款成功,到商家备货并交付物流发货,是一个可长可短的过程,这个过程,只通过Processing这一个订单状态来解释,会不会让客户感到不知所措呢?比如说在此添加一个“已付款”,“正在备货”,“已发送”这样的状态呢?在婚纱B2C这个垂直领域中,客户下单之后,工厂才会进行生产,这个阶段可能会持续两周或者更长时间,是否能够添加一个“婚纱制作中”的订单状态呢?感兴趣的朋友可以留意《Magento订单状态详解(二):State和Statuses的区别和联系》。