Заявете ранен достъп

Посочете името си и имейл адрес или телефонен номер. Ще Ви изпратим информация за достъп до Tajo.

Изисквания за качество при преглед на приложение

Stripe преглежда всяко приложение, подадено в marketplace, спрямо изчерпателен набор от изисквания за качество. Ако разбирате тези стандарти още преди разработката, ще спестите време и ще намалите броя на итерациите при прегледа.

Общ преглед

Прегледът на Stripe App оценява приложението Ви в шест ключови области:

  1. Прозрачно ценообразуване, ясна комуникация на разходите
  2. Функционалност на приложението, надеждност и пълнота
  3. Стандарти за разработчици, качество на кода и използване на API
  4. Качество на UX, стандарти за потребителския интерфейс и преживяването
  5. Сигурност, защита на данните и сигурни практики
  6. Правно съответствие, изисквания за поверителност и регулаторни изисквания

Прозрачно ценообразуване

Приложението Ви трябва да съобщава ясно всички разходи на потребителите:

  • Оповестяване на цените: всички цени трябва да са посочени предварително в обявата в marketplace
  • Без скрити такси: потребителите не трябва да срещат неочаквани такси след инсталирането
  • Условия на пробния период: ако предлагате пробен период, посочете ясно продължителността му и какво се случва след края му
  • Процеси на надграждане: всички подкани за допълнителна продажба или надграждане трябва да са ненатрапчиви и явно незадължителни
  • Валута: показвайте цените в местната валута на потребителя, когато това е възможно

Caution

Приложения, които прикриват цените или таксуват потребителите без ясно съгласие, се отхвърлят незабавно.

Форматиране на дата и час

Всички дати и часове, показвани в приложението Ви, трябва да следват конвенциите на Stripe Dashboard:

  • Използвайте локала на потребителя за форматиране на датите, когато е наличен
  • Показвайте часовете в местната часова зона на потребителя
  • Използвайте относителни времеви означения за скорошни събития (например „преди 2 часа”)
  • Използвайте абсолютни времеви означения с пълна дата и час за по-стари събития
  • Следвайте ISO 8601 за всички полета за дати, които се изпращат към API
// 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"

Настройки на приложението

Ако приложението Ви изисква конфигуриране:

  • Осигурете отделен изглед за настройки, достъпен от viewport-а на приложението
  • Попълвайте предварително разумни стойности по подразбиране, където това е възможно
  • Валидирайте всички въведени от потребителя данни с ясни съобщения за грешка
  • Позволявайте на потребителите да променят настройките, без да преинсталират приложението
  • Запазвайте настройките между сесиите чрез Stripe Secret Store API

Поддръжка на sandbox

Приложението Ви трябва да работи правилно в режима sandbox (тестов режим) на Stripe:

  • Съвместимост с тестовия режим: всички функции трябва да работят в тестов режим
  • Тестови данни: използвайте реалистични тестови данни, които демонстрират функционалността на приложението
  • Без реални данни в sandbox: никога не разкривайте продукционни данни в тестов режим
  • Коректно поведение: ако дадена функция не е достъпна в sandbox, покажете ясно съобщение с обяснение защо
  • Задайте sandbox_install_compatible: true във Вашия манифест
{
"sandbox_install_compatible": true
}

Функционалност на приложението

Надеждност

  • Приложението не трябва да се срива или блокира при нормална употреба
  • Всички рекламирани функции трябва да работят както е описано
  • Мрежовите грешки трябва да се обработват коректно, с възможност за повторен опит
  • Приложението трябва да остава отзивчиво по време на фонови операции

Пълнота

  • Без заместващо съдържание, функции „очаквайте скоро” или счупени връзки
  • Всички елементи на интерфейса трябва да са функционални, без неработещи бутони или неактивни контроли
  • Помощните текстове и връзките към документацията трябва да водят до валидни страници
  • Деинсталирането трябва да премахне изцяло всички данни на приложението и webhooks

Производителност

  • Интерфейсът трябва да се визуализира до 3 секунди при стандартна връзка
  • Фоновите операции по синхронизация не трябва да блокират интерфейса
  • Големите набори от данни трябва да използват странициране или отложено зареждане
  • Свеждайте API извикванията до минимум, за да избегнете ограничаване на честотата

Стандарти за разработчици

Използване на API

  • Използвайте най-новата стабилна версия на Stripe API
  • Следвайте добрите практики на Stripe API за странициране, обработка на грешки и идемпотентност
  • Не превишавайте лимитите на заявките, реализирайте експоненциално изчакване при повторни опити
  • Използвайте webhooks за обновявания, задвижвани от събития, вместо периодични проверки

Качество на кода

  • Без грешки или предупреждения в конзолата при продукционните компилации
  • Премахнете цялото дебъг логване преди подаването
  • Обработвайте всички гранични случаи (празни състояния, липсващи данни, мрежови откази)
  • Следвайте моделите от библиотеката с компоненти на Stripe за последователен интерфейс

Версиониране

  • Използвайте семантично версиониране (MAJOR.MINOR.PATCH)
  • Документирайте несъвместимите промени в актуализациите на версиите
  • Поддържайте обратна съвместимост, където това е възможно

Качество на UX

