Hi, so I’m trying to make a product to where when you purchase it, it will insert the sound with the ID set by the player. However, on the script I’m using to process the receipt, it defines the ID at the beginning of the script before the player even types it in, so it won’t actually give it the ID that the player wants.
Here is the script:
local MarketplaceService = game:GetService("MarketplaceService")
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local purchaseHistoryStore = DataStoreService:GetDataStore("PurchaseHistory")
local productFunctions = {}
productFunctions[1171899953] = function(receipt, player)
local box = player.PlayerGui:FindFirstChild("settings").mainSettings.playAudioPrompt.Frame.enterID
local assetID = tonumber(box.Text)
if assetID then
local sound = Instance.new("Sound")
sound.Parent = game.Workspace.songs
sound.SoundId = ("rbxassetid://"..player.PlayerGui:FindFirstChild("settings").mainSettings.playAudioPrompt.Frame.enterID.Text)
sound.Name = "playerSound"
return true
end
end
local function processReceipt(receiptInfo)
local playerProductKey = receiptInfo.PlayerId .. "_" .. receiptInfo.PurchaseId
local purchased = false
local success, errorMessage = pcall(function()
purchased = purchaseHistoryStore:GetAsync(playerProductKey)
end)
if success and purchased then
return Enum.ProductPurchaseDecision.PurchaseGranted
elseif not success then
error("Data store error:" .. errorMessage)
end
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
local handler = productFunctions[receiptInfo.ProductId]
local success, result = pcall(handler, receiptInfo, player)
if not success or not result then
warn("Error occurred while processing a product purchase")
print("\nProductId:", receiptInfo.ProductId)
print("\nPlayer:", player)
return Enum.ProductPurchaseDecision.NotProcessedYet
end
local success, errorMessage = pcall(function()
purchaseHistoryStore:SetAsync(playerProductKey, true)
end)
if not success then
error("Cannot save purchase data: " .. errorMessage)
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end
MarketplaceService.ProcessReceipt = processReceipt
Is there any way I can combat this issue? Any support is appreciated.