---
title: "Zahtjevi kvalitete za pregled aplikacije | Tajo"
description: "Standardi kvalitete, sigurnosti, korisničkog iskustva i pravne usklađenosti koje vaša Stripe aplikacija mora ispuniti da bi prošla pregled"
url: https://tajo.io/hr/docs/stripe-apps/review-requirements/
markdown: https://tajo.io/hr/docs/stripe-apps/review-requirements.md
lang: hr-HR
author: "Set Noa"
author_url: https://tajo.io/hr/set-noa/
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslat ćemo vam poveznicu za potvrdu zahtjeva za pristup Taju.

# Zahtjevi kvalitete za pregled aplikacije

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

Stripe pregledava svaku aplikaciju poslanu na marketplace prema sveobuhvatnom skupu zahtjeva kvalitete. Razumijevanje tih standarda prije razvoja štedi vrijeme i smanjuje broj krugova pregleda.

Caution

**Status: planirano, nije izrađeno.** Tajo nema Stripe aplikaciju, pa se ništa iz ovog odjeljka danas ne može instalirati. Identifikatori aplikacije, URL-ovi i vjerodajnice na ovoj stranici ilustrativni su rezervirani unosi, a ne stvarne krajnje točke.

## Pregled

Pregled Stripe aplikacije ocjenjuje vašu aplikaciju kroz šest ključnih područja:

1. **Transparentne cijene**, jasna komunikacija troškova
2. **Funkcionalnost aplikacije**, pouzdanost i potpunost
3. **Standardi za razvojne programere**, kvaliteta koda i korištenje API-ja
4. **Kvaliteta korisničkog iskustva**, standardi korisničkog sučelja i iskustva
5. **Sigurnost**, zaštita podataka i sigurne prakse
6. **Pravna usklađenost**, zahtjevi privatnosti i regulative

## Transparentne cijene

Vaša aplikacija mora jasno komunicirati sve troškove korisnicima:

- **Objava cijena**: sve cijene moraju biti unaprijed navedene u oglasu na marketplaceu
- **Bez skrivenih naknada**: korisnici ne smiju naići na neočekivane troškove nakon instalacije
- **Uvjeti probnog razdoblja**: ako nudite probno razdoblje, jasno navedite njegovo trajanje i što se događa kada završi
- **Tijekovi nadogradnje**: svaki poticaj na nadogradnju ili dodatnu prodaju mora biti nenametljiv i jasno neobavezan
- **Valuta**: prikazujte cijene u lokalnoj valuti korisnika kad god je to moguće

Caution

Aplikacije koje zamagljuju cijene ili naplaćuju korisnicima bez jasnog pristanka bit će odmah odbijene.

## Oblikovanje datuma i vremena

Svi datumi i vremena prikazani u vašoj aplikaciji moraju slijediti konvencije sučelja Stripe Dashboard:

- Koristite lokalizaciju korisnika za oblikovanje datuma kada je dostupna
- Prikazujte vremena u lokalnoj vremenskoj zoni korisnika
- Koristite relativne vremenske oznake za nedavne događaje (npr. „prije 2 sata“)
- Koristite apsolutne vremenske oznake za starije događaje, s punim datumom i vremenom
- Slijedite ISO 8601 za sva polja s datumima okrenuta prema API-ju

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

## Postavke aplikacije

Ako vaša aplikacija zahtijeva konfiguraciju:

- Osigurajte namjenski **prikaz postavki** dostupan iz prozora aplikacije
- Unaprijed popunite razumne zadane vrijednosti gdje je to moguće
- Provjerite valjanost svih korisničkih unosa uz jasne poruke o pogreškama
- Dopustite korisnicima da ažuriraju postavke bez ponovne instalacije aplikacije
- Trajno pohranite postavke između sesija pomoću Stripe Secret Store API-ja

## Podrška za sandbox

Vaša aplikacija mora ispravno raditi u Stripe sandboxu (testnom načinu rada):

- **Kompatibilnost s testnim načinom rada**: sve značajke moraju raditi u testnom načinu rada
- **Testni podaci**: koristite realistične testne podatke koji pokazuju funkcionalnost aplikacije
- **Bez stvarnih podataka u sandboxu**: nikada ne izlažite produkcijske podatke u testnom načinu rada
- **Elegantno rukovanje**: ako značajka nije dostupna u sandboxu, prikažite jasnu poruku s objašnjenjem zašto
- Postavite `sandbox_install_compatible: true` u svom manifestu

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

