unisharp/cart

let buyable item can add to cart
1,739 1
Install
composer require unisharp/cart
PHP:^7.0
License:MIT
Last Updated:Sep 26, 2018
Links: GitHub  ·  Packagist
Maintainer: FreedomKnight

UniSharp Cart

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:

Method Uri Comment
POST api/v1/carts Create the cart
DELETE api/v1/carts/{cart} Delete the cart and cart's items
GET api/v1/carts/{cart} Get the cart and cart's items
PUT api/v1/carts/{cart} Add item(s) to the cart
POST api/v1/carts/{cart} Refresh cart and add item(s) to the cart
DELETE api/v1/carts/{cart}/{item} Remove a item from the cart

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:

Method Uri Comment
POST api/v1/orders Create an order
GET api/v1/orders List all orders
DELETE api/v1/orders/{order} Delete the order
PUT api/v1/orders/{order} Update the order's status, price and shipping_status
GET api/v1/orders/{order} Get the order
DELETE api/v1/orders/{order}/{item} Remove a item from the order
GET api/v1/user/me/order-items Get current user's orders

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 () {...});
});
Method Uri Comment
GET api/v1/orders/{order}/pay Call payment
GET api/v1/payment/confirm Payment completed url
GET api/v1/payment/notify Notify url
GET api/v1/payment/return Client back url
GET api/v1/payment/information Payment Information url

Related Packages

unisharp/categorizable

categorize model

14,832 3
unisharp/buyable

let laravel model buyable

2,084 3
gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

628,058,007 9,707