bozboz/orders

该包已被弃用且不再维护。未建议替代包。
此包最新版本(v1.0.2)没有可用的许可证信息。

v1.0.2 2018-08-24 14:53 UTC

This package is auto-updated.

Last update: 2021-06-04 10:21:15 UTC


README

  • 安装
  • 使用
    • 购物车
    • 订单状态
    • 订单存储库
    • 订单项
    • 客户
    • 地址
    • 退款
    • 事件
    • 通知电子邮件

安装

  1. 查看 http://gitlab.lab/laravel-packages/ecommerce
  2. 运行 php artisan vendor:publish && php artisan migrate
  3. 编辑 config/orders.php(见 订单状态

使用

购物车

要将项目添加到购物车,您必须将以下信息发布到 /cart/items

<?php
[
    'orderable_factory' => '[Fully qualified class name or alias of the class
        responsible for looking up the orderable items. Must implement 
        `Bozboz\Ecommerce\Orders\OrderableFactory`]',
    'orderable' => '[Whatever information is needed to find the orderable item]',
    'quantity' => '[Defaults to 1 if left blank]',
]

要添加多个项目,请发送一个包含上述数据的多个实例的数组到 products

例如:

products[0][orderable_factory]
products[0][orderable]
products[0][quantity]

订单状态

每个订单的状态由有限状态机处理。有关状态机的详细信息,请参阅 http://yohan.giarel.li/Finite/

订单可用的状态在 config/orders.php 中配置。每个状态都可以设置一些自定义属性

  • show_in_default_filter: 当设置为 false 时,该状态将不包括在订单列表的默认过滤器中。(默认:true)
  • disallow_manual_transition: 当设置为 true 时,即使当前状态有到该状态的转换,该状态也将从用户可以转换订单的状态中删除。(默认:false)

订单存储库

订单存储库负责获取结账过程中的订单。默认存储库将获取会话中的订单 ID 并返回订单实例。订单流程的第一个屏幕负责将订单 ID 保存到会话中。存储库必须返回一个实现结账包中 Checkoutable 接口的实例。为此有一个 CheckoutableOrder 模型,它扩展了基本 Order 模型。

订单项

将项目添加到订单需要该项目实现 Orderable 接口。

客户

客户模型扩展了用户模型,并为订单和地址添加了关系。这使得网站可以保存客户数据,使他们可以登录并使用保存的数据/地址来加快结账流程。

要使用保存的地址,地址必须与客户关联。有一个事件监听器(Bozboz\Ecommerce\Orders\Customers\Addresses\Listeners\LinkAddressToCustomer)可以由 Bozboz\Ecommerce\Orders\Events\OrderComplete 事件触发。必须在应用程序中手动设置此。

有关注册客户的示例实现,请参阅 http://gitlab.lab/bozboz/finecut/tree/master/screens

地址

关于如何实现保存地址的示例,请参阅 http://gitlab.lab/bozboz/finecut/blob/master/screens/AddressSelection.php(尽管您可以忽略有关账户地址的部分,这部分是针对Finecut特定的)

退款

退款类将在数据库中创建订单记录的副本,并通过parent_order_id列将其链接到主记录。这允许原始订单保持不变以保持历史记录。

事件

  • Bozboz\Ecommerce\Orders\Events\OrderStateTransition - 每次通过transitionState方法改变订单状态时触发。
  • Bozboz\Ecommerce\Orders\Events\OrderComplete - 这应该在结账流程的最后一屏触发,当订单完成时。
  • Bozboz\Ecommerce\Orders\Events\ItemOrdered - 这应该在订单完成后,在结账流程的最后一屏为订单中的每个项目触发。

通知电子邮件

当触发Bozboz\Ecommerce\Orders\Events\OrderStateTransition时,Bozboz\Ecommerce\Orders\Listeners\Notify会触发。此监听器将检查是否存在名为过渡的视图在ecommerce::emails.notifications...中。如果存在视图,则将使用该视图向正在下单的用户发送电子邮件,如果存在,则还会包括在'ecommerce.order_cc_email_address'中设置的电子邮件。