Can only register ProcessReceipt callback on server error

I am trying to make a devproduct that gives cash once you purchase (You need to click a button for it to come up)

Here is the error I am getting:


Here is my code:

local button = script.Parent
local mpService = game:GetService('MarketplaceService')

button.MouseButton1Down:connect(function()
	mpService:PromptProductPurchase(game.Players.LocalPlayer, 1361964963)
end)

function mpService.ProcessReceipt(receiptInfo)
	local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)
	if receiptInfo.ProductId == 1361964963 then
		player.leaderstats.cash.Value = player.leaderstats.cash.Value + 50000
		return Enum.ProductPurchaseDecision.PurchaseGranted
	end
end

I am still struggling and do not know how to fix.

the ProcessReceipt function has to be used in a server script

2 Likes

Would this not make the prompt go on every screen?

make the mousebutton1down function in a local script but make a server script in serverscriptservice for the ProcessReceipt function

Local script inside button -

local button = script.Parent
local mpService = game:GetService('MarketplaceService')

button.MouseButton1Down:connect(function()
	mpService:PromptProductPurchase(game.Players.LocalPlayer, 1361964963)
end)

Server script in ServerScriptService-

local mpService = game:GetService('MarketplaceService')
function mpService.ProcessReceipt(receiptInfo)
	local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)
	if receiptInfo.ProductId == 1361964963 then
		player.leaderstats.cash.Value = player.leaderstats.cash.Value + 50000
		return Enum.ProductPurchaseDecision.PurchaseGranted
	end
end
1 Like

“Player should be of type player” This is the error I am getting.