I'm making a gamepass GUI shop for my game and I cannot find the error, however when I try to buy a gamepass I get this text:
"Your purchase failed because something went wrong. Your account has not been charged. Please try again later."
Here is my PurchaseScript
local MarketplaceService = game:GetService("MarketplaceService") --[TOOLS] local tools = game.ServerStorage.Tools --[id] = ToolName local list = { [21842414] = "GravityCoil",, [21842376] = "SpeedCoil", [90075532] = "SuperCoil", } local skip = 1179259924 local function processReceipt(receiptInfo) local player = game:GetService("Players"):GetPlayerByUserId(receiptInfo.PlayerId) if not player then -- The player probably left the game -- If they come back, the callback will be called again return Enum.ProductPurchaseDecision.NotProcessedYet end print(receiptInfo.PlayerId .. " just bought " .. receiptInfo.ProductId) local sound = Instance.new("Sound", player) sound.SoundId = "rbxassetid://254003734" sound.PlayOnRemove = true sound:Play() sound:Destroy() if receiptInfo.ProductId == skip then --SKIP STAGE player.leaderstats.Stage.Value = player.leaderstats.Stage.Value + 1 player:LoadCharacter() else local tool = list[receiptInfo.ProductId] --TOOL tools:FindFirstChild(tool):Clone().Parent = player.Backpack tools:FindFirstChild(tool):Clone().Parent = player.StarterGear end return Enum.ProductPurchaseDecision.PurchaseGranted end MarketplaceService.ProcessReceipt = processReceipt
I think though the bug may be coming from my LocalScript? I have an ImageButton opening prompts yet however it's not working.
local player = game.Players.LocalPlayer local ScreenGui = script.Parent local ShopButton = ScreenGui:WaitForChild("ShopButton") local ShopFrame = ScreenGui:WaitForChild("ShopFrame") local SkipStageButton = ScreenGui:WaitForChild("SkipStageButton") local UserInputService = game:GetService("UserInputService") local MarketplaceService = game:GetService("MarketplaceService") function promptProduct(productID) MarketplaceService:PromptProductPurchase(player, productID) end local DB = false ShopButton.MouseButton1Down:Connect(function() if not DB then DB = true if ShopFrame.Visible then ShopFrame.Visible = false else ShopFrame.Visible = true end wait(0.5) DB = false end end) SkipStageButton.MouseButton1Down:Connect(function() promptProduct(1179259924) end) --[SHOP FRAME] for i,v in pairs(ShopFrame:GetDescendants()) do if v:IsA("ImageButton") then v.MouseButton1Down:Connect(function() promptProduct(tonumber(v.Name)) end) end end --[HOVER SOUND EFFECT] for i,v in pairs(ScreenGui:GetDescendants()) do if v:IsA("ImageButton") then v.MouseEnter:Connect(function() local sound = Instance.new("Sound", player) sound.SoundId = "rbxassetid://408524543" sound.PlayOnRemove = true sound:Play() sound:Destroy() end) end end --[REPOSITION FOR MOBILE] if UserInputService.TouchEnabled then wait() ShopButton.Position = UDim2.new(0, 0,0.45, 0) SkipStageButton.Position = UDim2.new(0, 0,0.45, 0) end