Need a way to reject developer product purchases ENTIRELY or limit the amount of times a player can purchase a developer product

As a Roblox developer, it is currently too hard to give players a fair experience when buying products due to roblox service failures leading to multiple transactions on single use purchases. Sometimes a gamepass doesn’t suit the use for a one time purchase and if players manage to double transact, they will never be granted the purchase because the dev product can only be applied once.

If we were able to reject purchases outright instead of only marking “NotProcessedYet” it would allow us to actually handle invalid transactions rather than just making the player wait days to receive a refund.

If Roblox is able to address this issue, it would improve my development experience because it would allow players to get what they paid for, and if not that then a prompt refund.

Another option would be allowing a limit for the number of times a developer product could be purchased. Either way works for me…

From the API
The supported ProductPurchaseDecision values in Roblox are:

  1. NotProcessedYet: This value indicates that the purchase request has been sent but has not yet been processed. It could mean that the purchase is still being reviewed or that there is a delay in processing the purchase.
  2. PurchaseGranted: This value indicates that the purchase has been processed and granted to the user who initiated the purchase request. It means that the player has successfully received the benefit or item associated with the developer product.

These two values are used in conjunction with the MarketplaceService and the sale of developer products in Roblox. They help determine the status of a purchase and whether the player should receive the intended benefit or not.

We need Enum.ProductPurchaseDecision.PurchaseRejected so we can refund a player immediately OR single purchase dev products to prevent the issue entirely.

To be totally clear, gamepasses are not an option because things that have pre-requisites for the purchase cannot be applied to gamepasses since they are available outright on the website and there is no way to guard forced purchases from the client.

12 Likes

MarketplaceService.ProcessReceipt

1 Like

Massive support. The lack of a PurchaseRejected option has led to numerous headaches, especially surrounding people thinking their purchase succeeded when really it didn’t due to a Datastore flaw/edge-case bug in our code/some other event.

If we were able to decline purchases, I’d be able to prevent receipts retrying over the next 72 hours when in reality, they will never pass at all due to the circumstances they were bought under, whether that was due to a bug or the game state changing.

Here’s a very simple case:

  • Player1 and Player2 are both ingame.
  • Player1 decides to gift Player2 something, or decides to instantly kill them. Both of these would happen via dev product.
  • In the time Player1 is opening their prompt, Player2 decides to abruptly leave the server.
    • This is more likely than you may think, especially for larger games. Mobile players or younger children tend to go through menus slowly and may not notice any changes in the leaderboard.
  • Now if Player1 still buys it, no matter what, their purchase will never succeed.

I want to be able to decline this purchase outright. There’s no reason it should ever go through and take the player’s money for a few days.

10 Likes