unisharp/cart

让可购买的商品能够添加到购物车

dev-master / 1.0.x-dev 2018-09-26 06:42 UTC

This package is auto-updated.

Last update: 2024-09-06 19:33:42 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

让可购买的商品可以添加到购物车,并且可以使用购物车中的商品下单,同时提供支付功能。

此包依赖于

安装

composer require unisharp/cart dev-master

购物车使用方法

使用Api

将api包含在api.php

Route::group(['prefix' => 'v1'], function () {
    CartManager::route();
});

路由列表

使用CartManager

创建一个新的购物车

$cart = CartManager::make();

获取已存在的购物车

$cart = CartManager::make($cart);

将商品添加到购物车

$item = new Item([
    'id' => 1,
    '$quantity' => 10,
    'extra' => [
        'comment' => '...'
    ]
]);

$cart->add($item->id, $item->quantity, $item->extra)->save();

获取购物车中的商品

$cart->getCartInstance()->getItems();

从购物车中移除商品

$cart->remove($item)->save();

清除购物车中的商品

$cart->clean();

销毁购物车

$cart->delete();

订单使用方法

使用Api

将api包含在api.php

Route::group(['prefix' => 'v1'], function () {
    OrderManager::route();
});

路由列表

使用OrderManager

创建一个订单管理器

// Get order manager
$order = OrderManager::make();

// Assign operator
$order->assign(auth()->user());

// Checkout cart's items and buyer and receiver's information
$items = CartManager::make($cart)->getItems();
$information = [
    'buyer' => [],
    'receiver' => [],
    'payment' => 'credit'
];
$order->checkout(items, informations)

获取已存在的订单

$order = OrderManager::make($order)->getOrderInstance();

定价使用方法

CartManager和OrderManager都已有trait

class CartManager
{
    use CanPricing;
    ...
}

自定义定价模块

use UniSharp\Pricing\Pricing;
use UniSharp\Pricing\ModuleContract;

class CustomPricingModule implements ModuleContract
{
    public function handle(Pricing $pricing, Closure $next)
    {
        ...
        return $next($pricing);
    }

    public function finish(Pricing $pricing)
    {
        ...
    }
}

config/pricing.php中设置自定义定价模块

return [
    'modules' => [
        CustomPricingModule::class
    ],
];

获取定价

// get original price
$cart->getOriginalPrice();

// get total price
$cart->getPrice();

// get fee
$cart->getFee();

更多详情请参考 unisharp/pricing

支付使用方法

设置支付网关配置

return [
    'payment' => [
        'driver'         => 'EcPay',
        'merchantId'     => '2000132',
        'hashKey'        => '5294y06JbISpM5x9',
        'hashIV'         => 'v77hoKGq4kWxNNIS',
        'actionUrl'      => 'https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/',
        'returnUrl'      => 'https://localhost/payment/confirm',
        'notifyUrl'      => 'https://localhost/payment/notify',
        'clientBackUrl'  => 'https://localhost/payment/return',
        'paymentInfoUrl' => 'https://localhost/payment/information' 
    ],
]

将api设置到api.php

// Include payment api
Route::group(['prefix' => 'v1'], function () {
    OrderManager::route();
});

// Implement payment response url
Route::group(['prefix' => 'v1/payment'], function () {
    Route::get('confirm', function () {...});
    Route::get('notify', function () {...});
    Route::get('return', function () {...});
    Route::get('information', function () {...});
});