A Method to fetch Regional Price on the SERVER

As mentioned ^

GetUsersPriceLevelsAsync is not good enough, we should have a method to fetch actual Regional price for each user

and we can’t and shouldn’t rely on GetProductInfo() either because it can be easily spoofed

Why is this not good enough though? According to the documentation linked that function should be returning the percentage amount of the original price that user is paying which should be enough for a server-side check unless there’s important details you are leaving out in both posts.

4 Likes

I think I see where they are coming from. OP might be wanting to correct in-game currency trading between players based on the region in which the user purchased said amount of in-game currency. So one player’s currency is worth less than another player’s. I’m pretty sure that’s against Roblox TOS though. I’m thinking it’s problematic in part to regional laws about loot boxes, in-game trading, in-game currencies, etc. Also, Roblox doesn’t necessarily support in-game currencies officially, at least I don’t think so. If they did, they’d have more APIs, methods, and documentation in place to help developers setup in-game currencies more efficiently and in a way that they can standardize, regulate, track, and monitor it across games. However, we just have gamepasses and devproducts. Heck, Roblox doesn’t even like us gifting other players gamepasses, otherwise we wouldn’t need to use devproducts to make “pseudo-gamepasses” to achieve player-to-player gifting.

I’m trying to implement a F2P gamepass system where pricing is based on their regional pricing

I can’t do that accurately without Server side price checks

What I’m confused about is why you cannot combine GetUsersPriceLevelsAsync with the ProductInfo, seeing as the price level is literally implied to be the percentage discount they get off of it as a result of regional pricing. What’s stopping you from multiplying the price from ProductInfo by PriceLevel/1000 (for reference, this documentation page that the method links to directly states that a level of 500 for example corresponds to a 50% discount is my point)?

You’re right I got confused when I read the documentation because it was wrong

For example, a price level of 100 means that the suggested price for that user (based on their region and purchasing power) is 100 Robux.

It’s supposed to be 1000, so when I read the documentation at first I thought it’s unreliable