---
title: "Zahteve kakovosti za pregled aplikacije | Tajo"
description: "Standardi kakovosti, varnosti, uporabniške izkušnje in pravni standardi, ki jih mora vaša Stripe App izpolniti, da prestane pregled"
url: https://tajo.io/sl/docs/stripe-apps/review-requirements/
markdown: https://tajo.io/sl/docs/stripe-apps/review-requirements.md
lang: sl-SI
author: "Set Noa"
author_url: https://tajo.io/sl/set-noa/
robots: noindex
---

Zaprosite za zgodnji dostop

Vnesite svoje ime in službeni e-poštni naslov. Poslali vam bomo povezavo za potrditev zahteve za dostop do Taja.

# Zahteve kakovosti za pregled aplikacije

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

Stripe vsako aplikacijo, oddano na marketplace, pregleda glede na obsežen nabor zahtev kakovosti. Če te standarde poznate že pred razvojem, prihranite čas in zmanjšate število ponovitev pregleda.

Caution

**Stanje: načrtovano, ne izdelano.** Tajo nima aplikacije Stripe, zato danes ničesar iz tega razdelka ni mogoče namestiti. Identifikatorji aplikacije, naslovi URL in poverilnice na tej strani so ponazoritvena nadomestila, ne delujoče končne točke.

## Pregled

Pregled aplikacije Stripe App ovrednoti vašo aplikacijo na šestih ključnih področjih:

1. **Pregledne cene**, jasno sporočanje stroškov
2. **Delovanje aplikacije**, zanesljivost in celovitost
3. **Razvojni standardi**, kakovost kode in uporaba API
4. **Kakovost UX**, standardi uporabniškega vmesnika in izkušnje
5. **Varnost**, zaščita podatkov in varne prakse
6. **Pravna skladnost**, zasebnost in regulativne zahteve

## Pregledne cene

Vaša aplikacija mora uporabnikom jasno sporočati vse stroške:

- **Razkritje cen**: vse cene morajo biti vnaprej navedene v vpisu na marketplace
- **Brez skritih stroškov**: uporabniki po namestitvi ne smejo naleteti na nepričakovane obračune
- **Pogoji preizkusa**: če ponujate preizkusno obdobje, jasno navedite njegovo trajanje in kaj se zgodi po izteku
- **Postopki nadgradnje**: vsako spodbujanje k nadgradnji ali dodatnemu nakupu mora biti nevsiljivo in očitno neobvezno
- **Valuta**: cene prikazujte v lokalni valuti uporabnika, kadar je to mogoče

Caution

Aplikacije, ki prikrivajo cene ali uporabnikom zaračunavajo brez jasne privolitve, bodo takoj zavrnjene.

## Oblikovanje datuma in časa

Vsi datumi in časi, prikazani v vaši aplikaciji, morajo slediti konvencijam nadzorne plošče Stripe Dashboard:

