Агуулгыг алгасах

Шаардлага — hosting, аюулгүй байдал, UX, контент, review

1. Hosting

  • HTTPS (TLS 1.2+, хүчинтэй сертификат), HSTS ЗӨВЛӨЖ БАЙНА. Origin нийтийн IP-тэй (платформ дотоод хаяг руу manifest/webhook-ийн төлөө залгахгүй). Засвар бол консолоос maintenance болгоно.
  • /.well-known/gerege-miniapp.json (эсвэл openpay-miniapp.json) — manifest.md, redirect-гүй.
  • Вэб host (iframe) «удахгүй» — тэр үед Content-Security-Policy: frame-ancestors шаардлага нэмэгдэнэ. Одоо X-Frame-Options-ийг тавьсан ч iOS WebView-д нөлөөлөхгүй.
  • Гүйцэтгэл (4G, дунд зэргийн утас): эхний дэлгэц (ready) ≤ 2.5 с, эхний ачааллын JS ≤ 300 KB gzip, зураг WebP/AVIF, lazy-load.
  • Дэмжих: iOS 17+ WebKit. (Android WebView — Android host гарах үед.)

2. Аюулгүй байдал

  • Client secret, access/refresh token, webhook secret — зөвхөн backend-д. Frontend bundle, лог, аналитик, URL-д ХОРИГЛОНО.
  • launch параметрийг URL-аас тэр даруй арилгана; Referrer-Policy: strict-origin-when-cross-origin ба түүнээс хатуу.
  • Хүний нэвтрэлт зөвхөн Gerege-ийн launch-аар (өөрийн нууц үг/OTP форм ХОРИГЛОНО).
  • Төлбөр зөвхөн payments.md-ээр; webhook гарын үсэг шалгах (webhooks.md).
  • OWASP ASVS L1 доод түвшин: XSS (хатуу CSP script-src), CSRF (cookie ашиглавал), input validation, dependency scan.
  • Хувийн мэдээлэл: Монгол Улсын Хүний хувийн мэдээлэл хамгаалах тухай хууль; зөвхөн scope-оор авсан мэдээлэл, зорилгоор нь; устгах хүсэлтэд 30 хоногт. sub / user_ref-ийг гадны аналитикт илгээхгүй.
  • Аюулгүй байдлын зөрчлийг 24 цагт операторт мэдэгдэнэ.

3. UX ба дизайн

  • Mobile-first, 320–430 px өргөн. Хэвтээ scroll ХОРИГЛОНО.
  • getContext().theme (light/dark) ба safe_area-г дагана. Host толгой (гарчиг, хаах) өөрөө байна — давхар «буцах/хаах» толгой хийхгүй; дотоод навигацид буцах товч болно.
  • Хэл: Монгол заавал; locale өөр бол англи ЗӨВЛӨЖ БАЙНА. Мөнгө 45,000₮ (бүхэл), огноо Asia/Ulaanbaatar.
  • Хүрэх талбай ≥ 44×44 pt, үндсэн текст ≥ 15 pt, контраст WCAG AA.
  • Ачаалал: skeleton; алдаа бүрт ойлгомжтой Монгол мессеж + дахин оролдох.
  • accent_color-оо гол товчинд ашиглаж болно. Gerege-ийн лого/нэрийг өөрийн брэнд мэт ашиглах ХОРИГЛОНО.
  • «Удахгүй» товч, ажиллахгүй товч, хоосон placeholder дэлгэц ХОРИГЛОНО (mini app дотор).

4. Контент ба бизнес

  • Монгол Улсын хууль, App Store / Google Play-ийн бодлого. Хориотой: зөвшөөрөлгүй мөрийтэй тоглоом, хууль бус бараа, насанд хүрээгүйд 18+ контент, төөрөгдүүлэх сурталчилгаа.
  • Үнэ, нөхцөл, буцаалтын бодлогыг төлбөрөөс өмнө ил харуулна.
  • iOS дээр апп дотор хэрэглэгдэх дижитал контент (subscription, тоглоомын эрх) — Apple-ийн бодлогоор IAP шаардагдана; хэтэвчээр зөвхөн апп-аас гадуур хэрэглэгдэх бараа/үйлчилгээ (eSIM, тийз, хоол) зарна.
  • Дэмжлэгийн суваг (legal.support_url) ажлын өдөрт 24 цагт хариулна. И-баримт — developer-ийн үүрэг (intent-ийн reference-ээр холбоно).

5. Review checklist

# Шалгах зүйл
1 Manifest schema, verification, origin, icon 512, legal URL-ууд
2 Нээгдэх: ready ≤ 2.5 с, light/dark, safe area, 320 px
3 Session: launch → backend солилцоо; frontend-д token/secret байхгүй (bundle + network шалгах)
4 Төлбөр: дүн backend-ээс, intent → requestPayment → webhook/GET шалгасны дараа олгох; давхар олголтгүй
5 Буцаалт/цуцлалтын урсгал; manual бол capture/cancel-ийг 7 хоногт шийддэг
6 Webhook гарын үсэг, replay, dedupe
7 openExternal зөвхөн зарласан URL; өөр нэвтрэлт/төлбөрийн форм байхгүй
8 Монгол текст, алдааны мессеж
9 Хувийн мэдээлэл: scope-оос илүү асуухгүй, privacy policy
10 Тусгай ангилал (тоглоом/санхүү) — зөвшөөрлийн баримт

Submit-ийн автомат шаардлага: шалгагдсан manifest, privacy/terms/support холбоос, live client secret, payments scope-той бол webhook URL. Manifest шалгалт нь 512 icon-ыг (PNG, яг 512×512) татаж, гурван legal хуудас redirect-гүйгээр 200 хариулахыг шаардана. 18+ эсвэл баталгаажсан хүнд зориулсан үйлчилгээ бол manifest-д min_age / requires_verified зарла — платформ нээлтэд өөрөө хэрэгжүүлнэ (auth.md §1.1). Review-ээс өмнө тест хэрэглэгч, тест төлбөр, webhook.test-ээр бүх урсгалаа шалга (console.md).