# Liste de contrôle QA (/fr/in-store/getting-started/checklist)



Avant de publier votre application, parcourez cette liste de contrôle d’assurance qualité (QA). Elle couvre les tests fonctionnels, la gestion des erreurs et les scénarios d’expérience utilisateur afin de limiter les problèmes sur le terrain. Cochez chaque point dès que vous l’avez vérifié.

<ChecklistProgress />

## 1. Tests fonctionnels [#1-functional-testing]

### Parcours de transaction [#transaction-flows]

<ChecklistItem id="TF-1" code="TF-1" title="Paiement réussi">
  Vérifiez une transaction approuvée standard avec le montant 

  `1.01`

   (code 

  `00`

  ) dans l’

  [environnement sandbox](./testing)

  .
</ChecklistItem>

<ChecklistItem id="TF-2" code="TF-2" title="Authentification de la carte rejetée">
  Simulez une transaction rejetée avec le montant 

  `1.07`

   (code 

  `06`

  ) et assurez-vous que l’application la gère correctement, sans planter.
</ChecklistItem>

<ChecklistItem id="TF-3" code="TF-3" title="Carte expirée">
  Simulez une carte expirée avec le montant 

  `6.05`

   (code 

  `54`

  ) et vérifiez le message affiché à l’utilisateur.
</ChecklistItem>

<ChecklistItem id="TF-4" code="TF-4" title="PIN incorrect">
  Simulez la saisie d’un PIN erroné avec le montant 

  `6.06`

   (code 

  `55`

  ) et vérifiez le message affiché à l’utilisateur.
</ChecklistItem>

<ChecklistItem id="TF-5" code="TF-5" title="Nombre d’essais du PIN dépassé">
  Simulez l’atteinte de la limite d’essais du PIN avec le montant 

  `8.06`

   (code 

  `75`

  ) et assurez-vous que votre application la traite comme un échec définitif.
</ChecklistItem>

<ChecklistItem id="TF-6" code="TF-6" title="Transaction annulée">
  Lancez un paiement et annulez-le depuis l’interface du SDK (bouton Retour ou fermeture). Assurez-vous que votre application revient correctement à l’écran précédent.
</ChecklistItem>

<ChecklistItem id="TF-7" code="TF-7" title="Génération du reçu">
  Vérifiez que les données de transaction (code d’autorisation, TID, date) sont correctement enregistrées et imprimées ou envoyées par e-mail sur les reçus.
</ChecklistItem>

### Interactions avec le matériel [#hardware-interactions]

<ChecklistItem id="HI-1" code="HI-1" title="Lecture NFC">
  Testez avec des cartes physiques (Visa, Mastercard) et des portefeuilles numériques (Apple Pay, Google Pay).
</ChecklistItem>

<ChecklistItem id="HI-2" code="HI-2" title="Lecture interrompue">
  Retirez la carte juste après l’avoir approchée, mais avant le « bip ». Assurez-vous que le SDK invite à approcher de nouveau la carte ou échoue proprement.
</ChecklistItem>

<ChecklistItem id="HI-3" code="HI-3" title="Perte de réseau">
  Coupez Internet/le Wi-Fi pendant une transaction. Vérifiez que l’application signale une erreur de connexion et ne se bloque pas.
</ChecklistItem>

## 2. Onboarding et configuration [#2-onboarding--configuration]

### Configuration du commerçant [#merchant-setup]

<ChecklistItem id="MS-1" code="MS-1" title="Onboarding d’un nouvel utilisateur">
  Parcourez l’intégralité du processus d’onboarding avec un nouveau compte.
</ChecklistItem>

<ChecklistItem id="MS-2" code="MS-2" title="Vérification du statut">
  Vérifiez que 

  `Accept.merchant.onboardingStatus()`

   renvoie 

  `RequiresAction`

   pour un commerçant en attente et 

  `ReadyForPayments`

   pour un commerçant approuvé.
</ChecklistItem>

## 3. Sécurité et conformité [#3-security--compliance]

### Intégrité de l’appareil [#device-integrity]

<ChecklistItem id="DI-1" code="DI-1" title="Détection du root">
  Si vous disposez d’un appareil de test rooté, vérifiez que le SDK refuse de s’initialiser.
</ChecklistItem>

<ChecklistItem id="DI-2" code="DI-2" title="Autorisations">
  Révoquez les autorisations (appareil photo, localisation) et essayez de démarrer le SDK. Assurez-vous que votre application invite l’utilisateur à les accorder.
</ChecklistItem>

### Traitement des données [#data-handling]

<ChecklistItem id="DH-1" code="DH-1" title="Gestion des jetons">
  Vérifiez que le jeton du SDK issu de 

  `POST /merchant/auth/login`

   est récupéré depuis votre backend à chaque session et n’est jamais codé en dur.
