Why doesn't this work?

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

2 Likes