Hey, This bug is one that is happening in all Roblox games since probably the Marketplace Service exist…
I’m reporting it mainly for Comission Purchases in a game, Since there is no way to know if the purchase failed that the player really bought the product in our games.
Basically, when you purchase something that cost Robux in a game, The purchase prompt will show and you will be able to make the purchase. Once the purchase is completed and your Robux are withdraw from your account, a new popup from the prompt is asking you to press ok.
Did you know that the Confirmation Event that the game need to process the purchase is only sending after the player pressed that OK Button?
There is multiple Cases where the player can lose the product he paid for with that problem. The game never received a confirmation and the player lost his Robyx.
1- If after the purchase the player close the game without pressing Ok.
2- If after the purchase the player client crash or the Server restart before he has time to press Ok.
3- If the player delete the Gamepass from his Inventory before pressing Ok.
Its a problem that we need to take seriously and fix as soon as possible!
Thanks!
Whilst this is not a bug, but instead intended behavior, Roblox should still make it so purchases are processed as soon as they actually happen, not once the user decides to press ‘OK’ on the completion prompt. For donation games like yours, this opens the door to exploits that allow users to create fake donations by manipulating the price of the item after they’ve purchased it and then pressing the ‘OK’ button a few minutes later so it registers the purchase as the changed price.
If purchases were sent to the server AS SOON as they actually happened, it’d make it so much easier and we’d be able to know exactly when the player purchased the item and for what price. Either do this, or add a simple “price” parameter to the prompt finished events - this wouldn’t take much effort at all from Roblox engineers.
Agreed, Roblox could improve some security regarding the gamepass purchases. I’m also working on a donation game and this would be a great solution for exploit-like problems.
Howdy, looks like others have beat me to the punch, but… this looks to be an intended behaviour, see: PromptGamePassPurchaseFinished
If the consumer were to disconnect prior to clicking OK, their GamePass should be detected via UserOwnsGamePassAsync on join, or click depending on how you have your game set up.
With that being said, if you still have concerns about the functionality of it, you ought to post something similar to this as a feature request.
First of all, thank you so much for the fast response - it’s not something you see from engineers every day.
Hmmm. It works differently to dev products, though? Dev products are instantly processed on the server using ProcessReceipt when purchased… shouldn’t it be the same behavior across all purchase types?
The main probleme here is with game Commissions.
In Donations games like PLS BUY ME, PLS DONATE, Starving Artist, Clothing Selling games and Many more… the players are selling their own Gamepasses and Cloths … So there is NO way for us to verify the purchase in that case if the player never pressed the OK button.
You’re welcome! I’m not an engineer, I work for DevRel and enjoy coding in my free time, so that inquiry should be left for them. I’m still going to pass this forward for some further insight.
Wanted to speak my two cents since I ran into this before with previous projects.
As for the difference, I can only guess it’s since one is a one-time-use consumable, whereas the other is a permanent item. I’ll let them comment on that one.
Thanks so much – appreciate the info here. Even if this is intended behavior and not something that could be changed just like that, there’s quite a few solutions at hand here (returning a price in the second parameter of the purchase finished events, making them fire as soon as it’s purchased, etc) and I’d be happy to provide a list of them to you/the engineer that takes a look at this to consider.
I’m also more than happy to DM you with a list of vulnerabilities (most of which are almost unpatchable from a developer’s pov) that allow users to fake donations and bypass most of our server checks. It could give engineers a bit more insight into how this is actually happening and why we are begging for a resolution on Roblox’s end let me know!
Unfortunatly, your solution above isnt valid with Comission For Passes and Commission For Avatar Shop Items.
There is nothing in the Data that we have access that can Verify that the Gamepass or Avatar shop product has been purchased from our game.
Fixing the problem at the source would be to return the event as soon as it has been sold.
An other solution would be to add the Game the Gamepass or Avatar item got purchased in. So we would be able to Verify in some way. ( not my favorite fix tho )
We are investigating this internally to find the best path forward. We do think providing a mechanism where the sales location and price of an item transaction can be verified is useful and reasonable.
It’s been 3 months since this reply with no update. We’re hoping to support the sale of in-experience limited items from resellers in our donation game but this would be practically impossible without this improvement. We’d really appreciate an update on this and I sincerely hope it hasn’t been forgotten about.
It’s been 10 months since your last reply. Are there any updates you or any other engineer can provide us with on the status of this fix? I appreciate it is going to require somewhat of a restructure of purchase handling methods but communication would be appreciated.