> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XStoreShowPurchaseUIAsync

> XStoreShowPurchaseUIAsync

# XStoreShowPurchaseUIAsync

Lance la superposition de l'interface utilisateur d'achat pour le produit spécifié.

## Syntaxe

```cpp theme={null}
HRESULT XStoreShowPurchaseUIAsync(  
         const XStoreContextHandle storeContextHandle,  
         const char* storeId,  
         const char* name,  
         const char* extendedJsonData,  
         XAsyncBlock* async  
)  
```

### Paramètres

*storeContextHandle*   \_In\_\
Type : XStoreContextHandle

Handle de contexte du magasin pour l'utilisateur, retourné par [XStoreCreateContext](https://devdocs.xbox.com/fr-CA/reference/system/xstore/functions/xstorecreatecontext.md).

*storeId*   \_In\_z\_\
Type : char\*

ID du produit à acheter.

*name*   \_In\_opt\_z\_\
Type : char\*

Nom du produit à acheter.

*extendedJsonData*   \_In\_opt\_z\_\
Type : char\*

Un blob JSON transmis au flux d'achat. Permet d'insérer des ID de campagne personnalisés afin que vous puissiez suivre la façon dont l'achat a été lancé.

*async*   \_Inout\_\
Type : [XAsyncBlock\*](https://devdocs.xbox.com/fr-CA/reference/system/xasync/structs/xasyncblock.md)

Un [XAsyncBlock](https://devdocs.xbox.com/fr-CA/reference/system/xasync/structs/xasyncblock.md) définissant le travail asynchrone en cours. Le [XAsyncBlock](https://devdocs.xbox.com/fr-CA/reference/system/xasync/structs/xasyncblock.md) peut être utilisé pour interroger l'état de l'appel et récupérer les résultats de l'appel. Pour plus d'informations, consultez [XAsyncBlock](https://devdocs.xbox.com/fr-CA/reference/system/xasync/structs/xasyncblock.md).

### Valeur de retour

Type : HRESULT

Code de réussite ou d'erreur HRESULT.

## Remarques

> !\[NOTE] Cette opération ne déclenche pas le téléchargement ni l'installation des éléments après un achat prévu. Si vous souhaitez télécharger et installer ce contenu, il est recommandé d'appeler [XStoreDownloadAndInstallPackagesAsync](https://devdocs.xbox.com/fr-CA/reference/system/xstore/functions/xstoredownloadandinstallpackagesasync.md) après un achat réussi. Aucune invite supplémentaire ne sera présentée à l'utilisateur.

> !\[NOTE] Sur PC, la boîte de dialogue de confirmation d'achat qui s'affiche après un achat réussi comporte un bouton de fermeture \[X] en haut. Sélectionner ce bouton plutôt que OK entraîne le retour de E\_ABORT à `XStoreShowPurchaseUIResult`, ce qui peut ne pas être souhaité. Il s'agit du comportement standard de Windows lorsqu'une boîte de dialogue est fermée de cette façon.

Pour récupérer le résultat de cette fonction, appelez [XStoreShowPurchaseUIResult](https://devdocs.xbox.com/fr-CA/reference/system/xstore/functions/xstoreshowpurchaseuiresult.md) après avoir appelé cette fonction. Cette fonction ne doit être appelée que lorsque l'utilisateur a choisi d'acheter quelque chose; elle amène le système à présenter une boîte de dialogue d'achat modale qui gère les informations de paiement et la confirmation de l'utilisateur hors processus.

L'extrait de code suivant montre un exemple de demande d'achat pour un produit particulier du magasin.

```cpp theme={null}
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->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;
    }
}
```

## Configuration requise

**En-tête :** XStore.h (inclus dans XGameRuntime.h)

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Documentation conceptuelle

* [Implémenter les achats en jeu dans votre jeu](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/pc-dev/tutorials/pc-e2e-guide/e2e-services/e2e-in-game-purchases)
* [Opérations de base du magasin](https://devdocs.xbox.com/fr-CA/publishing/xstore-commerce/xstore-basic-operations.md)
* [Gérer et accorder des licences pour le contenu téléchargeable (DLC)](https://devdocs.xbox.com/fr-CA/publishing/xstore-commerce/xstore-dlc.md)
* [Dépannage du développement XStore](https://devdocs.xbox.com/fr-CA/publishing/xstore-commerce/xstore-troubleshooting.md)

## Voir aussi

[XStore](https://devdocs.xbox.com/fr-CA/reference/system/xstore/xstore_members.md)\
[XStoreShowPurchaseUIResult](https://devdocs.xbox.com/fr-CA/reference/system/xstore/functions/xstoreshowpurchaseuiresult.md)


## Related topics

- [XStoreShowPurchaseUIResult](https://devdocs.xbox.com/fr-CA/reference/system/xstore/functions/xstoreshowpurchaseuiresult.md)
- [Dépannage du développement XStore](https://devdocs.xbox.com/fr-CA/publishing/xstore-commerce/xstore-troubleshooting.md)
- [Opérations de base du magasin](https://devdocs.xbox.com/fr-CA/publishing/xstore-commerce/xstore-basic-operations.md)
- [Services facultatifs](https://devdocs.xbox.com/fr-CA/build/gdk-and-engines/optional-services.md)
- [XStore (contenu de l'API)](https://devdocs.xbox.com/fr-CA/reference/system/xstore/xstore_members.md)
