Unresolved Purchases via Developer Products

According to documentation, unresolved developer product purchases will “indefinitely be invoked” and “are not removed or refunded after the escrow period has expired”.

My question relates to scenarios when the environment changes where a developer product no longer makes sense in the given context. For example, if a player attempts to purchase a product, goes AFK, and the game proceeds rendering the product irrelevant.

I’ve considered a different setup where a developer product would increase a form of “currency”, and that currency could be “spent” whenever a player needs to use it. This would always ensure that the player gets rewarded for their purchase, and in the case that the product no longer applies to the situation, they could “spend” their currency the next time the event occurs.

This solves these issues but the documentation also says ProcessReceipt returning “NotProcessedYet indicates the developer product’s benefit could not be granted, such as a product the player is not eligible to purchase, is no longer relevant to the current experience state, etc”.

This would work assuming after X amount of time, the request was dropped and the player was refunded. I believe this used to be legacy behavior according to other post, however this doesn’t seem to be the case anymore. This creates a potential issue when returning NotProcessedYet. The player will not only spend their Robux for no reward, the code will also be indefinity invoked even though it no longer applies.

The only solution I have to this would be to introduce a currency system which would solve these issues, but I don’t see a lot of games doing this. Another solution could be Roblox introducing an enum called ProductPurchaseDecision.CancelRequest which would instantly refund the user and drop the request.

I may end up creating a feature request for this enum but first wanted to see how other people handle this situation.

2 Likes