How do I give access to only specific roles to buy at my store?
Solution

After a few nights of sleeping on it I believe I have a solution. I tested it and so far it works. But please let me know if you experience any issues with my solution below.

Step 1

a) Install Roles For Menu module (has a stable releases for this project are covered by the security advisory policy.)

b) Install the Path Access module together with the Chain Menu Access API (which is needed to install the Path Access module)

Step 2

a) Go to your menu links in the user menu admin/structure/menu/manage/user-menu (or wherever your 'my cart' link is located) and set the required roles to show and hide for that menu item. 

b) Go to admin/config/people/pathaccess and add the paths that you wish to deny access to per role.

Now the roles who don't have access to any of these paths get an access denied page and those who do have access will just be able to use the store as intended.