---
title: "Požiadavky na kvalitu pri kontrole aplikácie | Tajo"
description: "Štandardy kvality, bezpečnosti, UX a právne požiadavky, ktoré musí Vaša Stripe App splniť, aby prešla kontrolou"
url: https://tajo.io/sk/docs/stripe-apps/review-requirements/
markdown: https://tajo.io/sk/docs/stripe-apps/review-requirements.md
lang: sk-SK
author: "Set Noa"
author_url: https://tajo.io/sk/set-noa/
robots: noindex
---

Požiadajte o skorý prístup

Zadajte svoje meno a pracovnú e-mailovú adresu. Pošleme vám odkaz na potvrdenie žiadosti o prístup k Tajo.

# Požiadavky na kvalitu pri kontrole aplikácie

[Set Noa](https://tajo.io/sk/set-noa/)

Stripe posudzuje každú aplikáciu odoslanú na marketplace podľa komplexného súboru požiadaviek na kvalitu. Ak tieto štandardy poznáte už pred vývojom, ušetríte čas a znížite počet kôl kontroly.

Caution

**Stav: plánované, nevytvorené.** Tajo nemá žiadnu aplikáciu Stripe, takže nič z tejto sekcie sa dnes nedá nainštalovať. Identifikátory aplikácie, URL a prihlasovacie údaje na tejto stránke sú ilustratívne zástupné hodnoty, nie funkčné endpointy.

## Prehľad

Kontrola Stripe App hodnotí Vašu aplikáciu v šiestich kľúčových oblastiach:

1. **Transparentné ceny**, jasná komunikácia nákladov
2. **Funkčnosť aplikácie**, spoľahlivosť a úplnosť
3. **Vývojárske štandardy**, kvalita kódu a používanie API
4. **Kvalita UX**, štandardy používateľského rozhrania a používateľskej skúsenosti
5. **Bezpečnosť**, ochrana dát a bezpečné postupy
6. **Právny súlad**, požiadavky na ochranu súkromia a reguláciu

## Transparentné ceny

Vaša aplikácia musí používateľom jasne komunikovať všetky náklady:

- **Zverejnenie cien**: všetky ceny musia byť vopred uvedené v zázname na marketplace
- **Žiadne skryté poplatky**: používatelia sa po inštalácii nesmú stretnúť s neočakávanými poplatkami
- **Podmienky skúšobnej verzie**: ak ponúkate skúšobnú verziu, jasne uveďte jej trvanie a to, čo nastane po jej skončení
- **Prechod na vyšší plán**: akékoľvek ponuky upsellu alebo prechodu na vyšší plán musia byť nenásilné a zjavne dobrovoľné
- **Mena**: ceny podľa možnosti zobrazujte v lokálnej mene používateľa

Caution

Aplikácie, ktoré zahmlievajú ceny alebo účtujú používateľom bez jasného súhlasu, budú okamžite zamietnuté.

## Formátovanie dátumu a času

Všetky dátumy a časy zobrazené vo Vašej aplikácii musia dodržiavať konvencie Stripe Dashboardu:

- Ak je to možné, formátujte dátum podľa jazykového nastavenia používateľa
- Časy zobrazujte v miestnom časovom pásme používateľa
- Pri nedávnych udalostiach používajte relatívne časové údaje (napríklad “2 hours ago”)
- Pri starších udalostiach používajte absolútne časové údaje s celým dátumom a časom
- Pri dátumových poliach smerujúcich do API dodržiavajte ISO 8601

```typescript
// Good: Use Stripe's date formatting utilities
import { formatDate, formatRelativeTime } from '@stripe/ui-extension-sdk/utils';

const formattedDate = formatDate(timestamp); // Locale-aware
const relativeTime = formatRelativeTime(timestamp); // "2 hours ago"
```

## Nastavenia aplikácie

Ak Vaša aplikácia vyžaduje konfiguráciu:

- Poskytnite samostatné **zobrazenie nastavení** dostupné z viewportu aplikácie
- Kde je to možné, predvyplňte rozumné predvolené hodnoty
- Overujte všetky vstupy od používateľa a zobrazujte zrozumiteľné chybové hlásenia
- Umožnite používateľom meniť nastavenia bez preinštalovania aplikácie
- Nastavenia uchovávajte naprieč reláciami pomocou Stripe Secret Store API

## Podpora sandboxu

Vaša aplikácia musí správne fungovať v sandboxovom (testovacom) režime Stripe:

- **Kompatibilita s testovacím režimom**: všetky funkcie musia fungovať v testovacom režime
- **Testovacie dáta**: používajte realistické testovacie dáta, ktoré predvedú funkčnosť aplikácie
- **Žiadne ostré dáta v sandboxe**: nikdy nesprístupňujte produkčné dáta v testovacom režime
- **Korektné spracovanie**: ak niektorá funkcia nie je v sandboxe dostupná, zobrazte jasné vysvetlenie prečo
- V manifeste nastavte `sandbox_install_compatible: true`

```json
{
  "sandbox_install_compatible": true
}
```

## Funkčnosť aplikácie

### Spoľahlivosť

- Aplikácia nesmie pri bežnom používaní padať ani zamŕzať
- Všetky propagované funkcie musia fungovať tak, ako sú opísané
- Sieťové chyby musia byť spracované korektne s možnosťou opakovania
- Aplikácia musí zostať responzívna počas operácií na pozadí

### Úplnosť

- Žiadny zástupný obsah, funkcie s označením “coming soon” ani nefunkčné odkazy
- Všetky prvky UI musia byť funkčné, žiadne mŕtve tlačidlá ani neaktívne ovládacie prvky
- Pomocné texty a odkazy na dokumentáciu musia viesť na platné stránky
- Odinštalovanie musí čisto odstrániť všetky dáta aplikácie aj webhooky

### Výkon

- UI sa musí na štandardnom pripojení vykresliť do 3 sekúnd
- Synchronizácia na pozadí nesmie blokovať UI
- Veľké množstvá dát musia využívať stránkovanie alebo lenivé načítavanie
- Minimalizujte počet volaní API, aby ste nenarazili na limity požiadaviek

## Vývojárske štandardy

### Používanie API

- Používajte najnovšiu stabilnú verziu Stripe API
- Dodržiavajte osvedčené postupy Stripe API pre stránkovanie, spracovanie chýb a idempotenciu
- Neprekračujte limity požiadaviek, pri opakovaniach implementujte exponenciálne predlžovanie odstupu
- Na aktualizácie riadené udalosťami používajte webhooky namiesto opakovaného dopytovania

### Kvalita kódu

- Žiadne chyby ani upozornenia v konzole v produkčných zostaveniach
- Pred odoslaním odstráňte všetko ladiace logovanie
- Ošetrite všetky hraničné prípady (prázdne stavy, chýbajúce dáta, výpadky siete)
- Kvôli konzistentnému UI dodržiavajte vzory z knižnice komponentov Stripe

### Verzovanie

- Používajte sémantické verzovanie (MAJOR.MINOR.PATCH)
- Pri aktualizáciách verzií zdokumentujte nekompatibilné zmeny
- Kde je to možné, zachovajte spätnú kompatibilitu

## Kvalita UX

### Reklama

- **Žiadne reklamy**: Vaša aplikácia nesmie zobrazovať žiadne reklamy
- **Žiadna krížová propagácia**: v rozhraní aplikácie nepropagujte iné produkty ani služby
- **Značkový obsah**: zobrazujte iba vlastnú identitu značky, nie značky tretích strán (s výnimkou integračných partnerov, ako je Brevo)

### Jazyk a obsah

- **Konzistentný jazyk**: v celej aplikácii používajte jednotnú terminológiu
- **Profesionálny tón**: držte sa profesionálneho a stručného štýlu komunikácie Stripe Dashboardu
- **Žiadny žargón**: vyhýbajte sa technickému žargónu, ktorému obchodníci nemusia rozumieť
- **Kontrola pravopisu**: uistite sa, že všetky texty neobsahujú pravopisné ani gramatické chyby
- **Iba angličtina**: všetky texty pre používateľa musia byť pri aplikáciách na marketplace v angličtine

### Potvrdzovacie dialógy

Pri deštruktívnych alebo závažných akciách vyžadujte potvrdenie od používateľa:

```typescript
// Good: Confirm before destructive actions
const handleDisconnect = async () => {
  const confirmed = await showConfirmation({
    title: 'Disconnect Brevo Integration',
    message: 'This will stop syncing customer data to Brevo. You can reconnect at any time.',
    confirmLabel: 'Disconnect',
    cancelLabel: 'Cancel',
    destructive: true,
  });

  if (confirmed) {
    await disconnectIntegration();
  }
};
```

Akcie, ktoré vyžadujú potvrdenie:

- Odpojenie integrácií
- Odstránenie synchronizovaných dát
- Zmena nastavení, ktoré ovplyvňujú tok dát
- Obnovenie konfigurácie na predvolené hodnoty

### Stavy načítavania

Pri asynchrónnych operáciách vždy zobrazujte indikátory načítavania:

```typescript
// Good: Show loading state during data fetch
const CustomerSyncStatus = () => {
  const { data, isLoading, error } = useSyncStatus();

  if (isLoading) {
    return <Spinner label="Loading sync status..." />;
  }

  if (error) {
    return <Banner type="critical" title="Failed to load sync status">
      {error.message}
    </Banner>;
  }

  return <SyncStatusDisplay data={data} />;
};
```

Požiadavky:

- Počas načítavania dát zobrazujte spinnery alebo skeletonové obrazovky
- Počas odosielania formulára deaktivujte tlačidlá
- Pri dlho bežiacich operáciách zobrazujte indikátory priebehu
- Počas načítavania nikdy nezobrazujte prázdnu obrazovku

### Chybové hlásenia

Poskytujte jasné chybové hlásenia, s ktorými sa dá niečo urobiť:

```typescript
// Bad: Generic error
"Something went wrong"

// Good: Specific and actionable
"Unable to sync customer data to Brevo. Please verify your Brevo API key
in Settings and try again."
```

Pravidlá pre chybové hlásenia:

- Zrozumiteľným jazykom vysvetlite, čo sa stalo
- Navrhnite konkrétny krok, ktorým používateľ problém vyrieši
- Poskytnite spôsob, ako zlyhanú operáciu zopakovať
- Podrobné informácie o chybe logujte na ladenie (používateľom sa nezobrazujú)
- Ak to dáva zmysel, uvádzajte kódy chýb pre potreby podpory

## Bezpečnosť

### Secret Store API

Na ukladanie všetkých citlivých dát používajte Stripe Secret Store API:

```typescript
import { createHttpClient, STRIPE_API_KEY } from '@stripe/ui-extension-sdk/http_client';

// Good: Store secrets using the Secret Store API
const storeBrevoApiKey = async (apiKey: string) => {
  const stripe = createHttpClient(STRIPE_API_KEY);
  await stripe.apps.secrets.create({
    name: 'brevo_api_key',
    payload: apiKey,
    scope: { type: 'account' },
  });
};

// Good: Retrieve secrets from the Secret Store
const getBrevoApiKey = async () => {
  const stripe = createHttpClient(STRIPE_API_KEY);
  const secret = await stripe.apps.secrets.find({
    name: 'brevo_api_key',
    scope: { type: 'account' },
  });
  return secret.payload;
};
```

Citlivé dáta **nikdy** neukladajte do:

- Lokálneho úložiska ani úložiska relácie
- Cookies
- Parametrov URL
- Napevno zapísaných hodnôt v zdrojovom kóde
- Konfiguračných súborov v čistom texte

### Kryptografia

- **Žiadna vlastná kryptografia**: neimplementujte vlastné šifrovacie algoritmy
- Používajte vstavané bezpečnostné prvky Stripe (Secret Store, podpisové kľúče)
- Pri všetkých volaniach externých API používajte HTTPS
- Pred spracovaním overte všetky podpisy webhookov

### Práca s dátami

- Žiadajte iba tie oprávnenia, ktoré Vaša aplikácia naozaj potrebuje
- Neukladajte dáta zo Stripe nad rámec toho, čo je pre funkčnosť nevyhnutné
- Zaveďte pravidlá uchovávania dát v súlade so svojimi zásadami ochrany osobných údajov
- Poskytnite používateľom spôsob, ako požiadať o vymazanie dát

## Právny súlad

### Zásady ochrany osobných údajov

Vaša aplikácia musí mať verejne dostupné zásady ochrany osobných údajov, ktoré pokrývajú:

- Aké dáta Vaša aplikácia zbiera zo Stripe
- Ako sa dáta ukladajú, spracúvajú a zdieľajú
- Pravidlá uchovávania a mazania dát
- Práva používateľov vo vzťahu k ich dátam
- Kontaktné údaje pre otázky týkajúce sa ochrany súkromia
- Súlad s platnými predpismi (GDPR, CCPA a podobne)

### Obchodné podmienky

- Poskytnite pre svoju aplikáciu jasné obchodné podmienky
- Neuvádzajte podmienky, ktoré sú v rozpore s obchodnými podmienkami Stripe
- Jasne uveďte všetky obmedzenia používania

### Regulačný súlad

- Dodržiavajte všetky platné predpisy o ochrane osobných údajov
- Zaveďte primerané zmluvy o spracúvaní údajov
- Podporte prenositeľnosť údajov a žiadosti o ich vymazanie
- Veďte auditné záznamy o prístupe k dátam a ich spracúvaní

## Časový priebeh kontroly

| Fáza | Trvanie |
| --- | --- |
| Prvotné odoslanie | 5 až 10 pracovných dní |
| Kontrola revízie | 3 až 7 pracovných dní |
| Záverečné schválenie | 1 až 2 pracovné dni |
| Publikovanie | Okamžite po schválení |

Tip

Vyriešte všetku spätnú väzbu z kontroly v jednej revízii, aby ste sa vyhli viacerým kolám. Tím Stripe poskytuje ku každému nájdenému problému konkrétnu spätnú väzbu, s ktorou sa dá pracovať.

## Bežné dôvody zamietnutia

1. **Chýbajúce spracovanie chýb**, aplikácia padá pri sieťových chybách alebo neočakávaných dátach
2. **Nedostatočné stavy načítavania**, prázdne obrazovky počas načítavania dát
3. **Nejasné ceny**, ceny nie sú v zázname plne zverejnené
4. **Nadmerné oprávnenia**, žiadanie oprávnení, ktoré aplikácia nepotrebuje
5. **Nefunkčný sandboxový režim**, aplikácia nefunguje v testovacom režime
6. **Bezpečnostné problémy**, ukladanie tajných kľúčov mimo Secret Store API
7. **Chýbajúce zásady ochrany osobných údajov**, žiadna dostupná URL so zásadami
8. **Neúplná funkčnosť**, funkcie s označením “coming soon” alebo zástupný obsah
