grafite/commerce

此包已废弃,不再维护。未建议替代包。

使用 Grafite CMS 的 Laravel 应用程序的电子商务平台

v2.0.3 2018-09-10 12:18 UTC

README

Grafite 已存档此项目,不再支持或开发其代码。我们建议仅将其作为您自己的代码想法来源。

Commerce - 使用 Grafite CMS 的 Laravel 应用的电子商务包

Build Status Packagist license

Commerce 是一个 Grafite CMS 的电子商务包。它是将电子商务平台添加到您的 Grafite CMS 实例的优雅解决方案。这意味着它可以添加到现有应用,或者全新的 Grafite CMS 安装和设置。您可以控制:产品、订阅、交易历史、订单以及一些年度分析。利用 Stripe 的力量,您可以开设商店,提供订阅、可下载的数字产品,甚至物理产品进行订单发货。集成任何外部服务以处理运费和跟踪号更新。控制您所创造的各种事物,并构建您一直想要的商店。

作者

文档

安装

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 商业组件的表单配置

一般要求

  1. PHP 7.1.3+
  2. MySQL 5.7+

更具体的要求

  1. OpenSSL
  2. Laravel 5.6+
  3. Grafite CMS 3.0+
  4. Stripe帐户

兼容性和支持

Laravel版本 包标签 受支持
5.6.x 2.0.x no
5.4.x - 5.5.x 1.0.x no

许可证

格拉菲特商业是开源软件,遵循MIT许可证

错误报告和功能请求

请尽可能详细地提供有关问题提交和功能请求的详细信息

免责声明

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他原因,无论该责任是否与软件或其使用或其他与软件相关的交易有关。