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

# Détecter l'accès à l'abonnement XBOX Game Pass à partir de votre service

> Détectez l'état de l'abonnement XBOX Game Pass à partir de votre service à l'aide de l'API publisherQuery de collections, et accordez des récompenses aux abonnés actifs.

Si votre titre participe au Game Pass, votre service peut utiliser l'[API collections.mp.microsoft.com/v9.0/collections/publisherQuery](/fr/reference/microsoft-store-apis/xstore-v9-query-for-products) pour vérifier le statut d'abonné actif afin d'accorder des récompenses et des avantages dans le jeu. Avant d'interroger le statut Game Pass, votre éditeur doit être autorisé pour les niveaux que vous souhaitez vérifier. Demandez cette autorisation par l'intermédiaire de votre Developer Partner Manager ou de votre interlocuteur Microsoft.

## Licences Game Pass dans les vérifications de licence côté client

Les droits d'utilisation Game Pass ne peuvent pas être détectés à partir du client du jeu. Lorsqu'un utilisateur a droit à votre titre par le biais du Game Pass, [XStoreQueryGameLicenseAsync](/fr/reference/system/xstore/functions/xstorequerygamelicenseasync) renvoie une licence avec `isActive = true`, comme pour un achat direct. La structure [XStoreGameLicense](/fr/reference/system/xstore/structs/xstoregamelicense) ne comporte aucun champ indiquant la manière dont la licence a été obtenue.

Pour enregistrer la manière dont les utilisateurs ont obtenu votre titre, par exemple à des fins de télémétrie, envoyez l'identité de l'utilisateur de votre client à votre propre service. Votre service appelle ensuite l'API publisherQuery et vérifie `acquisitionType`. La valeur `Recurring` indique un droit d'utilisation Game Pass, et `Single` indique une possession directe.

## Comportement des données de réponse pour les éditeurs autorisés et non autorisés

Si votre éditeur n'est pas autorisé, les éléments accordés par le Game Pass apparaissent comme des droits d'utilisation possédés directement. Par exemple, `acquisitionType` apparaît comme `Single`, et les ProductIds Game Pass n'apparaissent pas dans `satisfiedByProductIds`.

Pour les éditeurs autorisés, seuls les abonnements Game Pass actifs sont renvoyés. Si l'abonnement Game Pass de l'utilisateur est annulé ou prend fin, les requêtes suivantes ne contiennent plus les informations Game Pass. En outre, `EndDate` est normalisé à la valeur maximale ; il ne peut donc pas être utilisé pour détecter la fin de l'abonnement.

## Délai le jour de la sortie dans le Game Pass dans les résultats de droits d'utilisation de serveur à serveur

Lorsque des titres ou des extensions sont mis en ligne dans le Game Pass, attendez-vous à un délai entre la disponibilité côté client et la visibilité dans `publisherQuery`. Ce comportement est dû aux intervalles d'actualisation des caches qui diffèrent entre les systèmes du Store. En pratique, les licences locales sont généralement mises à jour en premier, et publisherQuery peut accuser un retard de deux à trois heures.

Les vérifications directes des ProductIds Game Pass ne sont pas affectées ; le délai concerne principalement les éléments accordés par le biais de droits d'utilisation satisfaisants.

## Test des abonnements Game Pass dans votre sandbox de développement

Les niveaux XBOX Game Pass doivent être activés et accessibles lorsque vous les recherchez dans l'application XBOX Store de votre sandbox de développement. Les comptes de test XBOX sont créés avec une carte de crédit de test et peuvent s'abonner aux niveaux Game Pass dans votre sandbox. Si vous ne trouvez pas les niveaux Game Pass dans votre sandbox, contactez votre Developer Partner Manager ou votre interlocuteur Microsoft pour obtenir de l'aide.

<Note>
  Le statut d'abonnement Game Pass n'est pas conservé d'un sandbox à l'autre. Après avoir ajouté le Game Pass à un compte de test dans un sandbox, ne déplacez pas ce compte de test vers un autre sandbox pour des tests ou du débogage liés au Game Pass ou au commerce.
</Note>

## Demande du statut d'abonnement Game Pass

Pour demander le statut d'abonnement Game Pass de l'utilisateur, ajoutez les ProductIds correspondant aux niveaux d'abonnement que vous êtes autorisé à consulter dans la liste productSkuIds de la requête (voir le tableau).

