Zatražite rani pristup

Unesite ime i imejl adresu ili broj telefona. Poslaćemo vam detalje o pristupu platformi Tajo.

Zahtevi kvaliteta pri pregledu aplikacije

Stripe pregleda svaku aplikaciju prijavljenu za marketplace prema sveobuhvatnom skupu zahteva kvaliteta. Ako ove standarde razumete pre razvoja, uštedećete vreme i smanjiti broj krugova pregleda.

Pregled

Pregled Stripe App ocenjuje vašu aplikaciju kroz šest ključnih oblasti:

  1. Transparentne cene, jasno saopštavanje troškova
  2. Funkcionalnost aplikacije, pouzdanost i potpunost
  3. Standardi za programere, kvalitet koda i upotreba API-ja
  4. Kvalitet UX-a, standardi korisničkog interfejsa i iskustva
  5. Bezbednost, zaštita podataka i bezbedne prakse
  6. Pravna usklađenost, zahtevi privatnosti i regulative

Transparentne cene

Vaša aplikacija mora jasno da saopšti sve troškove korisnicima:

  • Objavljivanje cena: sve cene moraju biti navedene unapred u marketplace opisu
  • Bez skrivenih naknada: korisnici ne smeju da naiđu na neočekivane troškove nakon instalacije
  • Uslovi probnog perioda: ako nudite probni period, jasno navedite koliko traje i šta se dešava kada se završi
  • Tokovi nadogradnje: svaki upit za dodatnu prodaju ili nadogradnju mora biti nenametljiv i jasno opcion
  • Valuta: prikazujte cene u lokalnoj valuti korisnika kad god je to moguće

Caution

Aplikacije koje prikrivaju cene ili naplaćuju korisnicima bez jasnog pristanka biće odmah odbijene.

Formatiranje datuma i vremena

Svi datumi i vremena prikazani u vašoj aplikaciji moraju da prate konvencije Stripe Dashboard-a:

  • Koristite lokalizaciju korisnika za formatiranje datuma kada je dostupna
  • Prikazujte vremena u lokalnoj vremenskoj zoni korisnika
  • Koristite relativne vremenske oznake za skorašnje događaje (npr. „pre 2 sata”)
  • Koristite apsolutne vremenske oznake sa punim datumom i vremenom za starije događaje
  • Pratite ISO 8601 za sva polja sa datumom koja idu ka API-ju
// 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"

Podešavanja aplikacije

Ako vaša aplikacija zahteva konfigurisanje:

  • Obezbedite poseban pogled sa podešavanjima dostupan iz viewport-a aplikacije
  • Popunite razumne podrazumevane vrednosti kad god je to moguće
  • Proveravajte sve korisničke unose uz jasne poruke o greškama
  • Omogućite korisnicima da menjaju podešavanja bez ponovne instalacije aplikacije
  • Trajno čuvajte podešavanja između sesija pomoću Stripe Secret Store API-ja

Podrška za sandbox

Vaša aplikacija mora ispravno da radi u Stripe sandbox (test) režimu:

  • Kompatibilnost sa test režimom: sve funkcije moraju da rade u test režimu
  • Test podaci: koristite realistične test podatke koji pokazuju funkcionalnost aplikacije
  • Bez live podataka u sandbox-u: nikada ne izlažite produkcione podatke u test režimu
  • Elegantno rešavanje: ako neka funkcija nije dostupna u sandbox-u, prikažite jasnu poruku sa objašnjenjem
  • Postavite sandbox_install_compatible: true u svom manifestu
{
"sandbox_install_compatible": true
}

Funkcionalnost aplikacije

Pouzdanost

  • Aplikacija ne sme da se ruši ni da se zamrzava tokom uobičajene upotrebe
  • Sve oglašene funkcije moraju da rade kako je opisano
  • Mrežne greške moraju da se obrađuju elegantno, uz mogućnost ponovnog pokušaja
  • Aplikacija mora da ostane responzivna tokom operacija u pozadini

Potpunost

  • Bez sadržaja koji je samo popuna, funkcija sa oznakom „uskoro” i pokvarenih veza
  • Svi elementi interfejsa moraju biti funkcionalni, bez mrtvih dugmadi i neaktivnih kontrola
  • Tekstovi pomoći i veze ka dokumentaciji moraju da vode na važeće stranice
  • Deinstalacija mora u potpunosti da ukloni sve podatke aplikacije i webhook-ove

Performanse

  • Interfejs mora da se prikaže u roku od 3 sekunde na standardnoj vezi
  • Sinhronizacija u pozadini ne sme da blokira interfejs
  • Veliki skupovi podataka moraju da koriste paginaciju ili odloženo učitavanje
  • Svedite API pozive na najmanju meru da biste izbegli ograničenje broja zahteva

Standardi za programere

Upotreba API-ja

  • Koristite najnoviju stabilnu verziju Stripe API-ja
  • Pratite najbolje prakse Stripe API-ja za paginaciju, obradu grešaka i idempotentnost
  • Ne prekoračujte ograničenja broja zahteva, primenite eksponencijalno odlaganje za ponovne pokušaje
  • Koristite webhook-ove za ažuriranja vođena događajima umesto stalnog ispitivanja

Kvalitet koda

  • Bez grešaka i upozorenja u konzoli u produkcionim buildovima
  • Uklonite sve debug zapise pre prijave
  • Obradite sve granične slučajeve (prazna stanja, nedostajući podaci, mrežni prekidi)
  • Pratite obrasce Stripe biblioteke komponenti radi doslednog interfejsa

Verzionisanje

  • Koristite semantičko verzionisanje (MAJOR.MINOR.PATCH)
  • Dokumentujte promene koje narušavaju kompatibilnost u ažuriranjima verzija
  • Održavajte kompatibilnost unazad kad god je moguće

