Finally I sorted it out. So for sake of others, here is how we share cart between Magento multistore setup on different domains:
Magento configuration:
- Create 2 different stores, store views under a single website.
Also check if you have assigned respective root categories to their stores like this:
- Assign Domains to Stores
We will assign our primary domain to the main store.
a. Go to Admin -> Stores -> Settings -> Configuration. Now click on General -> Web in the left tab. In the “Base URLs” section, update the “Base URL” configuration. Here you will add your primary domain like http://mystore.com/
b. If you have SSL enabled domain, add the https://mystore.com in “Base URLs (Secure)” section.
c. Open the “Default Cookie Settings” section on the same page
d. Set the “Cookie Path” setting to “/”.
e. Save the configuration.
Now select the second store view from store selector dropdown on the top. Perform the above specified steps for second store also.
- Share Customer Accounts
If we want to share the customer accounts on different stores, we will have to change one more setting.
a. Go to Stores -> Customers -> Customer Configuration tab.
b. Find the “Account Sharing Options” section.
c. Set the “Share Customer Accounts” setting to “Global”
d. Save the configuration
Server Configuration
Next step is to configure our Web server (Apache/Nginx) to enable multistore installation. Lets see how to configure Apache.
a. Open the .htaccess at the root of the Magento 2 installation
b. On the top of .htaccess file, add following lines:
SetEnvIf Host myfurniturestore.com MAGE_RUN_CODE=store1
SetEnvIf Host myfurniturestore.com MAGE_RUN_TYPE=store
SetEnvIf Host ^myfurniturestore.com MAGE_RUN_CODE=store1
SetEnvIf Host ^myfurniturestore.com MAGE_RUN_TYPE=store
SetEnvIf Host myfashionstore.com MAGE_RUN_CODE=store2
SetEnvIf Host myfashionstore.com MAGE_RUN_TYPE=store
SetEnvIf Host ^myfashionstore.com MAGE_RUN_CODE=store2
SetEnvIf Host ^myfashionstore.com MAGE_RUN_TYPE=store
IMPORTANT:
But remember that Magento 2 cant share the cart and customer session if the different stores are accessed directly. Because Magento needs to see the Session ID to enable cart and customer account sharing. So we need to add the SID parameter to URLs pointing to other stores from our site. It is better to use Magento’s default store switcher for moving between different stores so that cart and customer session can be shared.
More explanation: http://www.webspeaks.in/2016/08/share-cart-magento-2-multistore-website.html