# QA-Checkliste (/de/in-store/getting-started/checklist)



Gehen Sie vor der Veröffentlichung Ihrer Anwendung diese Checkliste zur Qualitätssicherung (QA) durch. Sie deckt Funktionstests, Fehlerbehandlung und Szenarien der Benutzererfahrung ab, um Probleme im Praxiseinsatz zu minimieren. Haken Sie jeden Punkt ab, sobald Sie ihn geprüft haben.

<ChecklistProgress />

## 1. Funktionstests [#1-functional-testing]

### Transaktionsabläufe [#transaction-flows]

<ChecklistItem id="TF-1" code="TF-1" title="Erfolgreiche Zahlung">
  Prüfen Sie eine reguläre genehmigte Transaktion mit dem Betrag 

  `1.01`

   (Code 

  `00`

  ) in der 

  [Sandbox-Umgebung](./testing)

  .
</ChecklistItem>

<ChecklistItem id="TF-2" code="TF-2" title="Kartenauthentifizierung abgelehnt">
  Simulieren Sie eine abgelehnte Transaktion mit dem Betrag 

  `1.07`

   (Code 

  `06`

  ) und stellen Sie sicher, dass die App sie sauber verarbeitet, ohne abzustürzen.
</ChecklistItem>

<ChecklistItem id="TF-3" code="TF-3" title="Abgelaufene Karte">
  Simulieren Sie eine abgelaufene Karte mit dem Betrag 

  `6.05`

   (Code 

  `54`

  ) und prüfen Sie die Meldung für den Benutzer.
</ChecklistItem>

<ChecklistItem id="TF-4" code="TF-4" title="Falsche PIN">
  Simulieren Sie eine falsche PIN-Eingabe mit dem Betrag 

  `6.06`

   (Code 

  `55`

  ) und prüfen Sie die Meldung für den Benutzer.
</ChecklistItem>

<ChecklistItem id="TF-5" code="TF-5" title="PIN-Versuche überschritten">
  Simulieren Sie das Erreichen des PIN-Versuchslimits mit dem Betrag 

  `8.06`

   (Code 

  `75`

  ) und stellen Sie sicher, dass Ihre App dies als endgültigen Fehlschlag behandelt.
</ChecklistItem>

<ChecklistItem id="TF-6" code="TF-6" title="Abgebrochene Transaktion">
  Starten Sie eine Zahlung und brechen Sie sie in der SDK-Oberfläche ab (Zurück-Taste oder Schließen). Stellen Sie sicher, dass Ihre App korrekt zum vorherigen Bildschirm zurückkehrt.
</ChecklistItem>

<ChecklistItem id="TF-7" code="TF-7" title="Belegerstellung">
  Prüfen Sie, dass die Transaktionsdaten (Autorisierungscode, TID, Datum) korrekt erfasst und auf gedruckten bzw. per E-Mail versendeten Belegen ausgegeben werden.
</ChecklistItem>

### Hardware-Interaktionen [#hardware-interactions]

<ChecklistItem id="HI-1" code="HI-1" title="NFC-Lesevorgang">
  Testen Sie mit physischen Karten (Visa, Mastercard) und digitalen Wallets (Apple Pay, Google Pay).
</ChecklistItem>

<ChecklistItem id="HI-2" code="HI-2" title="Unterbrochener Lesevorgang">
  Entfernen Sie die Karte direkt nach dem Vorhalten, aber vor dem „Piepton“. Stellen Sie sicher, dass das SDK zum erneuten Vorhalten auffordert oder sauber fehlschlägt.
</ChecklistItem>

<ChecklistItem id="HI-3" code="HI-3" title="Verbindungsverlust">
  Schalten Sie während einer Transaktion Internet/WLAN aus. Prüfen Sie, dass die App einen Verbindungsfehler meldet und nicht hängen bleibt.
</ChecklistItem>

## 2. Onboarding und Konfiguration [#2-onboarding--configuration]

### Händler-Einrichtung [#merchant-setup]

<ChecklistItem id="MS-1" code="MS-1" title="Onboarding neuer Benutzer">
  Durchlaufen Sie den gesamten Onboarding-Ablauf mit einem neuen Konto.
</ChecklistItem>

<ChecklistItem id="MS-2" code="MS-2" title="Statusprüfung">
  Prüfen Sie, dass 

  `Accept.merchant.onboardingStatus()`

   für einen ausstehenden Händler 

  `RequiresAction`

   und für einen genehmigten Händler 

  `ReadyForPayments`

   zurückgibt.
</ChecklistItem>

## 3. Sicherheit und Compliance [#3-security--compliance]

### Geräteintegrität [#device-integrity]

<ChecklistItem id="DI-1" code="DI-1" title="Root-Erkennung">
  Wenn Sie ein gerootetes Testgerät haben, prüfen Sie, dass das SDK die Initialisierung verweigert.
</ChecklistItem>

<ChecklistItem id="DI-2" code="DI-2" title="Berechtigungen">
  Entziehen Sie Berechtigungen (Kamera, Standort) und versuchen Sie, das SDK zu starten. Stellen Sie sicher, dass Ihre App den Benutzer auffordert, sie zu erteilen.
</ChecklistItem>

### Umgang mit Daten [#data-handling]

