Reproduction Steps
When Enum.ProductPurchaseDecision.NotProcessedYet
is returned by the MarketplaceService.ProcessReceipt
function, the purchase still completes successfully and charges the end user.
Here’s a link to a place currently affected: ProcessReceipt Demo - Roblox
Repro Steps:
- Put the following code in a Script in ServerScriptService:
MarketplaceService = game:GetService("MarketplaceService")
MarketplaceService.ProcessReceipt = function()
return Enum.ProductPurchaseDecision.NotProcessedYet
end
- Put the following code in a LocalScript in StarterPlayerScripts
MarketplaceService = game:GetService("MarketplaceService")
Players = game:GetService("Players")
local devProductId = 1234918738 -- CHANGE THIS TO THE ID OF A DEV PRODUCT THAT IS AVAILABLE IN YOUR GAME
while wait(1) do
MarketplaceService:PromptProductPurchase(Players.LocalPlayer,devProductId)
end
- Play the game and buy the developer product.
Expected Behavior
It should not charge the user as ProcessReceipt
did not return Enum.ProductPurchaseDecision.PurchaseGranted
.
Actual Behavior
The user is charged their robux even though the purchase was supposed to fail!
Issue Area: Engine
Issue Type: Other
Impact: Very High
Frequency: Constantly
Date First Experienced: 2022-01-25 00:01:00 (-05:00)