| Niveau d'abonnement | ProductID |
| - | - |
| XBOX Game Pass for Console (retiré) | CFQ7TTC0K6L8 |
| XBOX Game Pass (Starter Edition) | CFQ7TTC10QFD |
| PC Game Pass | CFQ7TTC0KGQ8 |
| XBOX Game Pass Essential | CFQ7TTC0K5DJ |
| XBOX Game Pass Premium | CFQ7TTC0P85B |
| XBOX Game Pass Ultimate | CFQ7TTC0KHS0 |

Si l'utilisateur dispose d'un abonnement au niveau demandé, la réponse à la requête inclut un élément avec le ProductId du niveau d'abonnement Game Pass correspondant.

### Comportement lors de la demande de niveaux inclus dans des niveaux supérieurs

Certains niveaux Game Pass sont inclus lorsqu'un abonné dispose d'un niveau supérieur. Tous vos niveaux autorisés qui sont inclus dans des niveaux supérieurs sont renvoyés lorsque l'utilisateur est abonné au niveau supérieur.

Exemple : votre éditeur est autorisé pour XBOX Game Pass Essential. L'utilisateur dispose de XBOX Game Pass Ultimate. Lorsque vous interrogez tous les ProductIds Game Pass, publisherQuery renvoie un résultat uniquement pour XBOX Game Pass Essential. Si votre éditeur est autorisé à consulter d'autres niveaux, publisherQuery renvoie également ces niveaux.

<Note>
  XBOX Game Pass (Starter Edition) fait exception à l'héritage et constitue un niveau autonome. Il n'est inclus dans aucun des autres niveaux.
</Note>

### Octroi d'avantages dans le jeu aux abonnés Game Pass

Nous vous recommandons de demander l'accès au niveau Game Pass le plus bas nécessaire pour accorder des avantages dans le jeu aux abonnés.

Exemple : vous accordez une récompense dans le jeu à tous les abonnés Game Pass sur console. Vous n'avez besoin que de l'accès à XBOX Game Pass Essential (CFQ7TTC0K5DJ), car Premium et Ultimate incluent Essential.

### Détection des produits accordés par un abonnement Game Pass avec satisfiedByProductIds

Après autorisation, identifiez les droits d'utilisation issus du Game Pass en vérifiant les valeurs `satisfiedByProductIds` et `acquisitionType`. Un droit d'utilisation basé sur le Game Pass a un `acquisitionType` égal à `Recurring`, et `satisfiedByProductIds` inclut le ProductID du niveau Game Pass le plus élevé pour lequel vous êtes autorisé.

<Note>
  Si vous utilisez l'option de filtre excludeDuplicates, le droit d'utilisation lié au Game Pass est filtré si l'utilisateur possède directement le titre.
</Note>

Vérifier la présence de productIDs Game Pass dans `satisfiedByProductIds` d'un élément vous indique si l'élément est accordé par le Game Pass, mais ne suffit pas à déterminer si l'utilisateur est membre du Game Pass. Pour vérifier le statut d'abonnement Game Pass d'un utilisateur, incluez les valeurs de ProductId Game Pass dans le `productSkuIds` de votre requête.

### Exemple d'élément en double avec XBOX Game Pass

Si l'utilisateur dispose à la fois d'une possession directe et d'un droit d'utilisation Game Pass pour le même produit, deux entrées peuvent apparaître lorsque `excludeDuplicates` est `false`. Lorsque `excludeDuplicates` est `true`, l'élément acheté directement est renvoyé.

Pour connaître l'ensemble des règles de résolution des doublons et le comportement de priorité des sources, consultez [Comprendre les éléments en double dans la réponse](/fr/publishing/xstore-commerce/xstore-query-entitlements#understanding-duplicate-items-in-the-response).

### Exemple de requête pour le statut d'abonnement XBOX Game Pass Essential

```json theme={null}
POST https://collections.mp.microsoft.com/v9.0/collections/publisherQuery HTTP/1.1
{authorization header}
User-Agent: {identifier string of your service}
Content-Type: application/json;
Host: collections.mp.microsoft.com

{
  "maxPageSize": 100,
  "excludeDuplicates": true,
  "validityType": "All",
  "productSkuIds": [
    {"productId": "CFQ7TTC0K5DJ"}
  ],
  "beneficiaries": [
    {
      "identitytype": "b2b",
      "identityValue": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjYxNTI2OEI4N0YwNEFDQzIzRDdCQ0E2M...",
      "localTicketReference": ""
    }
  ],
  "sbx":"RETAIL"
}
```

### Exemple de réponse pour XBOX Game Pass Essential

