You could set a unique ID on page load that is submitted with data and manipulate session to use an array. This, however would mean a user refreshing their page would lose anything that they were working on.
When a user starts an order process, could you not generate a record of a pending_order and save the details in the DB with a pending_orderid linked to their userid (for guests, you could store an id in the DB and in Local Storage to use as the user id so they could pick up between tabs if they are on the same browser)? That way a user could work on different tabs on different orders but also select a previous order they were working on. You would also probably get some pretty useful insights into which users are most active, products selected but not ordered, pain points where users stopped their order etc.