## Funkcionalnost aplikacije

### Pouzdanost

- Aplikacija se ne smije rušiti ni zamrzavati tijekom uobičajenog korištenja
- Sve oglašene značajke moraju raditi kako je opisano
- Mrežnim pogreškama mora se elegantno rukovati uz mogućnost ponovnog pokušaja
- Aplikacija mora ostati odzivna tijekom pozadinskih operacija

### Potpunost

- Bez rezerviranog sadržaja, značajki „uskoro“ ili neispravnih poveznica
- Svi elementi sučelja moraju biti funkcionalni, bez mrtvih gumba ili neaktivnih kontrola
- Poveznice na tekst pomoći i dokumentaciju moraju voditi na valjane stranice
- Deinstalacija mora u cijelosti ukloniti sve podatke aplikacije i webhookove

### Performanse

- Sučelje se mora iscrtati unutar 3 sekunde na standardnoj vezi
- Pozadinske operacije sinkronizacije ne smiju blokirati sučelje
- Veliki skupovi podataka moraju koristiti straničenje ili odgođeno učitavanje
- Svedite pozive API-ja na najmanju mjeru kako biste izbjegli ograničenja brzine

## Standardi za razvojne programere

### Korištenje API-ja

- Koristite najnoviju stabilnu verziju Stripe API-ja
- Slijedite najbolje prakse Stripe API-ja za straničenje, rukovanje pogreškama i idempotentnost
- Ne prekoračujte ograničenja brzine, implementirajte eksponencijalno odgađanje za ponovne pokušaje
- Koristite webhookove za ažuriranja vođena događajima umjesto stalnog ispitivanja

### Kvaliteta koda

- Bez pogrešaka ili upozorenja u konzoli u produkcijskim izdanjima
- Uklonite sve zapise za otklanjanje pogrešaka prije slanja
- Obradite sve rubne slučajeve (prazna stanja, podaci koji nedostaju, mrežni ispadi)
- Slijedite obrasce biblioteke komponenti platforme Stripe radi dosljednog sučelja

### Verzioniranje

- Koristite semantičko verzioniranje (MAJOR.MINOR.PATCH)
- Dokumentirajte prekidajuće promjene u ažuriranjima verzija
- Održavajte kompatibilnost unatrag gdje je to moguće

## Kvaliteta korisničkog iskustva

### Oglašavanje

- **Bez oglasa**: vaša aplikacija ne smije prikazivati oglase bilo koje vrste
- **Bez unakrsne promocije**: ne promovirajte druge proizvode ni usluge unutar sučelja aplikacije
- **Brendirani sadržaj**: prikazujte samo vlastiti brend, a ne brendove trećih strana (osim partnera za integraciju poput Breva)

### Jezik i sadržaj

- **Dosljedan jezik**: koristite dosljednu terminologiju kroz cijelu aplikaciju
- **Profesionalan ton**: uskladite se s profesionalnim i sažetim stilom komunikacije sučelja Stripe Dashboard
- **Bez žargona**: izbjegavajte tehnički žargon koji trgovci možda neće razumjeti
- **Provjera pravopisa**: pobrinite se da tekst nema pravopisnih ni gramatičkih pogrešaka
- **Samo engleski**: sav tekst vidljiv korisniku mora biti na engleskom za aplikacije na marketplaceu

### Dijalozi za potvrdu

Zatražite potvrdu korisnika za destruktivne ili značajne radnje:

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

Radnje koje zahtijevaju potvrdu:

- Prekid veze integracija
- Brisanje sinkroniziranih podataka
- Promjena postavki koje utječu na protok podataka
- Vraćanje konfiguracije na zadane vrijednosti

### Stanja učitavanja

Uvijek prikazujte pokazatelje učitavanja za asinkrone operacije:

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

Zahtjevi:

- Prikažite vrtuljke ili kosturne zaslone tijekom učitavanja podataka
- Onemogućite gumbe tijekom slanja obrasca
- Prikažite pokazatelje napretka za dugotrajne operacije
- Nikada ne prikazujte prazan zaslon tijekom učitavanja

