php订单流程,详解Magento中一个订单流程的“生命历程”

当我们在Magento网上愉快的买买买的时候, 你知道在这些屏幕“背后”正在进行着什么吗?

1. 当一个产品被加入到购物车后, 实际上发生了什么?

当第一个产品被加入到购物车, 系统首先会生成一个 quote (quote翻译过来就是“报价单”), 然后把刚才的产品当作一个 quote_item 也一起保存在数据库中, quote 和 quote_item 之间的关系相当于父母和子女的关系, 可以通过 quote 获取所有相关的 quote_item, 也可以通过 quote_item 获取相关的 quote.

虽然 quote_item 是由产品转化而来的,但是 quote_item 和产品是完全不同的数据模型. Magento 中, 产品所有数据保存在 catalog_product_entity, catalog_product_entity_varchar, catalog_product_entity_int, catalog_product_entity_text, catalog_product_entity_detetime 等表中, 而 quote_item 的数据保存在 sales_flat_quote_item 和 sales_flat_quote_item_option 表中.

因为 quote_item 是由产品转化而来的,所以可以通过 quote_item 来获取相关产品, 但是一个产品的属性特别多, 很多属性对于前端来说是不必要的, 所以 Magento 在配置文件中规定了通过 quote_item 获取的产品的属性. 在开发Magento的时候,在 quote_item->getProduct() 获取不到产品属性值的情况, 多数是因为没有将该产品属性加入配置文件导致的.

2. 当在购物车中编辑产品数量时,实际上发生了什么?

购物车里的产品实际上是 quote 中的 quote_item, 所以在购物车里编辑产品数量, 相当于修改 quote_item 的“数量”这个属性, 而且编辑购车中产品的数量不会影响正真产品的库存。

3. 当点击进行“立即下单”的时候,实际上发生了什么?

当点击下单时, quote 和所有相关的 quote_item 都会转化为 order 以及 order_item, 原来的 quote 和 quote_item 都会被删除(购物车清空).

order 和 order_item 与 quote 和 quote_item 大多数字段都是一样的, 只是 order 和 order_item 多了一些付款、发货之类的表示状态的字段。

当一个quote转变为order时, 就会根据 quote_item 的“数量”字段值对相关产品的库存进行减操作. 如果产品库存不足, quote 就无法转为 order, 结果就是“下单失败,产品告罄”.

4. 当付款完成时,实际上发生了什么?

刚下单的 order 的状态为 “pengding” (等待中), 当用户付款完成后, order 的状态转变为 “processing”(进行中), 当发货完成,order 的状态转变为 “complete”

从购物车的 quote 到 complete order, 真是一个漫长的过程啊, 中间每一个环节不容有一丝差错, 否则轻则下不了订单,重则付款金额不对, 这是相当严重的bug

(责任编辑:最模板)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值