Hey I made this for my Developer Products and I don’t know why it doesn’t work.
local MarketplaceService = game:GetService(“MarketplaceService”)
local DataStoreService = game:GetService(“DataStoreService”)
local DataStore2 = require(script.Parent:WaitForChild(“DataStore2”))
local currencyName = “Coins”
local PreviousPurchases = DataStoreService:GetDataStore(“PreviousPurchases”)
local FOUR_HUNDRED_CASH = 1040498629
local THOUSAND_CASH = 1040499067
local THOUSAND_TWO_FIVE_CASH = 1040499576
MarketplaceService.ProcessReceipt = function(receipt)
--Receipt has PurchaseID
local ID = receipt.PlayerID.. "-"..receipt.PurchaseId
local success = nil
pcall(function()
success = PreviousPurchases:GetAsync(ID)
end)
if success then
return Enum.ProductPurchaseDecision.PurchaseGranted
end
local player = game.Players:GetPlayerByUserId(receipt.PlayerId)
if not player then
return Enum.ProductPurchaseDecision.NotProcessedYet
else
local CoinStore = DataStore2("Coins", player)
if receipt.ProductId == FOUR_HUNDRED_CASH then
CoinStore:Increment(400)
end
if receipt.ProductId == THOUSAND_CASH then
CoinStore:Increment(1000)
end
if receipt.ProductId == THOUSAND_TWO_FIVE_CASH then
CoinStore:Increment(2500)
end
pcall(function()
PreviousPurchases:SetAsync(ID, true)
end)
return Enum.ProductPurchaseDecision.PurchaseGranted
end
end
It’s in ServerScriptService and a regular script