Kvalitet UX-a

Oglašavanje

  • Bez reklama: vaša aplikacija ne sme da prikazuje reklame bilo koje vrste
  • Bez unakrsne promocije: ne promovišite druge proizvode ili usluge unutar interfejsa aplikacije
  • Brendirani sadržaj: prikazujte samo sopstveni brend, ne i brendove trećih strana (osim integracionih partnera kao što je Brevo)

Jezik i sadržaj

  • Dosledan jezik: koristite doslednu terminologiju u celoj aplikaciji
  • Profesionalan ton: uskladite se sa profesionalnim i sažetim stilom komunikacije Stripe Dashboard-a
  • Bez žargona: izbegavajte tehnički žargon koji trgovci možda neće razumeti
  • Provera pravopisa: postarajte se da sav tekst bude bez pravopisnih i gramatičkih grešaka
  • Samo engleski: sav tekst vidljiv korisnicima mora biti na engleskom za marketplace aplikacije

Dijalozi za potvrdu

Tražite potvrdu korisnika za destruktivne ili značajne akcije:

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

Akcije koje zahtevaju potvrdu:

  • Prekidanje veze sa integracijama
  • Brisanje sinhronizovanih podataka
  • Promena podešavanja koja utiču na tok podataka
  • Vraćanje konfiguracije na podrazumevane vrednosti

Stanja učitavanja

Uvek prikazujte indikatore učitavanja za asinhrone operacije:

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

Zahtevi:

  • Prikazujte spinere ili skeletne ekrane tokom učitavanja podataka
  • Onemogućite dugmad tokom slanja formulara
  • Prikazujte indikatore napretka za dugotrajne operacije
  • Nikada ne prikazujte prazan ekran tokom učitavanja

Poruke o greškama

Obezbedite jasne poruke o greškama koje vode ka rešenju:

// 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 poruke o greškama:

  • Objasnite šta se dogodilo jednostavnim jezikom
  • Predložite konkretnu akciju kojom korisnik može da reši problem
  • Obezbedite način da se neuspela operacija ponovi
  • Beležite detaljne informacije o grešci radi otklanjanja problema (koje se ne prikazuju korisnicima)
  • Navedite kodove grešaka radi lakše podrške kada je to primenljivo

Bezbednost

Secret Store API

Koristite Stripe Secret Store API za čuvanje svih osetljivih podataka:

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

Osetljive podatke nikada ne čuvajte u:

  • Local storage ili session storage
  • Kolačićima
  • URL parametrima
  • Vrednostima upisanim direktno u izvorni kod
  • Konfiguracionim fajlovima u čistom tekstu

Kriptografija

  • Bez sopstvene kriptografije: ne implementirajte sopstvene algoritme za šifrovanje
  • Koristite ugrađene bezbednosne mehanizme platforme Stripe (Secret Store, tajne za potpisivanje)
  • Koristite HTTPS za sve pozive spoljnih API-ja
  • Proverite sve webhook potpise pre obrade

Rukovanje podacima

  • Tražite samo dozvole koje su vašoj aplikaciji zaista potrebne
  • Ne čuvajte Stripe podatke izvan onoga što je neophodno za funkcionisanje
  • Primenite politike čuvanja podataka usklađene sa svojom politikom privatnosti
  • Obezbedite mehanizam preko kojeg korisnici mogu da zatraže brisanje podataka

Pravna usklađenost

Politika privatnosti

Vaša aplikacija mora da ima javno dostupnu politiku privatnosti koja obuhvata:

  • Koje podatke vaša aplikacija prikuplja iz platforme Stripe
  • Kako se podaci čuvaju, obrađuju i dele
  • Politike čuvanja i brisanja podataka
  • Prava korisnika u vezi sa njihovim podacima
  • Kontakt podatke za upite o privatnosti
  • Usklađenost sa važećim propisima (GDPR, CCPA i drugi)

Uslovi korišćenja

  • Obezbedite jasne uslove korišćenja za svoju aplikaciju
  • Ne uključujte odredbe koje su u sukobu sa Stripe uslovima korišćenja
  • Jasno navedite sva ograničenja upotrebe

Regulatorna usklađenost

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

Vremenski okvir procesa pregleda

FazaTrajanje
Prva prijava5-10 radnih dana
Pregled izmena3-7 radnih dana
Konačno odobrenje1-2 radna dana
ObjavljivanjeOdmah nakon odobrenja

Tip

Odgovorite na sve primedbe iz pregleda u jednoj izmeni kako biste izbegli više krugova pregleda. Stripe tim daje konkretne i primenljive povratne informacije za svaki uočeni problem.

Uobičajeni razlozi za odbijanje

  1. Nedostaje obrada grešaka, aplikacija se ruši pri mrežnim greškama ili neočekivanim podacima
  2. Nedovoljna stanja učitavanja, prazni ekrani tokom preuzimanja podataka
  3. Nejasne cene, cene nisu u potpunosti objavljene u opisu
  4. Prekomerne dozvole, traže se dozvole koje aplikaciji nisu potrebne
  5. Neispravan sandbox režim, aplikacija ne radi u test režimu
  6. Bezbednosni problemi, čuvanje tajni izvan Secret Store API-ja
  7. Nedostaje politika privatnosti, nema dostupnog URL-a politike privatnosti
  8. Nepotpuna funkcionalnost, funkcije sa oznakom „uskoro” ili sadržaj koji je samo popuna

Zatražite rani pristup

Unesite ime i imejl adresu ili broj telefona. Poslaćemo vam detalje o pristupu platformi Tajo.

automatsko prepoznavanje
AI asistent

Zdravo! Pitajte me o dokumentaciji.