> ## 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.

# Transactions idempotentes et modèles de nouvelle tentative dans Economy v2

> Utilisez IdempotencyId sur les écritures d'inventaire PlayFab Economy v2 pour relancer les requêtes en toute sécurité après des défaillances réseau et empêcher les achats ou octrois en double.

<Info>
  Economy v2 est maintenant en disponibilité générale. Pour obtenir du soutien et donner vos commentaires, rendez-vous sur le [forum PlayFab](https://community.playfab.com).
</Info>

Les défaillances réseau, les délais d'expiration et les requêtes en double sont inévitables dans les jeux en ligne. Economy v2 fournit **IdempotencyId** pour empêcher les transactions en double. Cette fonctionnalité garantit qu'une opération n'est traitée qu'une seule fois, même si la même requête est envoyée plusieurs fois.

Pour le contrôle optimiste de la concurrence (garantir qu'une écriture ne réussit que si l'inventaire n'a pas changé depuis votre dernière lecture), consultez [ETags et contrôle de la concurrence](/fr-CA/services/playfab/economy-monetization/economy-v2/tutorials/etags-and-concurrency-control).

## Prérequis

* Un [compte de développeur PlayFab](https://developer.playfab.com/en-us/sign-up).
* Un titre créé dans [Game Manager](https://developer.playfab.com/).
* Au moins un article de catalogue publié et une monnaie virtuelle.

## Fonctionnement

Lorsque vous incluez un `IdempotencyId` dans une requête d'écriture d'inventaire, PlayFab stocke cet ID pendant **14 jours**. Si une autre requête arrive avec le même `IdempotencyId`, PlayFab retourne le résultat de la requête originale sans traiter l'opération de nouveau.

## API prises en charge

`IdempotencyId` est pris en charge sur toutes les API d'écriture de l'inventaire :

* [AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items)
* [SubtractInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/subtract-inventory-items)
* [PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items)
* [TransferInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/transfer-inventory-items)
* [DeleteInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/delete-inventory-items)
* [UpdateInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/update-inventory-items)
* [ExecuteInventoryOperations](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/execute-inventory-operations)

## Exemple : Achat sécurisé avec nouvelle tentative

Dans ce scénario, un joueur achète une épée laser (Laser Sword). Le client génère un `IdempotencyId` unique (par exemple, un GUID) avant d'envoyer la requête :

````json theme={null}
{
    "Entity": {
        "Type": "title_player_account",
        "Id": "{{PlayerID}}"
    },
    "Item": {
        "Id": "{{LaserSwordID}}"
    },
    "Amount": 1,
    "PriceAmounts": [
        {
            "ItemId": "{{DiamondCurrencyID}}",
            "Amount": 5
        }
    ],
    "IdempotencyId": "b7e3f1a2-9c4d-4e8f-a1b2-3c4d5e6f7a8b"
}
```

Si le client ne reçoit pas de réponse (par exemple, en raison d'un délai d'expiration réseau), il peut relancer en toute sécurité exactement la même requête avec le même `IdempotencyId`. PlayFab reconnaît le doublon et retourne le résultat original. Le joueur n'est facturé qu'une seule fois.

## Pratiques exemplaires

- **Générez un ID unique par opération logique** : utilisez un GUID ou un UUID. Ne réutilisez pas le même ID pour des opérations différentes.
- **Générez l'ID côté client avant la première tentative** : cette pratique garantit que toutes les nouvelles tentatives utilisent le même ID.
- **Ne modifiez pas le corps de la requête entre les nouvelles tentatives** : l'utilisation du même `IdempotencyId` avec un corps de requête différent entraîne une erreur de conflit.
- **Les ID expirent après 14 jours** : après ce délai, le même ID peut être réutilisé pour une nouvelle opération.

## Les API d'échange sont automatiquement idempotentes

Les API d'échange des marketplaces (`RedeemAppleAppStoreInventoryItems`, `RedeemGooglePlayInventoryItems`, `RedeemMicrosoftStoreInventoryItems`, `RedeemSteamInventoryItems`) n'exigent pas d'`IdempotencyId`. Elles sont intrinsèquement idempotentes. Chaque reçu ou jeton d'une marketplace ne peut être échangé qu'une seule fois. Un deuxième appel avec le même reçu retourne un succès, mais n'octroie rien.

## Scénarios courants

| Scénario | Approche recommandée |
|---|---|
| Achat côté client (un joueur achète un article) | Générez un GUID avant la première tentative, puis relancez avec le même ID en cas de délai d'expiration. |
| Octroi de récompense côté serveur (quête terminée) | Utilisez un ID déterministe dérivé de la quête et du joueur (par exemple, `questId-playerId`) pour empêcher les octrois en double. |
| Échange sur une marketplace | Aucun `IdempotencyId` requis : les API d'échange sont automatiquement idempotentes. |

## Voir aussi

- [ETags et contrôle de la concurrence](/fr-CA/services/playfab/economy-monetization/economy-v2/tutorials/etags-and-concurrency-control)
- [Vue d'ensemble de l'inventaire](/fr-CA/services/playfab/economy-monetization/economy-v2/inventory#idempotency)
- [Prévention de la fraude](/fr-CA/services/playfab/economy-monetization/economy-v2/fraud-prevention)
- [ExecuteInventoryOperations](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/execute-inventory-operations)

````


## Related topics

- [ETags et contrôle de la concurrence dans Economy v2](/fr-CA/services/playfab/economy-monetization/economy-v2/tutorials/etags-and-concurrency-control.md)
- [Tables de butin et butin aléatoire dans Economy v2](/fr-CA/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot.md)
- [FAQ sur Economy version 2 (V2)](/fr-CA/services/playfab/economy-monetization/economy-v2/faq.md)
- [Vue d'ensemble d'Economy v2](/fr-CA/services/playfab/economy-monetization/economy-v2/overview.md)
- [Prévention de la fraude, échange, validation des reçus](/fr-CA/services/playfab/economy-monetization/economy-v2/fraud-prevention/index.md)