Реклама

  • Без реклами: приложението Ви не трябва да показва реклами от какъвто и да е вид
  • Без кръстосана промоция: не рекламирайте други продукти или услуги в интерфейса на приложението
  • Брандирано съдържание: показвайте само собствената си бранд идентичност, а не марки на трети страни (с изключение на партньори по интеграцията като Brevo)

Език и съдържание

  • Последователен език: използвайте последователна терминология в цялото приложение
  • Професионален тон: придържайте се към професионалния и стегнат стил на комуникация на Stripe Dashboard
  • Без жаргон: избягвайте технически жаргон, който търговците може да не разбират
  • Проверка на правописа: уверете се, че целият текст е без правописни и граматически грешки
  • Само на английски: целият текст към потребителя в приложенията за marketplace трябва да е на английски

Диалози за потвърждение

Изисквайте потвърждение от потребителя при деструктивни или значими действия:

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

Действия, които изискват потвърждение:

  • Прекъсване на връзката с интеграции
  • Изтриване на синхронизирани данни
  • Промяна на настройки, които влияят върху потока от данни
  • Връщане на конфигурацията към стойностите по подразбиране

Състояния при зареждане

Винаги показвайте индикатори за зареждане при асинхронни операции:

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

Изисквания:

  • Показвайте spinner или skeleton екрани по време на зареждането на данни
  • Деактивирайте бутоните по време на изпращане на формуляр
  • Показвайте индикатори за напредък при продължителни операции
  • Никога не показвайте празен екран по време на зареждане

Съобщения за грешки

Предоставяйте ясни съобщения за грешки, по които потребителят може да действа:

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

Насоки за съобщенията за грешки:

  • Обяснете какво се е случило на разбираем език
  • Предложете конкретно действие, с което потребителят може да разреши проблема
  • Осигурете начин за повторен опит на неуспешната операция
  • Записвайте подробна информация за грешката за отстраняване на проблеми (без да я показвате на потребителите)
  • Включвайте кодове на грешките за справка от поддръжката, когато това е приложимо

Сигурност

Secret Store API

Използвайте Secret Store API на Stripe за съхранението на всички чувствителни данни:

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

Никога не съхранявайте чувствителни данни в:

  • Локално или сесийно хранилище
  • Бисквитки
  • URL параметри
  • Твърдо зададени стойности в изходния код
  • Конфигурационни файлове в чист текст

Криптография

  • Без собствена криптография: не реализирайте собствени алгоритми за шифроване
  • Използвайте вградените примитиви за сигурност на Stripe (Secret Store, подписващи секрети)
  • Използвайте HTTPS за всички външни API извиквания
  • Проверявайте всички подписи на webhooks преди обработка

Работа с данните

  • Заявявайте само разрешенията, от които приложението Ви действително се нуждае
  • Не съхранявайте данни от Stripe извън необходимото за функционалността
  • Въведете политики за съхранение на данните, съгласувани с политиката Ви за поверителност
  • Осигурете механизъм, чрез който потребителите да заявят изтриване на данните си

Правно съответствие

Политика за поверителност

Приложението Ви трябва да има публично достъпна политика за поверителност, която обхваща:

  • Какви данни събира приложението Ви от Stripe
  • Как се съхраняват, обработват и споделят данните
  • Политиките за съхранение и изтриване на данните
  • Правата на потребителите по отношение на техните данни
  • Информация за контакт при запитвания относно поверителността
  • Съответствието с приложимите регулации (GDPR, CCPA и други)

Общи условия

  • Осигурете ясни общи условия за приложението си
  • Не включвайте условия, които противоречат на Общите условия на Stripe
  • Посочете ясно всички ограничения при използването

Регулаторно съответствие

  • Спазвайте всички приложими регулации за защита на данните
  • Сключете подходящи споразумения за обработка на данни
  • Поддържайте заявките за преносимост и изтриване на данни
  • Поддържайте одитни логове за достъпа до данните и тяхната обработка

Срокове на процеса по преглед

ЕтапПродължителност
Първоначално подаване5-10 работни дни
Преглед на корекциите3-7 работни дни
Финално одобрение1-2 работни дни
ПубликуванеВеднага след одобрението

Tip

Отстранете всички забележки от прегледа в една корекция, за да избегнете няколко цикъла на преглед. Екипът на Stripe предоставя конкретна и приложима обратна връзка за всеки открит проблем.

Чести причини за отхвърляне

  1. Липсваща обработка на грешки, приложението се срива при мрежови грешки или неочаквани данни
  2. Недостатъчни състояния при зареждане, празни екрани при извличането на данни
  3. Неясно ценообразуване, цените не са напълно оповестени в обявата
  4. Прекомерни разрешения, заявяване на разрешения, които приложението не използва
  5. Неработещ режим sandbox, приложението не работи в тестов режим
  6. Проблеми със сигурността, съхраняване на секрети извън Secret Store API
  7. Липсваща политика за поверителност, няма достъпен URL на политиката за поверителност
  8. Непълна функционалност, функции „очаквайте скоро” или заместващо съдържание

Заявете ранен достъп

Посочете името си и имейл адрес или телефонен номер. Ще Ви изпратим информация за достъп до Tajo.

автоматично разпознаване
AI асистент

Здравейте! Попитайте ме за документацията.