Developer Product purchases still complete successfully when Enum.ProductPurchaseDecision.NotProcessedYet is returned

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:

  1. Put the following code in a Script in ServerScriptService:
MarketplaceService = game:GetService("MarketplaceService")

MarketplaceService.ProcessReceipt = function()
	return Enum.ProductPurchaseDecision.NotProcessedYet
end
  1. 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
  1. 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)

1 Like

I think you have a misunderstanding about how this API is meant to work. The user is always immediately charged their Robux regardless of whether you even connect to ProcessReceipt.

They get their money back after 3 days if you haven’t managed to return the success enum by then. If you return anything but success, ProcessReceipt is invoked again every so often / every time the user rejoins the game until you return success.

6 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.