ShowStoreUI GDK call always fails for Games that aren't released

Summary

I have been having a back and forth with Xbox Dev trying to figure out why calling ShowStoreUI via GDK would always failure to show the Store Page for our Game. This was a button in a Demo that would go to our Game on the Xbox store for people to Wishlist, or that was the intention. However every time it failed and sending a Fiddler trace to Xbox they said they could see any endpoint requests and after digging through unrelated Xbox Forum posts I looked at an API call on a hung.

Turns out that 4.27+ and even in 5.4, UE integration of GDK always calls the API XStoreShowPurchaseUIAsync - which doesn’t work for games that aren’t released as it doesn’t have a purchase flow to go through - so the Xbox overlay just errors. A lot of the Xbox Forums posts I found use XStoreShowProductPageUIAsync API call to show the Game, which works for unreleased games. I am surprised that UE hasn’t picked up on this as Xbox allows you to put up Store pages for Wishlisting without Binaries (you have to ask them nicely).

I have made a small engine change locally to GDK platform code, but I think it would be worth while for other platform developers - 4.27+_Fix.png - use the ShowParams.bAddToCart to toggle what API to call.

Please select what you are reporting on:

Creative

What Type of Bug are you experiencing?

Other

Steps to Reproduce

  1. Create a Game on Microsoft Partner Center
  2. Ask Microsoft to publish it for Wishlisting
  3. Call ShowStoreUI with a GDK Subsystem setup
  4. Note that the Xbox overlay errors with Server error ID

Expected Result

Calling ShowStoreUI shows the Game in the Store Page, which ShowStoreUI naming convention suggests, even for unreleased games when using GDK

Observed Result

Calling ShowStoreUI on unreleased game with GDK errors via Xbox overlay.

Platform(s)

Xbox/WinGDK

Upload an image


Additional Notes

See 4.27+_Fix.png, please could you update 4.27+ and newer version of the Engine to use ShowParams.bAddToCart to toggle whether it should try to use XStoreShowPurchaseUIAsync or XStoreShowProductPageUIAsync.

I do not have access to Epic P4 to make the request and the Platform code is made downloadable via the Dev Portal, but I think this small change is worth while for all developers.