</ChecklistItem>

<ChecklistItem id="DH-2" code="DH-2" title="Aucune donnée sensible">
  Assurez-vous que les journaux de votre application 

  **n’affichent pas**

   de numéros de carte complets ni de données de piste brutes.
</ChecklistItem>

## 4. Cas limites [#4-edge-cases]

<ChecklistItem id="EC-1" code="EC-1" title="Passage de l’application en arrière-plan">
  Réduisez l’application pendant une transaction, puis restaurez-la. La transaction doit soit reprendre, soit échouer de manière sûre.
</ChecklistItem>

<ChecklistItem id="EC-2" code="EC-2" title="Appel entrant">
  Appelez l’appareil de test pendant un paiement. Le SDK doit gérer l’interruption (généralement en se mettant en pause ou en échouant).
</ChecklistItem>

<ChecklistItem id="EC-3" code="EC-3" title="Batterie faible">
  Testez le comportement lorsque l’appareil est en mode « Économie d’énergie » (les performances de certaines puces NFC se dégradent).
</ChecklistItem>

## 5. Sessions de tag NFC (facultatif) [#5-nfc-tag-sessions-optional]

Uniquement si votre application lit ou écrit des tags NFC avec [`com.tapaya:accept-nfc`](../integration/nfc_tags). Effectuez ces tests sur un téléphone et, si vous les prenez en charge, sur un terminal Sunmi de la série P avec `accept-nfc-sunmi`.

<ChecklistItem id="NT-1" code="NT-1" title="Vérification de la prise en charge">
  Vérifiez que 

  `isSupported()`

   renvoie 

  `true`

   sur le téléphone et sur le terminal Sunmi, et 

  `false`

   sur un appareil sans NFC.
</ChecklistItem>

<ChecklistItem id="NT-2" code="NT-2" title="Lecture et écriture">
  Approchez un tag NTAG ou Ultralight, vérifiez que la session indique le bon UID, puis appelez 

  `writePage`

   et relisez la page avec 

  `readPages`

  .
</ChecklistItem>

<ChecklistItem id="NT-3" code="NT-3" title="Clé incorrecte">
  Sur une MIFARE Classic, authentifiez-vous avec une clé incorrecte et vérifiez que vous obtenez 

  `AUTH_FAILED`

  , puis réussissez avec la bonne clé.
</ChecklistItem>

<ChecklistItem id="NT-4" code="NT-4" title="Annuler l’attente du tag">
  Annulez 

  `openSession()`

   pendant qu’il attend l’approche d’un tag et ouvrez immédiatement une nouvelle session.
</ChecklistItem>

<ChecklistItem id="NT-5" code="NT-5" title="Le paiement prend le relais">
  Lancez un paiement pendant une session. La session se termine avec 

  `PAYMENT`

   et le paiement aboutit.
</ChecklistItem>

<ChecklistItem id="NT-6" code="NT-6" title="Tag retiré">
  Retirez le tag pendant une session et vérifiez qu’elle se termine avec 

  `CARD_REMOVED`

  .
</ChecklistItem>

<ChecklistItem id="NT-7" code="NT-7" title="NFC désactivé">
  Sur un téléphone, désactivez le NFC et vérifiez que 

  `openSession()`

   échoue avec 

  `NFC_DISABLED`

  .
</ChecklistItem>

<ChecklistItem id="NT-8" code="NT-8" title="Application en arrière-plan">
  Sur un téléphone, mettez l’application en arrière-plan pendant une session et vérifiez qu’elle se termine avec 

  `ACTIVITY_PAUSED`

  .
</ChecklistItem>

## 6. Préparation à la production [#6-production-readiness]

<ChecklistItem id="PR-1" code="PR-1" title="Changement d’environnement">
  **CRITIQUE :**

   Assurez-vous que 

  `isProduction = true`

   est défini pour le build de production.
</ChecklistItem>

<ChecklistItem id="PR-2" code="PR-2" title="Jetons de production">
  Vérifiez que le backend pointe vers les endpoints de production de l’API Tapaya.
</ChecklistItem>

<ChecklistItem id="PR-3" code="PR-3" title="Vérification de la version">
  Assurez-vous d’utiliser la dernière version stable du Tapaya Accept SDK.
</ChecklistItem>

<ChecklistProgress />

<Callout title="Validation finale" type="tip">
  Parcourez la liste sur votre release candidate finale, sur les appareils sur lesquels vous allez livrer l’application. Utilisez **Reset** pour repartir de zéro, car les cases cochées lors des séries de tests précédentes restent enregistrées dans ce navigateur.
</Callout>