```json theme={null}
HTTP/1.1 200 OK
Date: Mon, 18 May 2026 18:40:32 GMT
Content-Type: application/json; charset=utf-8
Server: Kestrel
Content-Length: 602
MS-CorrelationId: 5ec99421-7fa8-457e-87c1-edf16297528e
MS-RequestId: a604aca2-f60d-4de5-993f-125a57dcabdd
MS-CV: pjtLxeR5BUOY5n.0
X-Content-Type-Options: nosniff

{
 "items": [
  {
   "acquiredDate": "2026-05-15T18:29:24.2131463+00:00",
   "acquisitionType": "Recurring",
   "endDate": "9999-12-31T23:59:59.9999999+00:00",
   "id": "a1702e2c6cff4e0095b3c51d06d9fac9",
   "modifiedDate": "2026-05-15T18:29:24.2153924+00:00",
   "productId": "CFQ7TTC0K5DJ",
   "productKind": "Pass",
   "quantity": 1,
   "recurrenceData": "mdr:0:9ee54c66dc2a49ca81bd2c3eaf148826:a118bfe9-8175-4407-9d14-b2be4af30acd",
   "satisfiedByProductIds": [],
   "skuId": "",
   "startDate": "2026-05-15T00:00:00+00:00",
   "status": "Active",
   "tags": [],
   "transactionId": "a118bfe9-8175-4407-9d14-b2be4af30acd",
   "trialData": {
    "isInTrialPeriod": false,
    "isTrial": false
   }
  }
 ]
}
```

### Exemple de requête pour un jeu accordé par un abonnement Game Pass Essential

```json theme={null}
POST https://collections.mp.microsoft.com/v9.0/collections/publisherQuery HTTP/1.1
{authorization header}
User-Agent: {identifier string of your service}
Content-Type: application/json;
Host: collections.mp.microsoft.com

{
  "maxPageSize": 100,
  "excludeDuplicates": true,
  "validityType": "All",
  "productSkuIds": [
    {"productId": "9NTL0QDWZ4FS"}
  ],
  "beneficiaries": [
    {
      "identitytype": "b2b",
      "identityValue": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjYxNTI2OEI4N0YwNEFDQzIzRDdCQ0E2M...",
      "localTicketReference": ""
    }
  ],
  "sbx":"RETAIL"
}
```

### Exemple de réponse pour un jeu accordé par un abonnement Game Pass Essential

```json theme={null}
HTTP/1.1 200 OK
Date: Mon, 18 May 2026 18:41:18 GMT
Content-Type: application/json; charset=utf-8
Server: Kestrel
Content-Length: 602
MS-CorrelationId: d4c6dd08-a80a-4098-9433-757864d3716d
MS-RequestId: 6de32c62-9690-46dc-81c3-d1fef9df10a5
MS-CV: IvL+PCZ9Jk2+C4Xo.0
X-Content-Type-Options: nosniff

{
 "items": [
  {
   "acquiredDate": "2026-05-15T18:29:24.2131463+00:00",
   "acquisitionType": "Recurring",
   "endDate": "9999-12-31T23:59:59.9999999+00:00",
   "id": "a1702e2c6cff4e0095b3c51d06d9fac9",
   "modifiedDate": "2026-05-15T18:29:24.2153924+00:00",
   "productId": "9NTL0QDWZ4FS",
   "productKind": "Game",
   "quantity": 1,
   "satisfiedByProductIds": [
     "CFQ7TTC0K5DJ"  
   ],
   "skuId": "0010",
   "startDate": "2026-05-15T00:00:00+00:00",
   "status": "Active",
   "tags": [],
   "transactionId": "a118bfe9-8175-4407-9d14-b2be4af30acd",
   "trialData": {
    "isInTrialPeriod": false,
    "isTrial": false
   }
  }
 ]
}
```

## Voir aussi

[Vue d'ensemble du commerce](/fr/publishing/xstore-commerce/xstore-commerce-overview)

[Référence de l'API XStore](/fr/reference/system/xstore/xstore_members)


## Related topics

- [Intégration des partenaires XBOX pour l'accès au GDK](/fr-CA/home/onboarding.md)
- [Intégration des partenaires XBOX : accès et publication](/fr/home/onboarding.md)
- [Documentation de développement de jeux XBOX](/fr/index.md)
- [Terminologie](/fr/publishing/certification/console-cert-terminology.md)
- [Notes de version du SDK C++ PlayFab Multiplayer](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-and-matchmaking-release-notes.md)
