Outfit Shopping with the Bulk Purchase API

Can a user remove an item or multiple items from the bundle purchase? Say for instance they dislike one of the items or can only afford a few items in the bundle.

9 Likes

Hey sorry about this! We have a fix for this that will be released by Friday.

This will only happen in Studio on Windows machines and will not happen in production when you publish your game.

Until our fix goes out, if you want to avoid this from happening in studio to test the PromptBulkPurchaseFinished event or something, you can use items with ids smaller than 2147483647 (max 32 bit integer).

13 Likes

That’s great to hear! Thanks for letting me know!!

11 Likes

They should start including all possible purchasing products to be bought in bulk like a shopping cart experience not only for avatar items.

9 Likes

This is amazing for a project I’m working on, really helps simplify the process. Can’t wait to try using this!

7 Likes

This is super exciting news for catalog games and reduces the need for excess API calls!

Does the Roblox marketplace checkout use the same underlying API? :thinking:

image

9 Likes

Why limit it? This could be useful for other things such as bulk buying products and passes if we wanted to add a cart like system for developer products.

13 Likes

For some reason in my experiences it is prompting users with the resale copies even though there is still stock remaining?

11 Likes

I was testing this new API out and (I think) noticed some issues.
Simply put it doesn’t unlock the mouse meaning you can just force this onto a player’s screen without removal. Secondly, ESC doesn’t close the prompt and instead opens up the menu.

Again I’m not sure if this was intentional or not but yah.

8 Likes

MarketplaceProductType seems extremely similar to AvatarItemType; is there any reason why the latter Enum wouldn’t have worked?

Like you guessed, this is so that we have the flexibility to extend to other types in the future, potentially dev products like people in these comments have been requesting :slight_smile:

PromptBulkPurchaseFinished is entirely trust-based from the client

This is similar behavior to existing APIs like PromptPurchase - for that API even if you listen to it from server side, it is still not a trustable event since it can be spoofed by the client, however some devs are not aware of this vulnerability so they trust the event and the experience is exploited. To close this misunderstanding, we explicitly made it client-only.

That said, we understand this gap and are working on later improvements to close it.

what happens if a specific item is unavailable or a user doesn’t have enough Robux for all of the items but has enough for some of them

Like you guessed, it will purchase the items that can be purchased. For the items that cannot, refer to the MarketplaceItemPurchaseStatus for all the returned reasons that the items could fail.

13 Likes

This is likely because the particular item you are prompting is not available for sale in your experience for the original copies. But if you think that’s not the case, please DM me with more details on your experience / sample item and we can investigate.

13 Likes

Just to make sure I understand correctly, using something like MarketplaceService.PromptPurchaseFinished(
) on the server, when :PromptPurchase() was called on the client (or anywhere), is not secure and can be spoofed/faked?

Is the recommendation to run an ownership check on each item that was purchased on the server to make sure the client actually owns it?

10 Likes

See the PromptPurchaseFinished docs, specifically: This may not accurately reflect if the purchase itself has successfully processed

To elaborate further, the isPurchased field is based on an Ownership check, so it can be trusted insofar as to say “the user does own this item”, but it doesn’t necessarily mean that the user purchased the item in your experience, or that this event is the singular purchase event (eg you could get multiple PromptPurchaseFinished events for one purchase). Thus the guarantees that this offers are the same as if you checked ownership manually.

12 Likes

This update is amazing to bring in more revenue. Since that is the motive for this change, then how about the 10 purchase requests per minute mechanism should be lifted?

At one point there was no delay on buying products or gamepasses in roblox. Now there is, now this change might have been born due to third-party robux selling websites. It does for sure make their operations harder, but it also decreases the total revenue for the developers, as we are going to miss out on so much potentiel revenue.

9 Likes

I absolutely love this change! Thank you for this.

8 Likes

I’d REALLY love for this to be a feature implemented! Gifting of UGC purchases would be a huge deal that I really feel has a ton of potential.

I’d also love to know the status of accessory customization (ie. translation, rotation, scaling).

6 Likes

I feel like for Dev Products; since you can buy them multiple times; maybe have like a little section for the dev product and there should be a prompt that would say; “How Much of this Dev Product would you want?”, Then once the player inputs the amount of the dev product they need, then the price of the product multiplied by the quantity will be calculated for total cost.

tl;dr; For Dev Products - it should be the quantity of said product by player X price of product = total cost

6 Likes

That’s an awesome idea for dev products; my idea was more so aimed at gamepasses. No more having to make separate dev products for 10 coins, 50 coins, 100 coins and 1000 - players would simply be able to select how many 10s they wanted (or even better; type in an amount) and buy multiple of them at once, with a GUI showing the total amount of coins they’d receive after purchasing. Almost like a “quantity” dropdown you see on shopping websites these days when viewing your cart.

5 Likes

Still waiting for the ability to actually equip more than 4 hats at once, and multiple LC.

2 Likes

the former is possible through this little menu, you can wear up to 10 hats of any type

(don’t know why the avatar editor doesn’t just let you wear them like this directly without having to manually copy IDs though)

2 Likes