As a developer, it is impossible to correct issues with previous developer product purchases at scale without keeping a manual DataStore record of every developer product purchase players have ever made.
For games early on in development that wish to restart player files for various reasons, realizing you haven’t been tracking player product purchases can stop your plans dead in their tracks. This should be handled for devs at the platform level.
All developer product purchases are routed through a single function due to the implementation of MarketplaceService.ProcessReciept
. If there was an API that allowed the game to obtain a table of receiptInfo
dictionaries corresponding to a player’s developer product purchases in that game, it would be trivial for a developer to re-fulfill a player’s lost transactions by simply running them back through their ProcessReciept
function.
Rather than having to store the entire receiptInfo
dictionary in DataStores to record the fufillment, the developer would then only have to store the receiptInfo.PurchaseId
unique string identifier.
This information is tracked by Roblox for CS. Surfacing it to developers via an API is a quick and powerful solution that would allow us to effectively correct issues with developer products at scale, more efficiently track purchase history in our DataStores, and enable in-development games to reset player progression without having to revoke something players paid for.