Currently there is no reliable way to determine if a player obtained an item via a PromptProduct purchase. Having something similar to ProcessReceipt but for avatar items would be very useful for UGC purchase validation (especially for limited UGC where owning multiple of one item could be used for a scaled multiplier).
PromptPurchaseFinished
does exist however this event is not suitable for security for the following reasons:
- This event does not fire if the player leaves the game directly after they purchase/claim an item because this event takes a few seconds to run. This makes purchasing UGC with in game currency very difficult and unreliable to do.
- isPurchased is the 3rd arg provided by this event, however this value has no guarantee to correlate to whether the player actually obtained the item or not.
Something akin to this:
MarketPlaceService.AssetPurchaseProcessed: (userId: number, purchaseSuccess: boolean) -> Enum.ProductPurchaseDecision