UniSharp Cart
![Software License][ico-license]
![Coverage Status][ico-scrutinizer]
![Total Downloads][ico-downloads], (*1)
Let buyable item can add to cart,
and make order with cart's items,
and also provide payment feature., (*2)
This package depends on:, (*3)
Installation
composer require unisharp/cart dev-master
, (*4)
Cart Usages
Use Api
Include api into api.php
, (*5)
Route::group(['prefix' => 'v1'], function () {
CartManager::route();
});
route lists:, (*6)
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, (*7)
$cart = CartManager::make();
Get a exist cart, (*8)
$cart = CartManager::make($cart);
Add item to the cart, (*9)
$item = new Item([
'id' => 1,
'$quantity' => 10,
'extra' => [
'comment' => '...'
]
]);
$cart->add($item->id, $item->quantity, $item->extra)->save();
Get cart's items, (*10)
$cart->getCartInstance()->getItems();
Remove item from the cart, (*11)
$cart->remove($item)->save();
Clean cart's items, (*12)
$cart->clean();
Destroy the cart, (*13)
$cart->delete();
Order Usages
Use Api
Include api into api.php
, (*14)
Route::group(['prefix' => 'v1'], function () {
OrderManager::route();
});
route lists:, (*15)
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, (*16)
// 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, (*17)
$order = OrderManager::make($order)->getOrderInstance();
Pricing Usages
Both of CartManager and OrderManager already have trait, (*18)
class CartManager
{
use CanPricing;
...
}
Customize pricing module, (*19)
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
, (*20)
return [
'modules' => [
CustomPricingModule::class
],
];
Get pricing, (*21)
// get original price
$cart->getOriginalPrice();
// get total price
$cart->getPrice();
// get fee
$cart->getFee();
More details on unisharp/pricing, (*22)
Payment Usages
Set payment gateway config, (*23)
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
, (*24)
// 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 |