I don't know if this correct

-- setup local variables
local MarketplaceService = Game:GetService("MarketplaceService")
local ds = game:GetService("DataStoreService"):GetDataStore("PurchaseHistory")
local productId = 19433950

-- define function that will be called when purchase finished
MarketplaceService.ProcessReceipt = function(receiptInfo) 

	-- find the player based on the PlayerId in receiptInfo
	for i, player in ipairs(game.Players:GetChildren()) do
		if player.userId == receiptInfo.PlayerId then
			
			
			-- check which product was purchased
			if receiptInfo.ProductId == productId then
				
				-- handle purchase. In this case we are healing the player.
				player.Character.Humanoid.Health = 100
				-- more feedback for the player.
				game.Workspace.DisplayScreen.SurfaceGui.TextBox.Text = player.Name .. " has donate and get free full health."
			end
		end
	end	
	
	-- record the transaction in a Data Store
	local playerProductKey = "player_" .. receiptInfo.PlayerId .. "_purchase_" .. receiptInfo.PurchaseId
	ds:IncrementAsync(playerProductKey, 1)	
	
	-- tell ROBLOX that we have successfully handled the transaction
	return Enum.ProductPurchaseDecision.PurchaseGranted		
end

Then the LocalScript in StarterPack

local MarketplaceService = Game:GetService("MarketplaceService")
local buyButton = game.Workspace.BuyButton.SurfaceGui.TextButton
local productId = 19433950
 
buyButton.MouseButton1Click:connect(function()
	MarketplaceService:PromptProductPurchase(player, productId)
end)

My used models BuyButton, Display screen, Damage Health (i deleted that)

PLEASE HELP ME!