grafite / commerce
使用 Grafite CMS 的 Laravel 应用程序的电子商务平台
Requires
- illuminate/support: ^5.6
- laravel/cashier: ^7.1
Requires (Dev)
- grafite/builder: ^2.4
- grafite/cms: ^3.0
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^0.9.4
- orchestra/database: ^3.6
- orchestra/testbench: 3.6.*
- orchestra/testbench-browser-kit: ^3.6
- phpunit/phpunit: ~7.0
README
Grafite 已存档此项目,不再支持或开发其代码。我们建议仅将其作为您自己的代码想法来源。
Commerce - 使用 Grafite CMS 的 Laravel 应用的电子商务包
Commerce 是一个 Grafite CMS 的电子商务包。它是将电子商务平台添加到您的 Grafite CMS 实例的优雅解决方案。这意味着它可以添加到现有应用,或者全新的 Grafite CMS 安装和设置。您可以控制:产品、订阅、交易历史、订单以及一些年度分析。利用 Stripe 的力量,您可以开设商店,提供订阅、可下载的数字产品,甚至物理产品进行订单发货。集成任何外部服务以处理运费和跟踪号更新。控制您所创造的各种事物,并构建您一直想要的商店。
作者
- Matt Lantz (@mattylantz, mattlantz at gmail dot com)
文档
安装
composer require grafite/commerce
composer require laravel/cashier
无需担心 Laravel cashier 的安装,以下指定了关注点
将这些添加到您的 config/app.php
Grafite\Commerce\GrafiteCommerceModuleProvider::class,
Laravel\Cashier\CashierServiceProvider::class,
设置
然后发布供应商资产等
php artisan vendor:publish
将以下添加到您的 app/Http/Kernel.php
中的 routeMiddleware
数组
'isAjax' => \Grafite\Commerce\Http\Middleware\isAjax::class,
将以下特质添加到 app/Models/User.php
use Grafite\Commerce\Services\Concerns\hasFavorites;
将以下添加到您的 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes
方法内部作为闭包
require base_path('routes/commerce.php');
无需担心 Laravel cashier 的安装,以下指定了关注点
将您的 config/services.php
修改为以下内容
'stripe' => [ 'model' => App\Models\UserMeta::class, 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), ],
现在您需要将可计费特质添加到 App\Models\UserMeta::class
use \Laravel\Cashier\Billable;
然后进行迁移!
php artisan migrate
如果您希望与登录、用户设置等保持商店的一致性,可以将扩展设置为 @extends('commerce-frontend::layouts.store')
您可能需要更改视图以实现最佳一致性
views/
auth/
login.blade.php
register.blade.php
passwords/
email.blade.php
reset.blade.php
user/
password.blade.php
settings.blade.php
关于 Grafite CMS & Builder 的说明
Grafite Commerce 旨在与 Grafite CMS 一起使用,因此在不在此上下文中使用将自行承担风险。同样,尽管 Grafite CMS 可以添加到任何现有的 Laravel 5.6+ 应用程序,但上述文档假设您使用了 Grafite CMS 设置命令 php artisan graifte:cms
,它与 Grafite Builder 有着高度集成。如果您没有这样做,您可能需要进行此处未列出的调整。
LogisticService
物流服务专门发布到您的应用中。其目的是处理商店购买流程中发生的各种事件的 钩子。LogisticService
处理以下事件
shipping($user) getTaxPercent($user) afterPurchase($user, $transaction, $cart, $result) afterSubscription($user, $plan) afterRefundRequest($transaction) afterRefund($transaction) cancelSubscription($user, $plan) afterPlaceOrder($user, $transaction, $cart) orderCreated($order) shipOrder($order) cancelOrder($order)
扩展
任何电子商务平台都需要扩展以满足您的定制需求。使用Grafite Commerce,我们使这个过程尽可能简单。我们发布了用于购物车交互的JavaScript文件,以及用于您的商店“浏览”的控制器和路由。
公共文件
- js/store.js
- js/card.js
- js/purchases.js
- css/shop.css
在public
目录中,您可以找到一些发布的CSS和JavaScript文件,它们处理Grafite Commerce体验的元素。您可以根据需要自由更改这些文件,但请注意URL更改,因为它们可能需要路由更改。
控制器
在Grafite Commerce命名空间中为您添加了一些控制器。这些是通用控制器,您可以根据您的应用程序设置进行自定义。这与Grafite CMS类似,您可能希望更改某些部分。在更改这些文件时,请务必注意您对Grafite Commerce商店基础的潜在影响。在以下命名空间中,您应该找到可以自定义的这些控制器。
app/Http/Controllers/Commerce/
- CardController.php
- CartController.php
- CheckoutController.php
- FavoriteController.php
- OrderController.php
- PlanController.php
- ProductController.php
- ProfileController.php
- PurchaseController.php
- StoreController.php
- SubscriptionController.php
路由
可以在routes/commerce.php
文件中自定义路由。请注意这里的变化,因为它们可能影响上述JavaScript文件。
视图
有一些Grafite Commerce视图文件已发布到您的应用程序,您可以对其进行修改。但是,如果您希望编辑包视图,则需要在这些视图所在的resources/commerce
目录中进行更新。
管理界面
使用Grafite Commerce已设置了一些非常易于使用的管理组件,但您也可以自由地克隆存储库并添加您喜欢的组件。
配置
Grafite Commerce有几个配置选项。
键 | 描述 |
---|---|
name | 商店名称 |
currency | 商店货币,与产品相关 |
taxes_include_shipping | 是否希望税费包含运费 |
store_url_prefix | 商店URL前缀(如果更改,您必须更新发布的JS文件) |
currencies | 用于生成订阅计划的可用货币 |
subscriptions | 如果您想启用/禁用作为商店项目的订阅 |
forms | 商业组件的表单配置 |
一般要求
- PHP 7.1.3+
- MySQL 5.7+
更具体的要求
- OpenSSL
- Laravel 5.6+
- Grafite CMS 3.0+
- Stripe帐户
兼容性和支持
Laravel版本 | 包标签 | 受支持 |
---|---|---|
5.6.x | 2.0.x | no |
5.4.x - 5.5.x | 1.0.x | no |
许可证
格拉菲特商业是开源软件,遵循MIT许可证
错误报告和功能请求
请尽可能详细地提供有关问题提交和功能请求的详细信息
免责声明
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他原因,无论该责任是否与软件或其使用或其他与软件相关的交易有关。