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
I think you need to have the Process Receipt in a server script and the part that does the purchase in a LocalScript.