File: D:/HostingSpaces/SBogers10/conmeq.komma.pro/app/Komma/Shop/Checkout/CheckoutServiceInterface.php
<?php
namespace App\Komma\Shop\Checkout;
use App\Komma\Addresses\Models\Address;
use App\Komma\Shop\Cart\ShoppingCartItemInterface;
use App\Komma\Shop\Orders\Models\Order;
use App\Komma\Users\Models\SiteUser;
use Illuminate\Http\RedirectResponse;
/**
* Interface CheckoutServiceInterface
*
* A checkout service sits between Order related code and payment related code.
* It directs those two domains to work together.
*
* @package App\Komma\Shop\Checkout
*/
interface CheckoutServiceInterface
{
/**
* @param ShoppingCartItemInterface[] $shoppingCartItems
* @param SiteUser $customer
* @param Address $addressForShipping
* @param Address $addressForInvoice
* @return Order|null
*/
public function createOrderFromShoppingCartItems(array $shoppingCartItems, SiteUser $customer, Address $addressForShipping, Address $addressForInvoice): ?Order;
/**
* Initializes a payment request for the user that owns the order.
*
* @param Order $order
* @return RedirectResponse
*/
public function startPaymentForOrder(Order $order): RedirectResponse;
/**
* Returns the last used shipping address for the user or null if that not exists
*
* @param SiteUser $user
* @return Address
*/
public function getLastUsedShippingAddressForUser(SiteUser $user): ? Address;
/**
* Returns the last used invoice address for the user or null if that not exists
*
* @param SiteUser $user
* @return Address
*/
public function getLastUsedInvoiceAddressForUser(SiteUser $user): ? Address;
}