I'm trying to get some dev products working and half the time they do not work, the purchase goes though but the actual code I'm running doesn't execute.
Here is my purchase handling (server side)
local Mps = game:GetService("MarketplaceService") local DSS = game:GetService("DataStoreService") local Plrs = game:GetService("Players") Mps.ProcessReceipt = function(receiptInfo) local buyingplr = Plrs:GetPlayerByUserId(receiptInfo.PlayerId) if receiptInfo.ProductId == 1014292170 then if buyingplr and game.ServerStorage.PlayerMoney:FindFirstChild(buyingplr.Name) then local stats = game.ServerStorage.PlayerMoney[buyingplr.Name] stats.Value += 100000 end end DSS:GetDataStore("ProductPurchases"):IncrementAsync(receiptInfo.PlayerId.."_"..receiptInfo.ProductId, 1) return Enum.ProductPurchaseDecision.PurchaseGranted end
and here is my local side handling
local Mps = game:GetService("MarketplaceService") local players = game:GetService("Players") local prodID = 1014292170 local function promptPurchase() local player = players.LocalPlayer Mps:PromptProductPurchase(player, prodID) end script.Parent.MouseButton1Click:Connect(promptPurchase)
It tends to work for the first 20 seconds after the player joins, then it does nothing (unless you purchase within those 20 seconds or so then it works for the rest of the time you're in game)