Partager via


XStoreShowGiftingUIAsync

Begins the UI overlay for purchasing the specified product as a gift for another user. The current user will be prompted to enter information about the recipient of the gift and will be guided through the purchase flow.

Syntax

HRESULT XStoreShowGiftingUIAsync(  
         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 as a gift. Note: this product must configured to support gifting purchases.

name   _In_opt_z_
Type: char*

Name of the product to purchase as a gift.

extendedJsonData   _In_opt_z_
Type: char*

A json blob that is handed to the purchase gift 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

The product to be purchased as a gift must be configured to support gifting purchases. To retrieve the list of products that support gifting call XStoreQueryProductsAsync with the actionFilters parameter set to "Gift".

To retrieve the result of this function call XStoreShowGiftingUIResult after calling this function. This function should only be called when the user has chosen to purchase something as a gift, 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 gift purchase for a particular store product.

void CALLBACK ShowGiftingUICallback(XAsyncBlock* asyncBlock)
{
    HRESULT hr = XStoreShowGiftingUIResult(asyncBlock);

    if (FAILED(hr))
    {
        printf("Failed the gift purchase: 0x%x\r\n", hr);
        return;
    }
}

void ShowGiftingUI(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char* storeId)
{
    auto asyncBlock = std::make_unique<XAsyncBlock>();
    ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
    asyncBlock->queue = taskQueueHandle;
    asyncBlock->callback = ShowGiftingUICallback;

    HRESULT hr = XStoreShowGiftingUIAsync(
        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;
    }
}


Requirements

Header: XStore.h (included in XGameRuntime.h)

Library: xgameruntime.lib

Supported platforms: Windows, Xbox One family consoles and Xbox Series consoles

See also

XStore
XStoreShowGiftingUIResult