Process Receipt issues

The receipt keeps returning this:
image
is this an internal issue on Roblox’s behalf, or is there something I can do to correct this error? What are possible causes of the process failure?

Ask away if you need help understanding anything.

I would really hope this isn’t an internal issue on roblox, because this would be a massive issue. There is a strong possibility that an error is occurring somewhere within the function that gets called when a receipt is created. Assure that your different exceptions are accounted for and that it is working as intended.

More info can be found here : MarketplaceService.ProcessReceipt

For the specifics of why your function might be failing i would have to see your receipt handling function which I don’t currently see.

LOCAL SCRIPT

-- Bools
local Bools = {
	CanDonate = true
}

-- Client Modules
local ClientModulesFolder = game.ReplicatedFirst:WaitForChild("ClientModules")

local ClientModules = {
	NotificationFunctions = ClientModulesFolder:WaitForChild("NotificationFunctions")
}

ClientModules.NotificationFunctions = require(game.ReplicatedFirst.ClientModules.NotificationFunctions)

-- Marketplace Modules
local MarketplaceModulesFolder = game.ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Marketplace")

local MarketplaceModules = {

	DeveloperProducts = MarketplaceModulesFolder:WaitForChild("DeveloperProducts")
	
}

MarketplaceModules.DeveloperProducts = require(game.ReplicatedStorage.Modules.Marketplace.DeveloperProducts)

-- UI
local DonationWindowFrame = script.Parent:WaitForChild("DonationWindowFrame")
local DonationFramesFrame = DonationWindowFrame:WaitForChild("DonationFrames")

-- Functions
local function BindClickEvents()
	if DonationFramesFrame then
		for i, frame in pairs(DonationFramesFrame:GetChildren()) do
			local textButton = frame:WaitForChild("TextButton")
			local productId = MarketplaceModules.DeveloperProducts.Ids.Donations[frame.Name]
			if productId then
				textButton.MouseButton1Click:Connect(function()
					if Bools.CanDonate then
						Bools.CanDonate = false
						local Purchased = MarketplaceModules.DeveloperProducts.Functions.PromptUserDeveloperProduct(
							game.Players.LocalPlayer,
							productId,
							false
						)
						if Purchased then
							ClientModules.NotificationFunctions.OnClientNotification(
								{
									Title = "Donations",
									Text = "You donated " .. textButton.Text .. " robux.",
									Icon = "http://www.roblox.com/asset/?id=5136674998"
								}
							)
						end
						Bools.CanDonate = true
					end
				end)
			end
		end
	end
end
BindClickEvents()

RECEIPT SCRIPT

-- Modules
local ProcessFunctions = {

	Donation = require(script.Donation)

}

-- Marketplace Modules
local MarketplaceModulesFolder = game.ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Marketplace")

local MarketplaceModules = {

	DeveloperProducts = MarketplaceModulesFolder:WaitForChild("DeveloperProducts")
	
}

MarketplaceModules.DeveloperProducts = require(game.ReplicatedStorage.Modules.Marketplace.DeveloperProducts)

-- Tables
local HandlerFunctions = {}

-- Setup DeveloperProductFunctions
for productName, productId in pairs(MarketplaceModules.DeveloperProducts.Ids.Donations) do
	HandlerFunctions[productId] = ProcessFunctions.Donation
end

-- Connect Process Receipt Event Function
game.MarketplaceService.ProcessReceipt = function(receiptInfo)
	local HandlerFunction = HandlerFunctions[receiptInfo.ProductId]
	if HandlerFunction then
		local Success, Processed = pcall(HandlerFunction, receiptInfo)
		if not Success
			or not Processed
		then
			warn(
				"Handler function for product id '" .. tostring(receiptInfo.ProductId) .. "' failed to process receipt.",
				"PlayerId:", tostring(receiptInfo.PlayerId)
			)
			return Enum.ProductPurchaseDecision.NotProcessedYet
		end
	end
	return Enum.ProductPurchaseDecision.PurchaseGranted
end