bozboz / orders
Requires
- venturecraft/revisionable: ^1.28
- yohang/finite: ^1.1
Requires (Dev)
- phpunit/phpunit: 4.*
This package is auto-updated.
Last update: 2021-06-04 10:21:15 UTC
README
- 安装
- 使用
- 购物车
- 订单状态
- 订单存储库
- 订单项
- 客户
- 地址
- 退款
- 事件
- 通知电子邮件
安装
- 查看 http://gitlab.lab/laravel-packages/ecommerce
- 运行
php artisan vendor:publish && php artisan migrate
- 编辑
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'中设置的电子邮件。