netflex / commerce
Netflex Commerce library
Requires
- php: ^7.4|^8.0
- illuminate/support: ^8.0
- netflex/api: ^4.33
- netflex/query-builder: ^4.33
- netflex/support: ^4.33
Requires (Dev)
- illuminate/cache: ^8.0
- illuminate/container: ^8.0
- illuminate/filesystem: ^8.0
- larapack/dd: ^1.1
- vlucas/phpdotenv: ^5.2
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1.0
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.48.5
- v4.48.4
- v4.48.3
- v4.48.1
- v4.48.0
- v4.47.2
- v4.47.1
- v4.47.0
- v4.46.0
- v4.45.1
- v4.45.0
- v4.44.5
- v4.44.4
- v4.44.3
- v4.44.2
- v4.44.1
- v4.44.0
- v4.43.0
- v4.42.0
- v4.41.0
- v4.40.2
- v4.40.1
- v4.40.0
- v4.34.1
- v4.34.0
- dev-master / 4.33.x-dev
- v4.33.6
- v4.33.5
- v4.33.4
- v4.33.3
- v4.33.2
- v4.33.1
- v4.33.0
- v4.32.3
- 4.32.2
- 4.32.1
- v4.32.0
- 4.31.6
- v4.31.5
- v4.31.4
- 4.31.3
- v4.31.2
- v4.31.1
- v4.31.0
- v4.30.0
- 4.29.2
- v4.29.1
- v4.29.0
- 4.28.8
- 4.28.7
- 4.28.6
- 4.28.5
- 4.28.4
- 4.28.3
- 4.28.2
- v4.27.0
- v4.21.1
- v4.21.0
- v4.20.3
- v4.20.2
- v4.20.1
- 4.20.0
- 4.19.6
- 4.19.5
- 4.19.4
- 4.19.3
- 4.19.2
- 4.19.1
- 4.19.0
- v4.18.5
- 4.18.4
- 4.18.3
- 4.18.2
- 4.18.1
- 4.18.0
- 4.17.6
- 4.17.5
- 4.17.4
- 4.17.3
- 4.17.2
- 4.17.1
- 4.17.0
- v4.16.1
- 4.16.0
- v4.15.9
- v4.15.8
- 4.15.7
- 4.15.6
- 4.15.5
- 4.15.4
- 4.15.3
- 4.15.2
- 4.15.1
- 4.15.0
- v4.14.1
- v4.14.0
- 4.13.4
- 4.13.3
- 4.13.2
- 4.13.1
- 4.13.0
- 4.12.25
- 4.12.24
- 4.12.23
- 4.12.22
- 4.12.21
- 4.12.20
- 4.12.19
- 4.12.18
- 4.12.17
- 4.12.16
- 4.12.15
- 4.12.14
- 4.12.13
- 4.12.12
- 4.12.11
- 4.12.10
- 4.12.9
- 4.12.8
- 4.12.7
- 4.12.6
- 4.12.5
- 4.12.4
- 4.12.3
- 4.12.2
- 4.12.1
- 4.12.0
- 4.11.1
- 4.11.0
- 4.10.9
- 4.10.8
- 4.10.7
- 4.10.6
- 4.10.5
- 4.10.4
- 4.10.3
- 4.10.2
- 4.10.1
- 4.10.0
- 4.9.10
- 4.9.9
- 4.9.8
- 4.9.7
- 4.9.6
- 4.9.5
- 4.9.4
- 4.9.3
- 4.9.2
- 4.9.1
- 4.9.0
- 4.8.0
- 4.7.0
- 4.6.4
- 4.6.3
- 4.6.2
- 4.6.1
- 4.6.0
- 4.5.0
- 4.4.5
- 4.4.4
- 4.4.3
- 4.4.2
- v4.4.1
- v4.4.0
- 4.3.11
- 4.3.10
- 4.3.9
- 4.3.8
- 4.3.7
- 4.3.6
- 4.3.5
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.7
- 4.2.6
- 4.2.5
- 4.2.4
- 4.2.3
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.33
- 4.0.32
- 4.0.31
- 4.0.30
- 4.0.29
- 4.0.28
- 4.0.27
- 4.0.26
- 4.0.25
- 4.0.24
- 4.0.23
- 4.0.22
- 4.0.21
- 4.0.20
- 4.0.19
- 4.0.18
- 4.0.17
- 4.0.16
- 4.0.15
- 4.0.14
- 4.0.13
- 4.0.12
- 4.0.11
- 4.0.10
- 4.0.9
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.x-dev
- 3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- 2.x-dev
- v2.0.1
- v2.0.0
- v2.0.0-RC3
- v2.0.0-RC2
- v2.0.0-RC1
- 1.x-dev
- v1.0.0
- 0.x-dev
- v0.2.1
This package is auto-updated.
Last update: 2024-12-17 12:31:36 UTC
README
[READ ONLY] Subtree split of the Netflex Commerce component (see netflex/framework)
The Netflex Commerce library is for working with the commerce endpoints in the Netflex API.
Installation
composer require netflex/commerce
Getting started TL;DR
// Creating new order and checking out $order = Order::create() ->addToSession() ->addCart([ 'entry_id' => 10001, 'entry_name' => 'Ticket', 'variant_cost' => 100, 'no_of_entries' => 1, 'tax_percent' => 1.12 ]) ->checkout([ 'firstname' => 'Ola', 'surname' => 'Nordmann' ]) ->save([ 'status' => 'p', 'currency' => 'NOK', 'customer_mail' => 'ola@nordmann.no', 'customer_phone' => '99123456' ]) ->addData('paymentId', '123456789', 'Payment ID') ->addLog('Customer sent to payment'); // Adding payment and completing order $order = Order::retrieveBySecret('a72b...12f4') ->addLog('Customer returned from payment') ->addPayment([ 'payment_method' => 'stripe', 'amount' => 100, 'status' => 'OK', 'capture_status' => 'OK', 'transaction_id' => '123456789', 'card_type_name' => 'visa', ]) ->register() ->lock() ->removeFromSession();
Getting started properly
Always start with an Order object. Order is the main class of this library, meant to hold all other objects.
// Empty object. Does NOT create an order in the API. $order = new Order(); // Creating and getting a new empty order in the API. $order = Order::create(); // Retrieves an existing order from the API based on an order id. Throws an exception if not found. $order = Order::retrieve(10001); // Retrieves an existing order from the API based on a register id. Throws an exception if not found. $order = Order::retrieveByRegisterId(10001); // Retrieves an existing order from the API based on an order secret. Throws an exception if not found. $order = Order::retrieveBySecret('a1234567896e8bf63bbd43e851811234'); // Retrieves an existing order from the API based on an order secret stored in $_SESSION. // If session or order does not exist, it creates an empty object. // It does NOT create a new empty order in the API. // On the next save() or refresh(), it stores the order secret in session. $order = Order::retrieveBySession(); // Retrieves an existing order from the API based on an order secret stored in $_SESSION. // If session or order does not exist, it creates a new empty order in the API // and stores the order secret in session. $order = Order::retrieveBySessionOrCreate(); // Manually adding the order secret to session. $order->addToSession();
Adding things to the order
On all add-methods below, the data is immediately sent to the API. To update the order object with added items and calculated totals, you need to call the refresh() method.
$order->addCart([ 'entry_id' => 10001, 'entry_name' => 'Ticket', 'variant_cost' => 100, 'no_of_entries' => 1, 'tax_percent' => 1.12, 'properties' => [ 'someCustomKey' => 'someCustomValue' ] ]); $order->addLog('This is a log item'); $order->addLogInfo('Log some info'); $order->addLogWarning('Log a warning'); $order->addLogSuccess('Log a success'); $order->addLogDanger('Log danger'); $order->addData('key', 'value', 'Label'); $order->addDiscount([ 'scope' => 'item', // cart|item|shipping 'scope_key' => '10001', // cart item id 'label' => '20 % discount on your ticket', 'discount' => 0.20, 'type' => 'percent', // percent|fixed|amount ]); $order->addPayment([ 'payment_method' => 'stripe', 'amount' => 100, 'status' => 'OK', 'capture_status' => 'OK', 'transaction_id' => '123456789', 'card_type_name' => 'visa', 'data' => [ 'someCustomKey' => 'someCustomValue' ] ]); // Updating the order object with added items and calculated totals $order->refresh();
It is also possible to pass in and Item object in most of the add methods.
$cartItem = new CartItem(); $cartItem->entry_id = 10001; $cartItem->entry_name = 'Ticket'; $cartItem->variant_cost = 100; $cartItem->no_of_entries = 1; $cartItem->tax_percent = 1.12; $order->addCart($cartItem);
Updating the order
Updating the properties on the main order object. Option A:
$order->status = 'p'; $order->currency = 'NOK'; $order->customer_mail = 'ola@nordmann.no'; $order->customer_phone = '99123456'; $order->save();
Option B:
$order->save([ 'status' => 'p', 'currency' => 'NOK', 'customer_mail' => 'ola@nordmann.no', 'customer_phone' => '99123456' ]);
Updating a cart item. Option A:
// Updating the number of entries on cart items with a specific entry_id foreach ($order->cart->items as $item) { if ($item->entry_id == 10001) { $item->no_of_entries = 5; $item->save(); } }
Option B:
foreach ($order->cart->items as $item) { if ($item->entry_id == 10001) { $item->save(['no_of_entries' => 5]); } }
Checking out and completing the order
$order->checkout([ 'firstname' => 'Ola', 'surname' => 'Nordmann' ]); $order->register(); $order->saveStatus('n'); $order->checkoutEnd(); // This does the same as saveStatus('n') and checkoutEnd(); // Saves the status to 'n' and add a checkout_end date. $order->lock(); $order->removeFromSession();
Search query builder
This package use the Netflex QueryBuilder library, so you can easily search for and return a collection of orders.
$orders = Order::where('data.someCustomKey', 'someCustomValue')->get();
Contributing
Thank you for considering contributing to the Netflex Commerce library! Please read the contribution guide.
Code of Conduct
In order to ensure that the community is welcoming to all, please review and abide by the Code of Conduct.
License
The Netflex Commerce library is open-sourced software licensed under the MIT license.
Copyright © 2020 Apility AS