XStoreShowPurchaseUIAsync
Begins the purchase UI overlay for the specified product.
Syntax
HRESULT XStoreShowPurchaseUIAsync(
const XStoreContextHandle storeContextHandle,
const char* storeId,
const char* name,
const char* extendedJsonData,
XAsyncBlock* async
)
Parameters
storeContextHandle _In_
Type: XStoreContextHandle
The store context handle for the user returned by XStoreCreateContext.
storeId _In_z_
Type: char*
ID for the product to purchase.
name _In_opt_z_
Type: char*
Name of the product to purchase.
extendedJsonData _In_opt_z_
Type: char*
A json blob that is handed to the purchase flow. Allows for insertion of custom campaign IDs, so you can track how the purchase started.
async _Inout_
Type: XAsyncBlock*
An XAsyncBlock defining the asynchronous work being done. The XAsyncBlock can be used to poll for the call's status and retrieve call results. See XAsyncBlock for more information.
Return value
Type: HRESULT
HRESULT success or error code.
Remarks
Note This operation does not trigger the download or installation of the items after an expected purchase. If you wish to download and install this content, it is recommended to call XStoreDownloadAndInstallPackagesAsync after a successful purchase. No additional prompts will be given to the user.
To retrieve the result of this function call XStoreShowPurchaseUIResult after calling this function. This function should only be called when the user has chosen to purchase something, and will cause the system to present a modal purchase dialog that handles payment information and user confirmation out-of-process.
The following code snippet shows an example of requesting a purchase for a particular store product.
void CALLBACK ShowPurchaseUICallback(XAsyncBlock* asyncBlock)
{
HRESULT hr = XStoreShowPurchaseUIResult(asyncBlock);
if (FAILED(hr))
{
printf("Failed the purchase: 0x%x\r\n", hr);
return;
}
}
void ShowPurchaseUI(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char* storeId)
{
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = taskQueueHandle;
asyncBlock->context = taskQueueHandle;
asyncBlock->callback = ShowPurchaseUICallback;
HRESULT hr = XStoreShowPurchaseUIAsync(
storeContextHandle,
storeId,
nullptr, // Can be used to override the title bar text
nullptr, // Can be used to provide extra details to purchase
asyncBlock.get());
if (FAILED(hr))
{
printf("Failed to purchase: 0x%x\r\n", hr);
return;
}
// Wait a while for the callbacks to run
Sleep(5000);
}
Requirements
Header: XStore.h (included in XGameRuntime.h)
Library: xgameruntime.lib
Supported platforms: Windows, Xbox One family consoles and Xbox Series consoles