unisharp/cart

let buyable item can add to 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

Let buyable item can add to cart, and make order with cart's items, and also provide payment feature.

This package depends on:

Installation

composer require unisharp/cart dev-master

Cart Usages

Use Api

Include api into api.php

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

route lists:

Use CartManager

Create a new cart

$cart = CartManager::make();

Get a exist cart

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

Add item to the cart

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

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

Get cart's items

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

Remove item from the cart

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

Clean cart's items

$cart->clean();

Destroy the cart

$cart->delete();

Order Usages

Use Api

Include api into api.php

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

route lists:

Use OrderManager

Create an order manager

// 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)

Get an exist order

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

Pricing Usages

Both of CartManager and OrderManager already have trait

class CartManager
{
    use CanPricing;
    ...
}

Customize pricing module

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)
    {
        ...
    }
}

Set Custom pricing module in config/pricing.php

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

Get pricing

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

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

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

More details on unisharp/pricing

Payment Usages

Set payment gateway config

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' 
    ],
]

Set api into 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 () {...});
});