App جائزہ معیار کی ضروریات

Stripe marketplace پر جمع کی گئی ہر app کو معیاری ضروریات کے ایک جامع سیٹ کے خلاف جانچتا ہے۔ ترقی سے پہلے ان معیارات کو سمجھنا وقت بچاتا ہے اور جائزہ کے چکروں کی تعداد کم کرتا ہے۔

جائزہ

Stripe App جائزہ آپ کی app کو چھ اہم شعبوں میں جانچتا ہے:

  1. شفاف قیمت, اخراجات کی واضح بات چیت
  2. App فعالیت, قابل اعتماد اور مکمل ہونا
  3. Developer معیارات, کوڈ کا معیار اور API کا استعمال
  4. UX معیار, صارف انٹرفیس اور تجربہ کے معیارات
  5. سیکیورٹی, ڈیٹا تحفظ اور محفوظ طریقے
  6. قانونی تعمیل, پرائیویسی اور ریگولیٹری ضروریات

شفاف قیمت

آپ کی app کو صارفین کو تمام اخراجات واضح طور پر بتانے چاہئیں:

  • قیمت کا اظہار: تمام قیمتیں marketplace listing میں پیشگی بتائی جانی چاہئیں
  • کوئی پوشیدہ فیس نہیں: صارفین کو انسٹالیشن کے بعد غیر متوقع اخراجات نہیں آنے چاہئیں
  • آزمائشی شرائط: اگر آزمائش پیش کریں، تو مدت اور اس کے بعد کیا ہوتا ہے واضح بتائیں
  • اپ گریڈ فلو: کوئی بھی upsell یا اپ گریڈ prompts غیر مداخلت پسندانہ اور واضح طور پر اختیاری ہونی چاہئیں
  • کرنسی: جب ممکن ہو تو صارف کی مقامی کرنسی میں قیمتیں دکھائیں

Caution

وہ apps جو قیمت چھپاتی ہیں یا واضح رضامندی کے بغیر صارفین سے چارج کرتی ہیں انہیں فوری طور پر مسترد کر دیا جائے گا۔

تاریخ اور وقت کی فارمیٹنگ

آپ کی app میں دکھائی گئی تمام تاریخیں اور اوقات Stripe Dashboard کے طریقوں کے مطابق ہونی چاہئیں:

  • جب دستیاب ہو تو تاریخ فارمیٹنگ کے لیے صارف کا locale استعمال کریں
  • صارف کے مقامی time zone میں وقت دکھائیں
  • حالیہ events کے لیے relative timestamps استعمال کریں (جیسے “2 گھنٹے پہلے”)
  • پرانے events کے لیے مکمل تاریخ اور وقت کے ساتھ absolute timestamps استعمال کریں
  • کسی بھی API-facing تاریخ fields کے لیے ISO 8601 کی پیروی کریں
// اچھا: Stripe کے تاریخ فارمیٹنگ utilities استعمال کریں
import { formatDate, formatRelativeTime } from '@stripe/ui-extension-sdk/utils';
const formattedDate = formatDate(timestamp); // Locale-aware
const relativeTime = formatRelativeTime(timestamp); // "2 گھنٹے پہلے"

App کی ترتیبات

اگر آپ کی app کو کنفیگریشن کی ضرورت ہے:

  • app کے viewport سے قابل رسائی ایک مخصوص Settings view فراہم کریں
  • جہاں ممکن ہو معقول پہلے سے بھری گئی defaults استعمال کریں
  • واضح error messages کے ساتھ تمام صارف inputs کی تصدیق کریں
  • صارفین کو app دوبارہ انسٹال کیے بغیر ترتیبات اپ ڈیٹ کرنے کی اجازت دیں
  • Stripe Secret Store API استعمال کرتے ہوئے sessions میں ترتیبات محفوظ رکھیں

Sandbox سپورٹ

آپ کی app کو Stripe کے sandbox (test) موڈ میں صحیح طریقے سے کام کرنا چاہیے:

  • Test موڈ compatibility: تمام خصوصیات test موڈ میں کام کرنی چاہئیں
  • Test ڈیٹا: app کی فعالیت کا مظاہرہ کرنے والا حقیقت پسندانہ test ڈیٹا استعمال کریں
  • sandbox میں کوئی live ڈیٹا نہیں: test موڈ میں کبھی production ڈیٹا ظاہر نہ کریں
  • شائستہ ہینڈلنگ: اگر sandbox میں کوئی خصوصیت دستیاب نہیں، تو واضح پیغام دکھائیں کیوں
  • اپنے manifest میں sandbox_install_compatible: true سیٹ کریں
{
"sandbox_install_compatible": true
}

App فعالیت

