Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

What is wrong with my DevProduct script? [UNANSWERED]

I've got this script that yes, admittedly, I found from a Tutorial. I converted the connection line to a MouseClick for my gui. In the output, I get "Feature is turned off."

-- setup local variables
local MarketplaceService = Game:GetService("MarketplaceService")
local ds = game:GetService("DataStoreService"):GetDataStore("PurchaseHistory")
local productId = 20679593 
local Gems = 10

script.Parent.MouseButton1Click:connect(function()
local DeveloperProducts = game:GetService("MarketplaceService"):GetDeveloperProductsAsync():GetCurrentPage()
for _, DevProductContainer in pairs(DeveloperProducts) do
    for Field, Value in pairs(DevProductContainer) do
        print(Field .. ": " .. Value)
    end
end
end)

-- define function that will be called when purchase finished
MarketplaceService.ProcessReceipt = function(receiptInfo) 

	-- find the player based on the PlayerId in receiptInfo
	for i, player in ipairs(game.Players:GetChildren()) do
		if player.userId == receiptInfo.PlayerId then
			
			
			-- check which product was purchased
			if receiptInfo.ProductId == productId then
				
				-- handle purchase. In this case we are adding gems
				player.leaderstats.Gems.Value = player.leaderstats.Gems.Value + Gems
				
			end
		end
	end	
	
	-- record the transaction in a Data Store
	local playerProductKey = "p_" .. receiptInfo.PlayerId .. "_p_" .. receiptInfo.PurchaseId
	ds:IncrementAsync(playerProductKey, 1)	
	
	-- tell ROBLOX that we have successfully handled the transaction
	return Enum.ProductPurchaseDecision.PurchaseGranted		
end

1 answer

I think you need to have the Process Receipt in a server script and the part that does the purchase in a LocalScript.

This discussion is preserved as it was. New answers, comments, and votes are closed.