<ChecklistItem id="DH-1" code="DH-1" title="Token-Verwaltung">
  Prüfen Sie, dass das SDK-Token aus 

  `POST /merchant/auth/login`

   für jede Session von Ihrem Backend abgerufen und niemals fest im Code hinterlegt wird.
</ChecklistItem>

<ChecklistItem id="DH-2" code="DH-2" title="Keine sensiblen Daten">
  Stellen Sie sicher, dass die Logs Ihrer App 

  **keine**

   vollständigen Kartennummern oder rohen Spurdaten (Track Data) ausgeben.
</ChecklistItem>

## 4. Grenzfälle [#4-edge-cases]

<ChecklistItem id="EC-1" code="EC-1" title="App im Hintergrund">
  Minimieren Sie die App während einer Transaktion und stellen Sie sie wieder her. Die Transaktion sollte entweder fortgesetzt werden oder sicher fehlschlagen.
</ChecklistItem>

<ChecklistItem id="EC-2" code="EC-2" title="Eingehender Anruf">
  Rufen Sie das Testgerät während einer Zahlung an. Das SDK sollte die Unterbrechung verarbeiten (in der Regel durch Pausieren oder Fehlschlagen).
</ChecklistItem>

<ChecklistItem id="EC-3" code="EC-3" title="Niedriger Akkustand">
  Testen Sie das Verhalten, wenn sich das Gerät im Modus „Energiesparen“ befindet (bei manchen NFC-Chips lässt die Leistung nach).
</ChecklistItem>

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

Nur relevant, wenn Ihre App NFC-Tags mit [`com.tapaya:accept-nfc`](../integration/nfc_tags) liest oder beschreibt. Führen Sie diese Prüfungen auf einem Telefon und, falls Sie diese unterstützen, auf einem Terminal der Sunmi-P-Serie mit `accept-nfc-sunmi` durch.

<ChecklistItem id="NT-1" code="NT-1" title="Prüfung der Unterstützung">
  Prüfen Sie, dass 

  `isSupported()`

   auf dem Telefon und dem Sunmi-Terminal 

  `true`

   und auf einem Gerät ohne NFC 

  `false`

   zurückgibt.
</ChecklistItem>

<ChecklistItem id="NT-2" code="NT-2" title="Lesen und Schreiben">
  Halten Sie einen NTAG- oder Ultralight-Tag an das Gerät, prüfen Sie, dass die Session die richtige UID meldet, rufen Sie dann 

  `writePage`

   auf und lesen Sie die Seite mit 

  `readPages`

   zurück.
</ChecklistItem>

<ChecklistItem id="NT-3" code="NT-3" title="Falscher Schlüssel">
  Authentifizieren Sie sich bei MIFARE Classic mit einem falschen Schlüssel und bestätigen Sie 

  `AUTH_FAILED`

  , authentifizieren Sie sich dann erfolgreich mit dem richtigen Schlüssel.
</ChecklistItem>

<ChecklistItem id="NT-4" code="NT-4" title="Warten auf Vorhalten abbrechen">
  Brechen Sie 

  `openSession()`

   ab, während auf das Vorhalten gewartet wird, und öffnen Sie sofort eine neue Session.
</ChecklistItem>

<ChecklistItem id="NT-5" code="NT-5" title="Zahlung hat Vorrang">
  Starten Sie während einer Session eine Zahlung. Die Session endet mit 

  `PAYMENT`

   und die Zahlung wird durchgeführt.
</ChecklistItem>

<ChecklistItem id="NT-6" code="NT-6" title="Tag entfernt">
  Entfernen Sie den Tag während einer Session und bestätigen Sie, dass sie mit 

  `CARD_REMOVED`

   endet.
</ChecklistItem>

<ChecklistItem id="NT-7" code="NT-7" title="NFC ausgeschaltet">
  Schalten Sie auf einem Telefon NFC aus und bestätigen Sie, dass 

  `openSession()`

   mit 

  `NFC_DISABLED`

   fehlschlägt.
</ChecklistItem>

<ChecklistItem id="NT-8" code="NT-8" title="App im Hintergrund">
  Schicken Sie die App auf einem Telefon während einer Session in den Hintergrund und bestätigen Sie, dass die Session mit 

  `ACTIVITY_PAUSED`

   endet.
</ChecklistItem>

## 6. Produktionsreife [#6-production-readiness]

<ChecklistItem id="PR-1" code="PR-1" title="Umgebungswechsel">
  **KRITISCH:**

   Stellen Sie sicher, dass für den Produktions-Build 

  `isProduction = true`

   gesetzt ist.
</ChecklistItem>

<ChecklistItem id="PR-2" code="PR-2" title="Produktions-Tokens">
  Prüfen Sie, dass das Backend auf die Produktions-Endpoints der Tapaya API zeigt.
</ChecklistItem>

<ChecklistItem id="PR-3" code="PR-3" title="Versionsprüfung">
  Stellen Sie sicher, dass Sie die neueste stabile Version des Tapaya Accept SDK verwenden.
</ChecklistItem>

<ChecklistProgress />

<Callout title="Freigabe" type="tip">
  Gehen Sie die Liste mit Ihrem finalen Release Candidate auf den Geräten durch, auf denen Sie ausliefern werden. Mit **Reset** starten Sie einen neuen, sauberen Durchlauf, da Häkchen aus früheren Testrunden in diesem Browser gespeichert bleiben.
</Callout>
