If there are more than one shops in an order, for each individual sub-charge(one for each shop), buyer should get charged the cost of this specific shipment.
If there are more than one shops in an order, For each individual sub-charge(one for each shop), buyer gets charged the full shipping cost(of all shipments combined)
Enable a flat rate shipping option(e.g priority) from the marketplace dashboard.
Create two merchants with one product for each one.
Sign in with a third account(as a buyer) and add to card these products.
Select the available shipping rate .
Complete the payment.
In the order complete screen, each subcharge will have the whole shipping cost(of the two shipments combined).
Also If you login as a one of these sellers, and open this order, you will see the total shipping cost applied to the seller's subcharge.
Node: 4.2.6
NPM: 5.3.0
Meteor Node: 4.8.4
Meteor NPM: 4.6.1
Reaction CLI: 0.19.0
Reaction: 1.5.4
Reaction branch: master
Docker: 17.03.1-ce


I' ll push a pr tomorrow
I actually think this is the expected/desired behavior not a bug. Each shop requires a shipment and needs to charge for it. @spencern We discussed this a bunch of times. This is how we decided to do this for now, correct?
Hmm Sorry it seems it's not clear in these pics what exactly is the problem. The actual problem is that the shipping rate selected had an amount of 3 . So each of these sellers should get paid this 3$ (not 6). I had attached a picture of rates selection but somehow escaped ;)
@zenweasel @spencern I updated the pics so it's easier to spot the bug : Buyer gets charged $337,96 instead of $323,98 as he's charged the order's total shipping cost(6.99+6.99) twice.
I just tested this now and I don't think the issue you are reporting is due to the way shipping is being calculated but the way it is being displayed in the Completed Order page. If you look at the order confirmation email you can see that the merchandise total + the shipping total = the correct total displayed. In your own screenshots you can see that the total displayed actually reflects the shipping just being charged once per shop at the correct amount. ($10 + $300 + $13.98 = $323.98). There is an issue there, but I it's not affecting what the customer is being charged.
Here's screenshot of the order confirmation email

and my completed order page

and the order dashboard

Again to clarify. It is the expected behavior that if the shipping rate is $2.99 each shipment will be charged $2.99, thus the total charge to the customer will be $5.98. If there were 10 different sellers on this order the charge would be $29.90.
So think the only issue is here, this should each say $2.99, not $5.98.

Based on your PR it fixes the above issue so maybe I misunderstood what you were trying to say here
@zenweasel With the last Reaction's implementation of charges(e.g in Stripe) an individual charging of buyer, happens for each different Shop of the cart, so in your example two different stripe charges will take place.
You can see that if you check the Shop-loop in imports/plugins/included/payments-stripe/server/methods/stripe.js:210 (Method: "stripe/payment/createCharges")
So the "Order Total"($47.97) is not the amount that actually get charged. Instead buyer will get these two separate charges:
53,95
At the end of the day ,buyer will get charged totally: 53.95 and not the correct 47.97
Fixed.
Most helpful comment
I' ll push a pr tomorrow