- Za oblikovanje datuma uporabite jezikovno nastavitev uporabnika, kadar je na voljo
- Čase prikazujte v lokalnem časovnem pasu uporabnika
- Za nedavne dogodke uporabite relativne časovne oznake (na primer „pred 2 urama“)
- Za starejše dogodke uporabite absolutne časovne oznake s polnim datumom in časom
- Za vsa datumska polja, namenjena API, upoštevajte 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"
```

## Nastavitve aplikacije

Če vaša aplikacija potrebuje konfiguracijo:

- Zagotovite namenski **pogled z nastavitvami**, dostopen iz vidnega polja aplikacije
- Kjer je mogoče, vnaprej izpolnite smiselne privzete vrednosti
- Preverite vse uporabniške vnose in ob napaki prikažite jasno sporočilo
- Uporabnikom omogočite posodabljanje nastavitev brez ponovne namestitve aplikacije
- Nastavitve ohranjajte med sejami z uporabo Stripe Secret Store API

## Podpora za peskovnik

Vaša aplikacija mora pravilno delovati v peskovniku (testnem načinu) Stripe:

- **Združljivost s testnim načinom**: vse funkcije morajo delovati v testnem načinu
- **Testni podatki**: uporabite realistične testne podatke, ki prikazujejo delovanje aplikacije
- **Brez produkcijskih podatkov v peskovniku**: v testnem načinu nikoli ne izpostavljajte produkcijskih podatkov
- **Elegantno ravnanje**: če funkcija v peskovniku ni na voljo, prikažite jasno sporočilo z razlago, zakaj
- V svojem manifestu nastavite `sandbox_install_compatible: true`

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

## Delovanje aplikacije

### Zanesljivost

- Aplikacija se med običajno uporabo ne sme sesuti ali zamrzniti
- Vse oglaševane funkcije morajo delovati tako, kot so opisane
- Omrežne napake je treba obravnavati elegantno, z možnostjo ponovnega poskusa
- Aplikacija mora med operacijami v ozadju ostati odzivna

### Celovitost

- Brez nadomestne vsebine, funkcij z oznako „kmalu na voljo“ ali nedelujočih povezav
- Vsi elementi UI morajo delovati, brez mrtvih gumbov ali neaktivnih kontrolnikov
- Besedilo pomoči in povezave do dokumentacije morajo voditi na veljavne strani
- Odstranitev mora čisto odstraniti vse podatke aplikacije in webhooke

### Zmogljivost

- UI se mora pri standardni povezavi izrisati v 3 sekundah
- Operacije sinhronizacije v ozadju ne smejo blokirati UI
- Veliki nabori podatkov morajo uporabljati oštevilčenje strani ali leno nalaganje
- Zmanjšajte število klicev API, da se izognete omejevanju zahtev

## Razvojni standardi

### Uporaba API

- Uporabljajte najnovejšo stabilno različico Stripe API
- Upoštevajte najboljše prakse Stripe API za oštevilčenje strani, obravnavo napak in idempotentnost
- Ne presezite omejitev števila zahtev, za ponovne poskuse uvedite eksponentni odmik
- Za posodobitve, ki jih poganjajo dogodki, namesto pogostega poizvedovanja uporabljajte webhooke

### Kakovost kode

- Brez napak ali opozoril v konzoli v produkcijskih gradnjah
- Pred oddajo odstranite vse razhroščevalno beleženje
- Obravnavajte vse robne primere (prazna stanja, manjkajoči podatki, omrežne napake)
- Za dosleden UI upoštevajte vzorce knjižnice komponent Stripe

### Različice

- Uporabljajte semantično določanje različic (MAJOR.MINOR.PATCH)
- Prelomne spremembe dokumentirajte ob posodobitvah različic
- Kjer je mogoče, ohranjajte združljivost za nazaj

## Kakovost UX

### Oglaševanje

- **Brez oglasov**: vaša aplikacija ne sme prikazovati oglasov kakršne koli vrste
- **Brez navzkrižnega promoviranja**: v uporabniškem vmesniku aplikacije ne promovirajte drugih izdelkov ali storitev
- **Blagovna znamka**: prikazujte samo lastno identiteto blagovne znamke, ne pa znamk tretjih oseb (razen partnerjev za integracijo, kot je Brevo)

### Jezik in vsebina

- **Dosleden jezik**: v celotni aplikaciji uporabljajte dosledno terminologijo
- **Profesionalen ton**: uskladite se s profesionalnim in jedrnatim slogom sporočanja nadzorne plošče Stripe Dashboard
- **Brez žargona**: izogibajte se tehničnemu žargonu, ki ga trgovci morda ne razumejo
- **Preverjanje črkovanja**: poskrbite, da je vse besedilo brez pravopisnih in slovničnih napak
- **Samo angleščina**: vse besedilo, ki ga vidi uporabnik, mora biti pri aplikacijah na marketplace v angleščini

### Potrditvena pogovorna okna

Za uničujoča ali pomembna dejanja zahtevajte potrditev uporabnika:

```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();
  }
};
```

Dejanja, ki zahtevajo potrditev:

- Prekinitev povezave z integracijami
- Brisanje sinhroniziranih podatkov
- Spreminjanje nastavitev, ki vplivajo na pretok podatkov
- Ponastavitev konfiguracije na privzete vrednosti

### Stanja nalaganja

Za asinhrone operacije vedno prikažite kazalnike nalaganja:

```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} />;
};
```

Zahteve:

- Med nalaganjem podatkov prikažite vrtavke ali okostne zaslone
- Med pošiljanjem obrazca onemogočite gumbe
- Za dolgotrajne operacije prikažite kazalnike napredka
- Med nalaganjem nikoli ne prikazujte praznega zaslona

### Sporočila o napakah

Zagotovite jasna sporočila o napakah, ki povedo, kaj storiti:

```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."
```

Smernice za sporočila o napakah:

- Z vsakdanjim jezikom pojasnite, kaj se je zgodilo
- Predlagajte konkretno dejanje, s katerim lahko uporabnik odpravi težavo
- Ponudite način za ponovni poskus neuspele operacije
- Za razhroščevanje zabeležite podrobne informacije o napaki (ki se uporabnikom ne prikažejo)
- Kadar je to smiselno, navedite kode napak za sklicevanje pri podpori

## Varnost

### Secret Store API

Za shranjevanje vseh občutljivih podatkov uporabljajte 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;
};
```

