Etsy style checkout

Hi, we are developing our network of shops now and it's coming along well. We do not use chained payments as each shop owner will accept their own payments, we are doing this on a setup fee plus monthly rental basis.

So we need to figure out how to create an Etsy style checkout page. The way this works is that as products are added to the various carts they are displayed on a shared checkout page, so for example if a product is added from shop 1, on the checkout page the item is listed along with the cart widget for that vendor, when the next product is added from a different vendors shop, this too appears on the shared checkout page along with that vendors cart widget and so it goes on.

Now the buyer will pay for the first item and then be returned back to this shared checkout page to buy the next item they have chosen from a different vendor.

To get a better idea visit and add a few different products from different sellers to your basket and then look at the checkout page - seeing it explains it better than words!

Anyway my question is has anyone achieved this and of so would you share how you did it please.

On reflection and after reading other threads on this subject I should add that I have turned the global cart off. The reason I did this was that with it on it allowed me to enter my own PP API details on the main site but was not allowed to add the api details for the other stores, so when we tested the checkout all payment were coming to me.

If we could figure out how to create a shortcode to each individual cart on each shop and then place them in a page on the main site this might work, the proviso is that the a cart should not display if it has no items added.

many thanks


  • Arun Basil Lal

    Hey Dave,

    I am told that at an earlier stage something like this was a feature of the MarketPress plugin. Users could add products into cart (global) and then with chained payments, one single checkout could do the job.

    But, with chained payments, paypal has a max limit of 10 transactions. So if the site owner is taking a share for each sale, the max number of shops that the person can purchase would be (10/(1+1))=5.

    But the way etsy works (didn't realize it before) sounds interesting. Even the process doesn't have to be automated right? You could open up the checkout pages in a new window and when one is done, users can simply switch to the other window and click open and checkout another cart.

    With the current set-up, there should be a way to figure out which products come from which shop and then generate a similar cart on the specific shop based on the list. Maybe you should try creating this as a project on our jobs site:

    Let me ping the developer and see what he have to say in this matter. Good luck!

  • ozbod

    Hi Arun,

    thanks for your reply, I spent a lot of time working out how to make chained payments work, in fact I wrote a "how to" on for this forum.

    But needs have changed so that's why we are not using chained payments anymore, plus if the site grown the Pay Pal limitation of a max of 10 will become a burden.

    What I need to do is set up a page, let's call it "checkout" for example, now on this page we need to be able to place one or more checkouts.

    So let's say a buyer adds something to their cart when they are on shop 1 for example. At this point we would want the shop 1 cart to appear on the new checkout page.

    Now this same buyer goes to say shop 10 on the network and adds another item, we would want this shop 10 cart to also appear on the checkout page.

    This process would keep on repeating each time the buyer adds new items to his.her cart.

    Now the buyer decides that's enough, time to buy what's in my carts, so the buyer uses the first cart on the checkout page, makes his/her payment through Pay Pal and is then returned to the checkout page (this is crucial), at this point shop 1 checkout has disappeared. Now the buyer pays for his/her purchase on the checkout page for the item from shop 10, on completion of the purchase they land back on the checkout page again,but this time they must have some message stating "thank you for your purchases, the sop owners will be in touch" or something like that.

    This way there is no Pay Pal limitation regarding the number of purchases and it's the shop owners sole responsibility to provide customer services and ensure the items are shipped, the network owner has not passed his own pay pal details at all during any transaction - sweet!

    Just got to figure out how to do the checkout page, for example, is it possible if I were to place the checkout page on the main site and use the shortcode of:


    but be able to have:

    [mp_cart_link] for shop 1
    [mp_cart_link] for shop 2
    [mp_cart_link] for shop 3

    and so on for each shop on the network and what would I need to add to each short code to reference each shop.



  • ozbod


    could anyone tell me which tables in the DB are used for the shopping cart, I would imagine there would be a flag set somewhere when a product is added to a cart in the network.

    If I can get the data from the database for each shop then I could try building my own global checkout page which shows a checkout for each shop on the network that has products in their carts.

    Now as long as each shop owner sets their paypal return to url to this new checkout page the buyer should arrive back here after making their first purchase.



  • Paul

    @ozbod This si going to be a two-part answer.

    First to address your new question. MarketPress orders and Products are stored in the site's posts table as custom Post Types. So you can query these using WP_Query or get_posts using the post type key order = mp_order and products = product

    If you build some code to query the orders. The order details will be stored in the post_content field as a serialized PHP array.

    My second part answer is back to your original question. So looking deeper are MarketPress this week (I'm still learning some of the deeper functionality). I do see that MarketPress does support something of a global cart. So try this if you have not already.

    1. On your Network admin section go to Settings > MarketPress In the first section 'General Settings' you should see the radio set for 'Enable global shopping cart'. Set this to 'Yes'. At this point on my end I have three sites setup with fictitious products. I can add products from each. Then when I go to any site's shopping cart they display together.

    I'm not sure at this point on the payment setup. I've been reading that MarketPress support Chained payments through PayPal. But have not tried it under my development environment.

  • ozbod

    Hi Paul,

    first of all thanks for this, gives me a direction which I needed.

    When I first set up this site I used the global cart along with chained payments, took a quite a bit of head scratching to work it but got there, there is a tutorial I wrote on this somewhere on this forum.

    Anyway the goal posts have changed now as I described at the top of this post so global cart won't work for what I am now trying to do, also if I remember correctly with chained payments off and global cart on I could connect to pay pal because it's looking for my API as the network owner. So I had to disable global cart to allow each store owner to have their own connection with pay pal using express checkout.

    So I am now just trying to get all those shop checkouts, those that have products in, onto a new checkout page so the buyer can buy from each shop one by one.



  • aecnu

    Greetings Dave,

    It appears this particular topic is now resolved/closed, if you need any further assistance please let us know.

    If it wasn't resolved, or you have any more questions related to this thread, please feel free to post them below including any new symptoms or errors and tick the 'Mark as Not Resolved (re-open)' box below the post area (or else we'll miss it!)

    Thank you for being a WPMU Dev member!

    Cheers, Joe

  • Aaron

    Going back to the original question, your exact use case is what the global cart is designed for. You use normal paypal gateway, and each store enters their own paypal credentials (actually they only need their paypal email), and you enter your full credentials in network settings that are used for the api call.

    If a specific store hasn't set their paypal email, then products from it will be excluded from the order.

    If you are wanting to code your own different system that's way beyond what we can help with here, it'll be super complicated and a ton of core edits to MP.

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.