---
title: "Tests en sandbox"
description: "Testez vos achats dans l'environnement sandbox pour garantir des transactions fluides."
---

Une fois que vous avez tout configuré dans l'Adapty Dashboard et votre application mobile, il est temps de tester les achats intégrés.

**Remarque :** aucun des outils de test ne facture les utilisateurs lorsqu'ils testent l'achat d'un produit. L'App Store n'envoie pas d'e-mails pour les achats ou les remboursements effectués dans les environnements de test.

:::note
**Les transactions sandbox sont exclues de tous les graphiques analytiques.** Elles apparaissent tout de même sur les pages de profil individuelles et dans le flux d'événements.
:::

:::info
Pour procéder aux tests d'achats intégrés, assurez-vous que :
- Vous avez suivi les guides de [démarrage rapide](quickstart) sur l'intégration au store, l'ajout de produits et l'intégration du SDK Adapty.
- Votre produit est marqué [**Ready to submit**](InvalidProductIdentifiers#step-2-check-products) dans App Store Connect.
:::

## Tests en sandbox \{#sandbox-testing\}

<div style={{
    maxWidth: '560px',
    margin: '0 auto 2rem',
    position: 'relative',
    aspectRatio: '16/9',
    width: '100%'
}}>
    <iframe
        style={{
            position: 'absolute',
            top: 0,
            left: 0,
            width: '100%',
            height: '100%'
        }}
        src="https://www.youtube.com/embed/hq4PRU-vuik?si=m5F5Sj6iLEJ-2q6n"
        title="YouTube video player"
        frameBorder="0"
        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
        referrerPolicy="strict-origin-when-cross-origin"
        allowFullScreen
    />
</div>

:::info
Nous recommandons de tester les achats intégrés sur un vrai appareil. Bien que les achats sandbox puissent être effectués sur des simulateurs, les vrais appareils sont nécessaires pour tester tous les flows dans leur intégralité, y compris les dialogues de paiement et les invites biométriques.
:::

Vous avez deux façons principales de tester les achats intégrés :

- **Compiler avec Xcode et lancer sur un appareil de test** : pratique pour les développeurs et les ingénieurs QA.
- **Utiliser un compte de test sandbox avec TestFlight** : adapté à tous les autres.

Ces deux options sont couvertes dans le guide ci-dessous.

### Étape 1. Créer un compte de test Sandbox dans App Store Connect \{#step-1-create-sandbox-test-account-in-app-store-connect\}

:::warning
Créez un nouveau compte de test Sandbox pour vous assurer que votre historique d'achats est vierge. Si vous réutilisez un compte existant, les produits déjà achetés resteront disponibles et vous ne pourrez pas tester leur achat à nouveau.
:::

Vous pouvez créer un nouveau compte de test Sandbox en quelques clics :

1. Accédez à [**Users and Access** > **Sandbox** > **Test Accounts**](https://appstoreconnect.apple.com/access/users/sandbox) dans App Store Connect et cliquez sur **+**.

  <img src="/assets/shared/img/add-sandbox-user.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

2. Renseignez les informations de l'utilisateur de test. Veillez à définir le **Country or Region** que vous souhaitez tester, car cela influe sur la disponibilité des produits pour cette région et sur la devise d'achat.

:::tip
- Si vous utilisez Gmail ou iCloud, vous pouvez réutiliser votre adresse e-mail existante grâce au [sous-adressage avec le signe plus](https://www.wikihow.com/Use-Plus-Addressing-in-Gmail).
- Vous pouvez utiliser une adresse e-mail aléatoire qui n'existe même pas, mais veillez à refuser l'authentification à deux facteurs (2FA) lorsque vous vous connectez sur un appareil de test par la suite.
:::

  <img src="/assets/shared/img/57c3a7c-apple_new_test_account.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

3. Cliquez sur **Create**.

### Étape 2. Activer le mode développeur \{#step-2-enable-the-developer-mode\}

:::note
Ignorez cette étape si le mode développeur est **déjà activé** sur votre appareil de test ou si vous **n'avez pas de Mac**.
:::

Vous aurez besoin d'un Mac avec Xcode installé et du câble de votre appareil de test :

1. Ouvrez Xcode sur votre Mac. Si vous souhaitez tester des achats intégrés avec TestFlight, il vous suffit d'avoir Xcode installé ; vous n'avez pas besoin d'y avoir une application.
2. Connectez votre appareil de test au Mac à l'aide du câble.
3. Sur votre appareil de test, allez dans **Settings > Privacy & Security > Developer Mode** et activez le **Developer Mode**.

### Étape 3. Télécharger l'application depuis TestFlight \{#step-3-download-the-app-from-testflight\}

:::info
Cette étape s'applique uniquement si vous testez avec TestFlight. Si vous compilez l'application dans Xcode, passez cette étape.
:::

Pour savoir comment soumettre votre application à TestFlight, consultez la [documentation Apple](https://developer.apple.com/documentation/StoreKit/testing-in-app-purchases-with-sandbox#Prepare-for-sandbox-testing).

Avant de télécharger l'application TestFlight, assurez-vous d'être connecté avec votre compte Apple de production sur votre appareil de test. Téléchargez ensuite l'application à tester depuis TestFlight.

:::danger
N'ouvrez pas l'application une fois téléchargée. Passez directement aux étapes suivantes.
Si vous l'avez ouverte par accident, supprimez-la de votre appareil de test et téléchargez-la à nouveau. Sinon, votre historique d'achats risque de ne pas être vierge, et les tests d'achats intégrés généreront des erreurs.
:::

### Étape 4. Passer au compte de test Sandbox \{#step-4-switch-to-sandbox-test-account\}

<Details>
    <summary>Vous n'utilisez pas de Mac ? Voici une astuce pour vous</summary>

    Si vous ne travaillez pas sur macOS, vous ne pouvez pas passer à un compte sandbox via Xcode. Vous pouvez toutefois le faire directement sur votre appareil de test :
1. Accédez à **Settings > Your Apple Account > Media & Purchases** sur votre appareil de test.
2. Sélectionnez **Sign Out** dans le menu contextuel.
3. Ouvrez l'application téléchargée depuis TestFlight et essayez d'acheter un produit.
4. Lorsqu'on vous demande de vous connecter, entrez les identifiants de votre compte sandbox pour basculer vers l'environnement sandbox.

</Details>

Pour passer à votre compte sandbox :

1. Rendez-vous dans **Settings > Your Apple Account > Media & Purchases** sur votre appareil de test.
2. Sélectionnez **Sign Out** dans le menu contextuel.
3. Accédez à **Settings > Developer**. Si l'option **Developer** n'est pas disponible, assurez-vous de l'avoir [activée à l'étape 2](#step-2-enable-the-developer-mode).

  <img src="/assets/shared/img/devmode.png"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '400px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

4. Faites défiler vers le bas jusqu'à la section **Sandbox Apple Account** et appuyez sur **Sign In**.

  <img src="/assets/shared/img/sandbox-acc.png"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '400px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

5. Connectez-vous avec vos identifiants de compte Apple Sandbox.

### Étape 5. Effacer l'historique des achats \{#step-5-clear-purchase-history\}

Si vous venez de créer un nouveau compte de test Sandbox et de basculer vers celui-ci, vous pouvez ignorer cette étape, car elle ne s'applique qu'aux tests répétés utilisant le même compte de test Sandbox.

1. Rendez-vous dans **Settings > Developer > Sandbox Apple Account** sur votre appareil de test.
2. Sélectionnez **Manage** dans le menu contextuel.
3. Accédez à **Account Settings** et appuyez sur **Clear Purchase History**.

:::danger
Cette étape est obligatoire chaque fois que vous recommencez les tests avec le même compte de test Sandbox. Dans ce cas, vous devrez également [vous déconnecter de votre compte de test Sandbox](#step-4-switch-to-sandbox-test-account), puis vous reconnecter pour vider le cache de l'historique des achats sur l'appareil de test.
:::

### Étape 6. Compiler dans Xcode et lancer l'application \{#step-6-build-in-xcode-and-run\}

:::info
Cette étape s'applique uniquement si vous testez avec un build Xcode. Si vous utilisez TestFlight, ignorez cette étape.
:::

1. Connectez votre appareil de test à votre Mac.
2. Ouvrez Xcode.
3. Cliquez sur **Run** dans la barre d'outils ou choisissez **Product > Run** pour compiler et lancer l'application sur l'appareil connecté.

Si la compilation réussit, Xcode lancera l'application sur votre appareil et ouvrira une session de débogage dans la zone de débogage.

Votre application est maintenant prête pour les tests sur l'appareil.

### Étape 7. Effectuer un achat test \{#step-7-make-test-purchase\}

Ouvrez l'application et effectuez votre achat test via un paywall.

Une fois terminé, consultez l'article sur la [validation des achats test](validate-test-purchases) pour vérifier vos résultats.

### Étape 8. Continuer à tester \{#step-8-keep-testing\}

Votre environnement de test est maintenant prêt. Si vous souhaitez le tester à nouveau, [effacez l'historique des achats du compte sandbox](https://developer.apple.com/help/app-store-connect/test-in-app-purchases/manage-sandbox-apple-account-settings/).

## Problèmes lors des tests \{#testing-issues\}

Voici les problèmes courants que vous pouvez rencontrer lors du test d'une application.

### Problèmes avec TestFlight \{#testflight-issues\}

Vous ne pouvez pas effacer votre historique d'achats **si vous utilisez TestFlight sans compte de test Sandbox**, ce qui entraîne divers problèmes et des résultats de test erronés.

Si vous avez oublié par inadvertance de [passer au compte de test Sandbox](#step-4-switch-to-sandbox-test-account) et que vous avez ouvert l'application ne serait-ce qu'une fois, TestFlight associe votre historique d'achats à votre compte Apple de production, ce qui provoque des problèmes inattendus.

Pour remédier à cela, suivez ces étapes :

1. Supprimez l'application de l'appareil de test.
2. Suivez les étapes pour les [tests Sandbox](#sandbox-testing).

:::note
Il est important de ne pas seulement réinstaller l'application, mais aussi de passer au compte de test Sandbox, d'effacer l'historique des achats et de la lancer avec le compte de test Sandbox.
:::

### Problèmes liés aux niveaux d'accès partagés \{#shared-access-levels-issues\}

Si vous répétez les tests avec le même compte de test Sandbox, vous pourriez rencontrer un comportement inattendu avec les [niveaux d'accès partagés](sharing-paid-access-between-user-accounts) pour l'utilisateur de test.

Pour vérifier si l'utilisateur dispose d'un niveau d'accès hérité, accédez à [Profiles & Segments](https://app.adapty.io/profiles/users) depuis l'Adapty Dashboard et ouvrez le profil de l'utilisateur.

  <img src="/assets/shared/img/profile-access-level-origin.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Si l'utilisateur dispose d'un niveau d'accès hérité, suivez ces étapes pour obtenir des résultats de test précis :

1. Supprimez le profil parent.
2. Retirez l'application de l'appareil de test.
3. [Téléchargez l'application depuis TestFlight](#step-3-download-the-app-from-testflight).
4. [Passez au compte de test Sandbox](#step-4-switch-to-sandbox-test-account).
5. [Effacez l'historique des achats](#step-5-clear-purchase-history).
6. [Ouvrez l'application et effectuez votre achat test](#step-7-make-test-purchase).

:::note
Effacer l'historique des achats, c'est ce qui réinitialise l'achat côté store. Supprimer le profil parent ne fait que supprimer l'enregistrement côté Adapty. Pour comprendre pourquoi un compte réutilisé conserve l'accès et quelles actions de réinitialisation fonctionnent réellement, consultez [Réinitialiser l'abonnement d'un testeur](#resetting-a-testers-subscription).
:::

### Mise à jour de l'application dans TestFlight \{#updating-app-in-testflight\}

Si l'application TestFlight a été mise à jour :

1. Supprimez l'application de l'appareil de test.
2. [Téléchargez l'application depuis TestFlight](#step-3-download-the-app-from-testflight).
3. [Passez au compte de test Sandbox](#step-4-switch-to-sandbox-test-account).
4. [Effacez l'historique des achats](#step-5-clear-purchase-history).
5. [Ouvrez l'application et effectuez votre achat test](#step-7-make-test-purchase).

## Réinitialiser l'abonnement d'un testeur \{#resetting-a-testers-subscription\}

Dans l'environnement sandbox, un achat est lié au **compte sandbox Apple**, pas au profil Adapty. Les actions effectuées sur le profil — suppression ou modification de son niveau d'accès — ne suppriment pas l'achat du compte store. Au prochain réinstallation ou synchronisation, le SDK rattache la même transaction, et le testeur retrouve l'accès.

Le tableau ci-dessous indique ce que chaque action de réinitialisation modifie et ce que le testeur voit ensuite.

| Action | Profil Adapty | Compte sandbox Apple | Accès du testeur après |
| :-------------------------------------------------------------------------------- | :------------------------------------------------------ | :--------------------- | :------------------------------------------------------------------------------------------------- |
| Supprimer le profil depuis l'Adapty Dashboard | Supprimé | Intact | **Revient** — à la réinstallation, un nouveau profil rattache la même chaîne de transactions |
| Supprimer le profil via l'[API Delete profile](api-adapty/operations/deleteProfile) | Supprimé | Intact | **Revient** — même comportement que la suppression depuis le Dashboard |
| Ajouter une date d'expiration passée via **Add access level** | Écrasé à la prochaine synchronisation | Intact | **Revient** au prochain renouvellement — l'abonnement actif réapplique une date d'expiration future |
| Appeler l'[API Revoke access level](api-adapty/operations/revokeAccessLevel) | Expire immédiatement, déclenche `access_level_updated` (`is_active=false`) | Intact | **Revient** au prochain renouvellement ou à la réinstallation — pas une réinitialisation sandbox fiable |
| Annuler l'abonnement dans le compte sandbox | Aucun changement direct | Abonnement annulé | Les renouvellements s'arrêtent, l'accès prend fin à l'expiration de la période en cours, et le testeur peut racheter le produit |
| Se connecter avec un nouveau compte sandbox Apple | Nouveau profil | Nouveau compte vide | **Propre** — recommandé pour les tests répétés |

### Réinitialiser un testeur dans un état vierge \{#reset-a-tester-to-a-clean-state\}

Pour tester le flux d'achat plusieurs fois, utilisez un nouveau compte sandbox Apple pour chaque test plutôt que de réinitialiser le profil. Suivez l'[Étape 1](#step-1-create-sandbox-test-account-in-app-store-connect) pour créer le compte et l'[Étape 4](#step-4-switch-to-sandbox-test-account) pour y basculer sur l'appareil. Si vous réutilisez un compte sandbox existant, [effacez d'abord son historique d'achats](#step-5-clear-purchase-history) — supprimer le profil Adapty ne l'efface pas.

### Supprimer l'accès d'un testeur existant \{#remove-access-from-an-existing-tester\}

Pour supprimer l'accès d'un testeur, n'antidatez pas la date d'expiration et n'appelez pas l'API Revoke access level. En sandbox, l'abonnement se renouvelle automatiquement toutes les quelques minutes. Chaque renouvellement restaure une date d'expiration future sur la même chaîne de transaction, donc l'accès est rétabli de lui-même. L'API Revoke access level déclenche bien un événement `access_level_updated` (`is_active=false`), mais le prochain renouvellement l'écrase.

Pour vraiment révoquer l'accès, annulez l'abonnement côté store. Sur l'appareil de test, allez dans **Settings > Developer > Sandbox Apple Account**, sélectionnez **Manage**, puis annulez l'abonnement. Les renouvellements cessent et l'accès prend fin à l'expiration de la période en cours.

### Pourquoi supprimer le profil rétablit l'accès \{#why-deleting-the-profile-brings-access-back\}

Quand un testeur réinstalle l'application, Adapty reçoit l'historique des achats du compte sandbox et associe la nouvelle installation à l'achat existant. L'achat est lié au compte du store, pas au profil que vous avez supprimé.

- **Profils anonymes** : Une réinstallation sans `customer_user_id` hérite toujours du niveau d'accès du compte store, quelle que soit votre configuration de [partage d'accès payant](sharing-paid-access-between-user-accounts).
- **Profils identifiés** : Le transfert de l'accès vers un nouveau `customer_user_id` dépend de votre configuration de partage d'accès payant.

Pour comprendre comment Adapty relie ces profils en chaîne, consultez [Comment fonctionnent les profils](how-profiles-work#parent-and-inheritor-profiles).

## Tester les abonnements \{#test-subscriptions\}

Lorsque vous testez votre application avec un compte de test Sandbox, vous pouvez définir le taux de renouvellement des abonnements pour chaque testeur dans le sandbox. Pour en savoir plus sur la modification des taux de renouvellement des abonnements, consultez la [documentation officielle d'Apple](https://developer.apple.com/help/app-store-connect/test-in-app-purchases/manage-sandbox-apple-account-settings).

Par défaut, les abonnements se renouvellent jusqu'à 12 fois avant de s'arrêter, selon le calendrier suivant :

| Durée de l'abonnement                  | 1 semaine  | 1 mois     | 2 mois     | 3 mois     | 6 mois     | 1 an       |
| :------------------------------------- | :--------- | :--------- | :--------- | :--------- | :--------- | :--------- |
| Vitesse de renouvellement              | 3 minutes  | 5 minutes  | 10 minutes | 15 minutes | 30 minutes | 1 heure    |
| Durée de la relance de facturation     | 10 minutes | 10 minutes | 10 minutes | 10 minutes | 10 minutes | 10 minutes |
| Durée du délai de grâce de facturation | 3 minutes  | 5 minutes  | 5 minutes  | 5 minutes  | 5 minutes  | 5 minutes  |

:::note
Gardez à l'esprit que les transactions de test peuvent prendre jusqu'à 10 minutes pour apparaître dans le [flux d'événements](validate-test-purchases).
:::

Utilisez le sandbox pour vérifier que votre application et votre backend gèrent correctement les renouvellements, les nouvelles tentatives de facturation et les délais de grâce — et non pour prédire le calendrier de renouvellement en production. Le calendrier accéléré et plafonné décrit ci-dessus ne correspond pas à la production. Pour rejouer des transactions sur votre serveur à des fins de test backend, utilisez l'[API Set transaction](api-adapty/operations/setTransaction).

## Tester les offres \{#test-offers\}

Pour que l'éligibilité fonctionne correctement, il est nécessaire de supprimer tous les reçus d'achat de l'utilisateur avant de tester les offres.

La méthode la plus fiable consiste à utiliser un [compte de test Sandbox](#step-1-create-sandbox-test-account-in-app-store-connect) entièrement nouveau. Tester plusieurs fois avec le même compte de test Sandbox peut entraîner des comportements inattendus.

:::danger
Si vous testez plusieurs fois avec le même compte de test Sandbox, veillez à [effacer l'historique des achats](#step-5-clear-purchase-history) pour éviter tout problème d'éligibilité.
:::