> ## 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 réessayer en toute sécurité après des défaillances réseau et empêcher les achats ou octrois en double.

<Info>
  Economy v2 est désormais en disponibilité générale. Pour obtenir de l'aide et donner votre avis, 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 (qui garantit 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/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 renvoie le résultat de la requête d'origine sans traiter à nouveau l'opération.

## API prises en charge

`IdempotencyId` est pris en charge sur toutes les API d'écriture d'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 un sabre laser. 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 cas de délai d'expiration réseau), il peut réessayer en toute sécurité exactement la même requête avec le même `IdempotencyId`. PlayFab reconnaît le doublon et renvoie le résultat d'origine. Le joueur n'est débité qu'une seule fois.

## Bonnes pratiques

- **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 provoque une erreur de conflit.
- **Les ID expirent après 14 jours** : passé 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 places de marché (`RedeemAppleAppStoreInventoryItems`, `RedeemGooglePlayInventoryItems`, `RedeemMicrosoftStoreInventoryItems`, `RedeemSteamInventoryItems`) ne nécessitent pas d'`IdempotencyId`. Elles sont intrinsèquement idempotentes. Chaque reçu ou jeton de place de marché ne peut être échangé qu'une seule fois. Un second appel avec le même reçu renvoie 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 réessayez 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 doubles octrois. |
| Échange sur une place de marché | Aucun `IdempotencyId` n'est nécessaire : les API d'échange sont automatiquement idempotentes. |

## Voir aussi

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