The script only provides the player point after they rejoin a new server. I was wondering if there is anything wrong with the script? It's currently placed within the ServerScriptStorage.

local MarketplaceService = game:GetService("MarketplaceService")
local ds = game:GetService("DataStoreService"):GetDataStore("PurchaseHistory")
local points = game:GetService("PointsService")
local testpoints = 19280588


MarketplaceService.ProcessReceipt = function(receiptInfo)
    for i, player in ipairs(game.Players:GetChildren()) do
        if player.userId == receiptInfo.PlayerId then
	print("Well, lets start!")
           if receiptInfo.ProductId == testpoints then
                points:AwardPoints(player.userId, 1)

	print("Transaction Was seccesful_" .. receiptInfo.PlayerId)
            end
        end
    end    
    local playerProductKey = "player_" .. receiptInfo.PlayerId .. "_purchase_" .. receiptInfo.PurchaseId
    ds:IncrementAsync(playerProductKey, 1) 
    return Enum.ProductPurchaseDecision.PurchaseGranted    
end