### Poruke o pogreškama

Ponudite jasne poruke o pogreškama na koje se može djelovati:

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

Smjernice za poruke o pogreškama:

- Objasnite što se dogodilo jednostavnim jezikom
- Predložite konkretnu radnju kojom korisnik može riješiti problem
- Omogućite način za ponovni pokušaj neuspjele operacije
- Zabilježite detaljne podatke o pogrešci za otklanjanje problema (koji se ne prikazuju korisnicima)
- Navedite šifre pogrešaka za potrebe podrške kada je to primjenjivo

## Sigurnost

### Secret Store API

Koristite Secret Store API platforme Stripe za pohranu svih osjetljivih podataka:

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

**Nikada** ne pohranjujte osjetljive podatke u:

- Lokalnu pohranu ili pohranu sesije
- Kolačiće
- Parametre URL-a
- Vrijednosti tvrdo kodirane u izvornom kodu
- Konfiguracijske datoteke u čistom tekstu

### Kriptografija

- **Bez vlastite kriptografije**: ne implementirajte vlastite algoritme za šifriranje
- Koristite ugrađene sigurnosne primitive platforme Stripe (Secret Store, tajne za potpisivanje)
- Koristite HTTPS za sve vanjske pozive API-ja
- Provjerite valjanost svih potpisa webhookova prije obrade

### Rukovanje podacima

- Tražite samo dopuštenja koja vaša aplikacija stvarno treba
- Ne pohranjujte Stripe podatke izvan onoga što je nužno za funkcionalnost
- Uvedite pravila zadržavanja podataka usklađena s vašim pravilima privatnosti
- Osigurajte mehanizam kojim korisnici mogu zatražiti brisanje podataka

## Pravna usklađenost

### Pravila privatnosti

Vaša aplikacija mora imati javno dostupna pravila privatnosti koja pokrivaju:

- Koje podatke vaša aplikacija prikuplja iz platforme Stripe
- Kako se podaci pohranjuju, obrađuju i dijele
- Pravila zadržavanja i brisanja podataka
- Prava korisnika u vezi s njihovim podacima
- Kontaktne podatke za upite o privatnosti
- Usklađenost s primjenjivim propisima (GDPR, CCPA itd.)

### Uvjeti pružanja usluge

- Osigurajte jasne uvjete pružanja usluge za svoju aplikaciju
- Ne uključujte uvjete koji su u sukobu s uvjetima pružanja usluge platforme Stripe
- Jasno navedite sva ograničenja korištenja

### Regulatorna usklađenost

- Uskladite se sa svim primjenjivim propisima o zaštiti podataka
- Sklopite odgovarajuće ugovore o obradi podataka
- Podržite zahtjeve za prenosivost i brisanje podataka
- Vodite revizijske zapise o pristupu podacima i njihovoj obradi

## Vremenski okvir procesa pregleda

| Faza | Trajanje |
| --- | --- |
| Početno slanje | 5-10 radnih dana |
| Pregled izmjena | 3-7 radnih dana |
| Konačno odobrenje | 1-2 radna dana |
| Objava | Odmah nakon odobrenja |

Tip

Riješite sve povratne informacije iz pregleda u jednoj izmjeni kako biste izbjegli višestruke krugove pregleda. Tim platforme Stripe daje konkretne povratne informacije na koje se može djelovati za svaki pronađeni problem.

## Česti razlozi odbijanja

1. **Nedostatak rukovanja pogreškama**, aplikacija se ruši pri mrežnim pogreškama ili neočekivanim podacima
2. **Nedostatna stanja učitavanja**, prazni zasloni tijekom dohvaćanja podataka
3. **Nejasne cijene**, cijene nisu u potpunosti objavljene u oglasu
4. **Prekomjerna dopuštenja**, traženje dopuštenja koja aplikaciji nisu potrebna
5. **Neispravan sandbox način rada**, aplikacija ne radi u testnom načinu rada
6. **Sigurnosni problemi**, pohrana tajni izvan Secret Store API-ja
7. **Nedostatak pravila privatnosti**, nema dostupnog URL-a s pravilima privatnosti
8. **Nepotpuna funkcionalnost**, značajke „uskoro“ ili rezervirani sadržaj
