PromptGamepassPurchase does not work

Here we go… PromptGamepassPurchase does not properly load the icon of the gamepass being prompted, it does not show the correct Robux balance after purchasing, it cannot detect that you’ve already purchased a gamepass and it does not fire a successful PromptGamePassPurchaseFinished event.

It somehow shows that I GAINED robux after buying a gamepass:

before:
image

after:
image

It does not register ownership!!:

This is the error given on the client every time a prompt comes up (THIS HAPPENS REGARDLESS OF WHETHER THE PROMPT WAS CALLED FROM SERVER OR CLIENT!): image

Despite the confusing mess, it does actually charge the player and the gamepass is actually received, but neither the game nor the player is aware it happens after the transaction is completed.

This was tested on a LIVE server with both my account and an alternate account.

Gamepass tested:
https://www.roblox.com/game-pass/4458654/RAY-GUN

edit: after purchasing a gamepass with PromptGamepassPurchase, it also appears at the very end of a player’s inventory for some reason, as if it were the first pass they ever bought.

11 Likes

This is egregious. Gamepasses should not have been forcefully rolled onto the new system until everything was tested…

18 Likes

This is such a massive problem, I was helping @xuefei123 test his game and I’ve ended up buying the his pass 5 times to test and it seems like this new system is the problem.

3 Likes

thanks for the robux babe <3

6 Likes

Whenever I try calling PromptGamePassPurchaseFinished on MarketplaceService, the game pass Id variable returns as nil.
Whenever the game pass purchase is prompted, it calls the game pass a product, and the icon will not load!

Code I have used:

MarketplaceService.PromptGamePassPurchaseFinished:connect(function(client,id,purchased)
	print(id)
	if purchased then
		for i,v in pairs(_G.gamePasses) do
			if v["ID"] == id then
				local val = Instance.new("BoolValue")
				val.Name = v["ValName"]
				val.Parent = client
			end
		end
	end
end)
1 Like

PromptGamePassPurchaseFinished was incorrectly not allowed to replicate in FE places. This was an oversight. This will be fixed in an upcoming release. I think it will be the next release actually.

PromptGamePassPurchaseFinished will have similar anti-spoofing features to PromptPurchaseFinished. The player argument will be forced to match the player sending the remote event. The check for ownership of the gamepass id argument will have been checked with GameService:PlayerHasPass – if wasPurchased is true.

I’m not sure about the status of the other issues listed.

2 Likes

GamePassService:PlayerHasPass caches… if this is the method used (versus MarketplaceService:UserOwnsGamePassAsync) then PromptGamepassPurchaseFinished may sometimes not work as intended.

Also, is there any status on this:

This is a very weird bug that will confuse a lot of people if not fixed.

1 Like

do you have a time estimate on when this will be fixed? it’s making new games which use this look bad, as players have to rejoin to obtain their game pass, and it allows them to buy the game pass again (which it doesn’t actually charge you)

2 Likes

A lot of the features work inconsistently, yeah

PromptGamePassPurchaseFinished definitely doesn’t work at all

I’m gonna have to delay a huge update release to my game simply due to this stuff. I tried working around it, but now allI can do is wait for this feature to be fixed/ released correctly.

1 Like

They mentioned it might be fixed tomorrow or Wednesday.

I would like to add on a few questions & bugs

  1. How do you get the Asset ID of Old Gamepasses?

Continuing the discussion from [Live] Changes to Game Passes:

Well this method does not work right now Which is why I had to ask)

https://www.roblox.com/game-pass/12345/myGamePass
&
https://www.roblox.com/library/1044540653/myGamePass

They aren’t the same Item, which proves my point that it does not work atm.


  1. If New Gamepasss don’t have an Asset ID then how does this work now?
    ImageBtn.Image = 'https://www.roblox.com/Thumbs/Asset.ashx?width=420&height=420&assetId='..Asset

It’s is a little bit complicated

https://wiki.roblox.com/index.php?title=API:Class/MarketplaceService/GetProductInfo

GetProductInfo().IconImageAssetId

Does not work for Assets, ONLY DevProducts
From The Wiki "The AssetId of the asset’s icon if it is a developer product, returns 0 otherwise."

I had to mention this because some thought that it works with Asset IDs, including me at first.

ImageBtn.Image = 'https://www.roblox.com/Thumbs/Asset.ashx?width=420&height=420&assetId='..Asset

If the Gamepass does not have an Asset ID, then how can we display the Gamepass Image without uploading it as a decal?


  1. Also it seems like when you PromptGamepassPurchase, it saids “Do you want to purchase this Product” which would cause a lot of confusion because it’s a Gamepass not a Devproduct

https://gyazo.com/8c0cbddf3f615df0bedff29a826de0fd

https://gyazo.com/229769fcf71967119da0e32a30755bd9

2 Likes

To confirm, are there any more issues than those listed here?

The purchase event not firing (replicating to the server) should be the only game-breaking bug. It currently has a pending fix, but until then players can rejoin the game to register ownership. Other than that, AFAIK we only have display issues (icon, prompt not registering you already own it, warnings printed to output that don’t affect game).

You can be prompted to buy the pass (and lose R$) multiple times, it’s not just a visual bug

Please provide repro steps, game link, and gamepass link. I bought the gamepass in the OP multiple times and was only charged once.

1 Like

–edit: double checked, it does use MarketplaceService:UserOwnsGamePassAsync.

1 Like

It’s been over 3 months now and the images are still blank for me. On top of that, it’s impossible for me to test my game pass without spending money because UserOwnsGamePassAsync() returns false in studio while testing, even after I buy the game pass in there.

The latter is a pretty critical bug for me, and I’d love it if somebody could fix it soon. I don’t want to delay my game because I can’t test the game passes.

2 Likes

This is a bit late…

You can use The Purchase Event and Store PlayerData to check the if the player has a Gamepass


Don’t delay your game just because something does not work sometimes you have to make it work your own way.