قابل اعتماد

  • app عام استعمال کے دوران crash یا منجمد نہیں ہونی چاہیے
  • تمام مشتہر خصوصیات بیان کردہ طریقے سے کام کرنی چاہئیں
  • نیٹ ورک errors کو retry کے اختیارات کے ساتھ شائستگی سے سنبھالا جانا چاہیے
  • app پس منظر کی کارروائیوں کے دوران جوابی رہنی چاہیے

مکمل ہونا

  • کوئی placeholder مواد، “جلد آ رہا ہے” خصوصیات، یا ٹوٹے ہوئے links نہیں
  • تمام UI عناصر فعال ہونے چاہئیں, کوئی dead بٹن یا غیر فعال controls نہیں
  • help متن اور دستاویزی links درست صفحات پر جانے چاہئیں
  • ان انسٹال کرنے سے تمام app ڈیٹا اور webhooks صاف ہونے چاہئیں

کارکردگی

  • UI کو معیاری کنکشن پر 3 سیکنڈ کے اندر render ہونا چاہیے
  • پس منظر sync کارروائیاں UI کو block نہیں کرنی چاہئیں
  • بڑے ڈیٹا سیٹس کو pagination یا lazy loading استعمال کرنا چاہیے
  • rate limiting سے بچنے کے لیے API calls کم سے کم کریں

Developer معیارات

API کا استعمال

  • Stripe API کا تازہ ترین مستحکم ورژن استعمال کریں
  • pagination، error handling اور idempotency کے لیے Stripe API best practices پر عمل کریں
  • rate limits سے تجاوز نہ کریں, retries کے لیے exponential backoff نافذ کریں
  • polling کی بجائے event-driven updates کے لیے webhooks استعمال کریں

کوڈ کا معیار

  • production builds میں کوئی console errors یا warnings نہیں
  • جمع کرانے سے پہلے تمام debug logging ہٹا دیں
  • تمام edge cases (خالی states، غائب ڈیٹا، نیٹ ورک failures) سنبھالیں
  • یکساں UI کے لیے Stripe کے component library patterns پر عمل کریں

ورژن بندی

  • semantic versioning (MAJOR.MINOR.PATCH) استعمال کریں
  • ورژن اپ ڈیٹس میں breaking تبدیلیوں کو دستاویزی کریں
  • جہاں ممکن ہو backward compatibility برقرار رکھیں

UX معیار

اشتہار بازی

  • کوئی اشتہار نہیں: آپ کی app کسی بھی قسم کے اشتہارات نہیں دکھا سکتی
  • کوئی cross-promotion نہیں: app UI میں دوسری مصنوعات یا خدمات کو فروغ نہ دیں
  • برانڈ مواد: صرف اپنی برانڈ شناخت دکھائیں، تھرڈ پارٹی برانڈز نہیں (Brevo جیسے انٹیگریشن پارٹنرز کے علاوہ)

زبان اور مواد

  • یکساں زبان: پوری app میں یکساں اصطلاحات استعمال کریں
  • پیشہ ورانہ لہجہ: Stripe Dashboard کے پیشہ ورانہ، جامع مواصلاتی انداز سے مطابقت
  • کوئی جرگن نہیں: ایسی تکنیکی اصطلاحات سے گریز کریں جو merchants کو سمجھ نہ آئیں
  • ہجے کی جانچ: یقینی بنائیں کہ تمام متن ہجے اور گرامر کی غلطیوں سے پاک ہے
  • صرف انگریزی: marketplace apps کے لیے تمام صارف نظر متن انگریزی میں ہونا چاہیے

تصدیقی Dialogs

تباہ کن یا اہم اعمال کے لیے صارف کی تصدیق درکار ہے:

// اچھا: تباہ کن اعمال سے پہلے تصدیق کریں
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();
}
};

تصدیق کی ضرورت والے اعمال:

  • انٹیگریشنز سے منقطع کرنا
  • synced ڈیٹا حذف کرنا
  • ڈیٹا فلو پر اثر انداز ترتیبات تبدیل کرنا
  • کنفیگریشن کو defaults پر reset کرنا

Loading States

async کارروائیوں کے لیے ہمیشہ loading اشارے دکھائیں:

// اچھا: ڈیٹا fetch کے دوران loading state دکھائیں
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} />;
};

ضروریات:

  • ڈیٹا loading کے دوران spinners یا skeleton screens دکھائیں
  • form submission کے دوران بٹن disable کریں
  • طویل چلنے والی کارروائیوں کے لیے progress اشارے دکھائیں
  • loading کے دوران کبھی خالی اسکرین نہ دکھائیں

Error Messages

واضح، قابل عمل error messages فراہم کریں:

// برا: عام error
"Something went wrong"
// اچھا: مخصوص اور قابل عمل
"Unable to sync customer data to Brevo. Please verify your Brevo API key
in Settings and try again."

