unisharp/cart

let buyable item can add to cart

Package info

github.com/UniSharp/cart

pkg:composer/unisharp/cart

Statistics

Installs: 1 739

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

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

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT dd994ffbdbb9cdd3c333c5f4407cf62b6d9d7be3

  • UniSharp <opensource.woop@unisharp.com>

UniSharp

This package is auto-updated.

Last update: 2026-06-06 23:17:23 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:

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