In light of recent events, I think that a new feature needs to be added to MarketplaceService ProcessReceipt function.
Reasoning: Even if there are redundancy measures in-place to prevent loss of player data, players can still purchase consumable items. If a player purchases consumable items, the processreceipt function fires, and then leaves the game while the datastores are down, the player will lose the currency that they purchased.
What I think should be done to fix this issue:
Before ProcessReceipt is fired, a test call should be done to verify that the DataStores are indeed functioning correctly. If the call fails, ProcessReceipt is never fired. This can be done manually, but I feel that it should be mandatory.
They already get refunded a couple days later if Enum.Whatever.PurchaseGranted is not returned by ProcessReceipt (which also happens if ProcessReceipt isn’t invoked).
I’m aware that the player’s money is refunded if PurchaseGranted isn’t fired. I’m just saying that it’d be nice to have a primary redundancy measure in-place to prevent lost currency for the developers who do not have secondary measures in place to prevent data loss.
I think OP is talking about the devprods that people use like subscriptions; in which case you could easily just test your datastores in the ProcessReceipt callback:
if not pcall(function() return DataStore:GetAsync("DataStoresLive") end) then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
I think OP is talking about the devprods that people use like subscriptions; in which case you could easily just test your datastores in the ProcessReceipt callback:
if not pcall(function() return DataStore:GetAsync("DataStoresLive") end) then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
[/quote]
Exactly what I think would work, except I think that it should be built in by default.
“Why does roblox allow users to purchase Developer Products when DataStores/MarkPlaceService are down? Shouldn’t it like pop up a message saying ‘Error: Developer Products can not be purchased at this time’ ?”
The whole taking customers money and giving it back 3 days later due to a fault outside my control just sounds sketchy. Would be better if the money just wasn’t taken in the first place.