Error message ہدایات:

  • سادہ زبان میں بتائیں کیا ہوا
  • ایک مخصوص عمل تجویز کریں جو صارف مسئلہ حل کرنے کے لیے کر سکتا ہے
  • ناکام آپریشن دوبارہ کوشش کرنے کا طریقہ فراہم کریں
  • debugging کے لیے تفصیلی error معلومات log کریں (صارفین کو نہ دکھائیں)
  • جب قابل اطلاق ہو تو support reference کے لیے error codes شامل کریں

سیکیورٹی

Secret Store API

تمام حساس ڈیٹا storage کے لیے Stripe کی Secret Store API استعمال کریں:

import { createHttpClient, STRIPE_API_KEY } from '@stripe/ui-extension-sdk/http_client';
// اچھا: Secret Store API استعمال کرتے ہوئے secrets محفوظ کریں
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' },
});
};
// اچھا: Secret Store سے secrets حاصل کریں
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;
};

حساس ڈیٹا کبھی بھی ان جگہوں پر محفوظ نہ کریں:

  • Local storage یا session storage
  • Cookies
  • URL parameters
  • Source code میں hardcoded values
  • Plain text کنفیگریشن files

Cryptography

  • کوئی کسٹم cryptography نہیں: اپنے encryption algorithms خود نافذ نہ کریں
  • Stripe کے built-in security primitives استعمال کریں (Secret Store، signing secrets)
  • تمام بیرونی API calls کے لیے HTTPS استعمال کریں
  • پروسیسنگ سے پہلے تمام webhook signatures کی تصدیق کریں

ڈیٹا ہینڈلنگ

  • صرف وہ اجازتیں مانگیں جو آپ کی app کو واقعی درکار ہیں
  • فعالیت کے لیے ضروری سے زیادہ Stripe ڈیٹا محفوظ نہ کریں
  • اپنی privacy policy سے ہم آہنگ ڈیٹا retention policies نافذ کریں
  • صارفین کو ڈیٹا حذف کرنے کی درخواست کرنے کا طریقہ کار فراہم کریں

قانونی تعمیل

پرائیویسی پالیسی

آپ کی app میں عوامی طور پر قابل رسائی privacy policy ہونی چاہیے جو احاطہ کرے:

  • app Stripe سے کون سا ڈیٹا اکٹھا کرتی ہے
  • ڈیٹا کیسے محفوظ، پروسیس اور شیئر کیا جاتا ہے
  • ڈیٹا retention اور deletion policies
  • اپنے ڈیٹا کے بارے میں صارف کے حقوق
  • privacy سوالات کے لیے رابطہ معلومات
  • قابل اطلاق ضوابط کی تعمیل (GDPR، CCPA وغیرہ)

سروس کی شرائط

  • اپنی app کے لیے واضح سروس کی شرائط فراہم کریں
  • ایسی شرائط شامل نہ کریں جو Stripe کی سروس کی شرائط سے متصادم ہوں
  • کوئی بھی استعمال کی حدود یا پابندیاں واضح طور پر بتائیں

ریگولیٹری تعمیل

  • تمام قابل اطلاق ڈیٹا تحفظ ضوابط کی تعمیل کریں
  • مناسب ڈیٹا پروسیسنگ معاہدے نافذ کریں
  • ڈیٹا portability اور حذف کرنے کی درخواستوں کی حمایت کریں
  • ڈیٹا تک رسائی اور پروسیسنگ کے لیے audit logs برقرار رکھیں

جائزہ عمل کا ٹائم لائن

مرحلہمدت
ابتدائی جمع کرانا5-10 کاروباری دن
نظرثانی جائزہ3-7 کاروباری دن
حتمی منظوری1-2 کاروباری دن
اشاعتمنظوری کے فوری بعد

Tip

متعدد جائزہ چکروں سے بچنے کے لیے ایک نظرثانی میں تمام جائزہ تاثرات پر عمل کریں۔ Stripe ٹیم ہر پائے جانے والے مسئلے کے لیے مخصوص، قابل عمل تاثر فراہم کرتی ہے۔

عام مسترد ہونے کی وجوہات

  1. غائب error handling, نیٹ ورک errors یا غیر متوقع ڈیٹا پر app crash
  2. ناکافی loading states, ڈیٹا fetching کے دوران خالی اسکرینز
  3. غیر واضح قیمت, listing میں قیمت مکمل طور پر ظاہر نہیں
  4. ضرورت سے زیادہ اجازتیں, app کی ضرورت نہ ہونے والی اجازتیں مانگنا
  5. ٹوٹا ہوا sandbox موڈ, app test موڈ میں کام نہیں کرتی
  6. سیکیورٹی مسائل, Secret Store API سے باہر secrets محفوظ کرنا
  7. غائب privacy policy, قابل رسائی privacy policy URL نہیں
  8. نامکمل فعالیت, “جلد آ رہا ہے” خصوصیات یا placeholder مواد

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔

Brevo کے ساتھ مفت شروع کریں