Občutljivih podatkov **nikoli** ne shranjujte v:

- lokalno shrambo ali shrambo seje
- piškotke
- parametre URL
- trdo kodirane vrednosti v izvorni kodi
- konfiguracijske datoteke z navadnim besedilom

### Kriptografija

- **Brez lastne kriptografije**: ne izvajajte lastnih šifrirnih algoritmov
- Uporabljajte vgrajene varnostne gradnike Stripe (Secret Store, podpisne skrivnosti)
- Za vse zunanje klice API uporabljajte HTTPS
- Pred obdelavo preverite vse podpise webhookov

### Ravnanje s podatki

- Zahtevajte samo dovoljenja, ki jih vaša aplikacija dejansko potrebuje
- Podatkov Stripe ne shranjujte v obsegu, ki presega potrebe delovanja
- Uvedite pravila hrambe podatkov, usklajena z vašo politiko zasebnosti
- Zagotovite mehanizem, prek katerega lahko uporabniki zahtevajo izbris podatkov

## Pravna skladnost

### Politika zasebnosti

Vaša aplikacija mora imeti javno dostopno politiko zasebnosti, ki pokriva:

- katere podatke vaša aplikacija zbira iz Stripe
- kako se podatki shranjujejo, obdelujejo in delijo
- pravila hrambe in izbrisa podatkov
- pravice uporabnikov glede njihovih podatkov
- kontaktne podatke za vprašanja o zasebnosti
- skladnost z veljavnimi predpisi (GDPR, CCPA in podobno)

### Pogoji storitve

- Za svojo aplikacijo zagotovite jasne pogoje storitve
- Ne vključujte pogojev, ki so v nasprotju s pogoji storitve Stripe
- Jasno navedite morebitne omejitve ali prepovedi uporabe

### Regulativna skladnost

- Upoštevajte vse veljavne predpise o varstvu podatkov
- Sklenite ustrezne pogodbe o obdelavi podatkov
- Podprite zahteve za prenosljivost in izbris podatkov
- Vodite revizijske dnevnike o dostopu do podatkov in njihovi obdelavi

## Časovnica postopka pregleda

| Faza | Trajanje |
| --- | --- |
| Prva oddaja | 5-10 delovnih dni |
| Pregled popravkov | 3-7 delovnih dni |
| Končna odobritev | 1-2 delovna dneva |
| Objava | takoj po odobritvi |

Tip

Vse povratne informacije iz pregleda obravnavajte v eni sami reviziji, da se izognete več krogom pregleda. Ekipa Stripe za vsako najdeno težavo poda konkretne povratne informacije, ki povedo, kaj storiti.

## Pogosti razlogi za zavrnitev

1. **Manjkajoča obravnava napak**, aplikacija se sesuje ob omrežnih napakah ali nepričakovanih podatkih
2. **Nezadostna stanja nalaganja**, prazni zasloni med pridobivanjem podatkov
3. **Nejasne cene**, cene v vpisu niso v celoti razkrite
4. **Prekomerna dovoljenja**, zahtevanje dovoljenj, ki jih aplikacija ne potrebuje
5. **Nedelujoč peskovnik**, aplikacija ne deluje v testnem načinu
6. **Varnostne težave**, shranjevanje skrivnosti zunaj Secret Store API
7. **Manjkajoča politika zasebnosti**, ni dostopnega naslova URL politike zasebnosti
8. **Nepopolno delovanje**, funkcije z oznako „kmalu na voljo“ ali nadomestna vsebina
