Multivalyuta kataloglari
(Bo’lim: Operatsiyalar va Boshqaruv)
1) Vazifa va qo’llanish sohasi
Multivalyuta katalogi - turli valyutalar, hududlar va kanallar uchun narxlar/komissiyalar/soliqlar to’g "risidagi yagona haqiqat manbai. U quyidagilarni ta’minlaydi:- to’g "ri narxlar vitrinasi (UX, ishonch),
- hisob-kitoblarning takrorlanuvchanligi (audit, qaytarish),
- iqtisodiy bashorat qilinganlik (marja/soliqlar),
- komplayens (soliqqa tortish, sanksiyalar, valyutalarni cheklash).
2) Ma’lumotlar modeli (referens)
Mohiyati:- Product/SKU: `{sku_id, title, attributes, region_policies[]}`
- PriceList: `{pricelist_id, base_currency, effective_from, effective_to, version}`
- PriceItem: `{sku_id, base_price, base_currency, tax_class, pricing_model, promo_refs[]}`
- FXRate: `{pair: EUR→USD, rate, source, method, precision, effective_from, version}`
- `minor_units` (ISO 4217; masalan JPY = 0, USD/EUR = 2, KWD = 3; crypto uchun - 8 tagacha)
- ’rounding _ mode’:’HALF _ UP’(chakana savdo),’BANKERS’(moliya),’FLOOR ’/’ CEIL’(soliqlar/tartibga soluvchilar)
3) FX (valyuta kurslari) manbalari va siyosati
Manbalar: kurslar provayderlari (tijorat/markaziy banklar), xususiy TWAP/mediana.
Yangilanish siyosati: chastota (o’zgaruvchan uchun 1-15 daqiqa, barqaror uchun 1 marta/kun), nashr etishning kechikishi.
Markaplar:’rate (1 + fx_markup_bps)’mijoz tomoniga; per-kanal/mintaqaning shaffof qoidalari.
Kafolatlangan kotirovka oynasi (rate lock): buyurtmada’fx _ version’bilan 5-30 daqiqa.
Anti-sakrash: tik, circuit-breakers, fallback so’nggi valid kotirovkasi uchun o’zgarishlar.
Version: kurslarning har bir nashri’version’,’effective _ from’ga ega; Tarixni qaytarish uchun saqlang.
4) Narxni shakllantirish strategiyasi
Base + FX: bazaviy narxni «yadroda» saqlash (masalan, EUR), oynada konvertatsiya qilish.
Per-currency varaqlari: asosiy valyutalar uchun oldindan hisoblangan narxlar (eng yaxshi UX, oldindan aytish mumkin).
Mixed: eng yaxshi 10 ta valyuta - oldindan hisob-kitob, «uzun dumi» - on-the-fly.
Charm-pricing: `X. Mintaqa bo’yicha 99/95/90, yaxlitlash xatolari to’planishini nazorat qiling.
Komissiyalar/yig’imlar: payment fee, cross-border fee, network fee (crypto) - katalogda yoki «Checkout Pricing» bosqichida.
5) Soliqlar va «qo’shilganlik»
VAT/GST kiritilgan/chiqarib tashlangan: EU - ko’pincha VAT-inclusive; B2B QQSsiz bo’lishi mumkin.
Soliq qatlamlari: federal/shtat/mahalliy; onlayn o’yinlar uchun - o’ziga xos yig’imlar.
Chegara stavkalari: soliq aylanmadan/toifadan/mintaqadan (threshold) o’zgaradi.
Soliqlarni yaxlitlash: per-item vs per-basket; yaxlitlash rejimlari va hisoblash tartibi determinizatsiya qilinishi kerak.
Jur. hisobot:’tax _ rule _ version’ni chek/kvitansiyada saqlang.
6) Yaxlitlash va aniqlik
Koʻrsatishning oxirgi bosqichini yaxlitlang; hisob-kitoblarda «yuqori aniqlik» ni saqlang (8-9 belgigacha).
Crypto uchun decimal kutubxonasidan foydalaning (ikkilik suzuvchisiz).
Anti-drift savat: «bankers rounding» summalar uchun, lekin UX-yaxlitlash ko’rsatish uchun; ’rounding _ scope’.
Summa qoidasi: yaxlitlashdan keyingi satr summasi total bilan mos kelishi kerak - oxirgi tiyin/tsentni taqsimlashdan foydalaning (penny distribution).
7) Kataloglar, promo va bandlalar
Promo-правила: `if region=A and currency in [EUR,USD] then discount=10% cap=50`.
Qo’llash tartibi: (1) bazaviy narx → (2) chegirmalar → (3) soliqlar → (4) yig’imlar → (5) yaxlitlash.
Bundle-taqsimot: chegirmalargacha bo’lgan pozitsiyalar tabiga mutanosib ravishda; qaytarish uchun vapper.
Threshold-promo: savat valyutasidagi total ≥ X da bepul yetkazib berish/bonus; ekvivalentni bazaviy valyutada saqlang, lekin FX versiyasini belgilang.
8) To’lovlar va komplayens bilan integratsiya qilish
Valyuta qulayligi: har bir valyuta har bir o’yinchi/mintaqa/to’lov provayderi uchun ochiq emas.
Guaranteed FX: o’rnatilgan’fx _ version’bo’yicha prefiks-avtorizatsiya; ekspiratsiya qilinganda - yangi narxni tasdiqlash so’rovi.
MSK/sanksiyalar: valyuta/banklar/tokenlarning blok-varaqlari, konvertatsiya qilishga cheklovlar.
Qaytarish/chargeback: tarixiy’fx _ version’buyurtmasi bo’yicha qayta hisoblash; qaytarish komissiyasi - tranzaksiya sanasidagi katalog bo’yicha.
9) Arxitektura va API kontrakti
Katalogni oʻqish:- `GET /catalog/prices? sku=…¤cy=…®ion=…&pricelist=…`
- Ответ: `{unit_price, currency, fx_version, pricelist_version, tax_breakdown[], fees[], display_price, rounding_mode}`
- `POST /pricing/quote { items[], region, currency, buyer_type }`
- Ответ: `{items_priced[], subtotal, discounts, taxes[], fees[], total, fx_version, lock_ttl, signature}`
- ’POST/pricing/commit {quote_id, signature}’ → xesh va imzolar bilan kvitansiya.
- `PriceListUpdated`, `FXRatePublished`, `TaxRuleChanged`, `PromoChanged` — с `version/effective_from`.
10) Keshlash va unumdorlik
Edge-kesh: kalit’pricelist: region: currency: sku: version’; TTL barqaror valyutalar uchun yuqoriroq.
Warmup: kampaniyani boshlash uchun yuqori toifalarni isitish.
SWR (stale-while-revalidate): vitrinalar uchun; checkout - faqat fresh.
Partial invalidation:’sku’,’category’,’pricelist _ version’teglari bo’yicha nogironlik.
SLO: p95 ≤ 120 ms vitrin uchun, p95 ≤ 250 ms quote uchun, ≥ 99. 95% foydalanish imkoniyati.
11) Kuzatuv va audit
Tracking:’trace _ id’,’pricelist _ version’,’fx _ version’,’tax _ rule _ version’.
Immutabellik: prays-listlar/kurslarni nashr etishning WORM-jurnallari; Merkle-qismlar, relizlar imzolari (DSSE).
Receipts: to’liq joylashtirilgan va foydali yuklamali chek/kvitansiya; 7-10 yil saqlash (tartibga soluvchi bo’yicha).
Dashbordlar: vitrin tafovuti, «yuqoriga/pastga» yaxlitlash chastotasi, FX xatolari, kursni blokirovka qilish vaqti (lock TTL), ROI promo.
12) Ko’rsatishni mahalliylashtirish
Valyuta formati: belgi/kod (, €, $, AED), belgi pozitsiyasi, ajratuvchilar, boʻshliq.
Mahalliy qoidalar: "1 234,56" vs "$1,234. 56”.
Psixologiya: sehrli narx belgilari (’.99’) fintech/o’yinlarda har doim ham mos kelmaydi; per-mintaqani sinab ko’ring.
Yuridik imzolar: «Narx QQSni o’z ichiga oladi», «Tarmoq komissiyasi alohida undiriladi».
13) Alohida holatlar
Kasr qismsiz valyutalar: JPY/ISK - minor_units=0.
Uch signalli minor units: KWD/BHD = 3.
Kripto: BTC/ETH/USDT - 8 tagacha belgi, alohida network fee; stablecoins ≠ kross-borderda «kurs 1:1».
Ikki baravar narx: «katalog valyutasi» ≠ «hisobdan chiqarish valyutasi» (merchantning bank kursi). Spreadni hujjatlashtiring.
Sport/o’yinlar: katalog valyutasidagi maksimal yutuqlarga limitlar - ekvivalentlarni’fx _ version’raund bo’yicha saqlash.
14) SLO/SLI va muvaffaqiyat metrikasi
To’g "rilik: buyurtmalar ulushi, bunda total_checkout = total_quote (taqsimlash qoidalarida 1 minor unit ±) ≥ 99. 99%.
FX barqarorligi: rate lock oynasidagi operatsiyalar ulushi ≥ 99%.
Iqtisodiyot: marja/birlik vs reja; FX/yaxlitlash tufayli chetga chiqishlar (bps).
UX: tezlik quote p95, narxni qayta hisoblashda chiqindilar ulushi, NPS vitrin.
Audit: 100% chek saqlangan’_ version’va imzo bilan.
15) Hodisalar pleybuklari
«Savatdagi ≠ vitridagi narx»:1. freeze kesh-nogironlar; 2) prays-varaqani majburiy refresh qilish; 3)’pricelist _ version ’/’ fx _ version’ni solishtirish; 4) siyosat bo’yicha kompensatsiya.
«FX sakrash marjani buzadi»:1. 2) TTL blokini qisqartirish, 3) fallback manbasiga o’tish.
«Soliq mos kelmaydi»:1. ’tax _ rule _ version’ ni tekshirish; 2) rounding_scope validatsiyasi; 3) hotfix qoidalari va savatlar repraysini tekshirish.
«Promo salbiy narx beradi»:1. himoya qoidalari (min_price), 2) shishani o’chirish, 3) recalculation va audit.
16) Xavfsizlik va komplayens
Policy-as-code: PR + relizlar imzosi orqali prays-varaqlar/FX/soliqlar o’zgarishini nazorat qilish.
Rollar/imkoniyatlar: narxlarni e’lon qilishda 4 ko’zli tamoyil/FX.
Logi/kvitansiyalar: imzolangan nashrlar va checkout voqealari.
Mintaqaviy cheklovlar: ayrim valyuta/tokenlarni taqiqlash; geo-siyosat.
17) Eksperimentlar va optimallashtirish
A/B: charm-pricing, oldindan hisoblangan narxlar vs on-the-fly, aks ettirish formati.
Dinamik markup: bir juft/sutka vaqtining o’zgaruvchanligiga bog’liqlik.
Kogort tahlili: valyutalar bo’yicha qaytarmalar/chargeback, yumalishga sezgirlik.
Kesh strategiyasi: SWR/TTL ning konversiya va aniqlikka taʼsiri.
18) Joriy etish chek-varaqasi
- Varaqlarning bazaviy valyutasi va per-currency siyosatini belgilash.
- FX yigʻish/nashr qilishni TTL versiyasi, markaplari va lock bilan moslash.
- TaxRule va hisoblash/yaxlitlash tartibini rasmiylashtirish (per-item yoki per-basket).
- /quote/commit katalogining API + imzolangan kvitansiyalarni amalga oshirish.
- edge-kesh va granulyar nogironlikni kiritish; Vitrinalar uchun SWR.
- Dashbordlarni ochish (vitrin, FX xatolari, soliqlar, bps marjasi).
- Narxlar/kurslar, WORM jurnallarini nashr etish uchun rollarni/imzolarni kiriting.
- Pleybuklarni tayyorlash: narxning pasayishi, FX sakrash, soliq kelishmovchiligi.
- «GameDay katalogini» o’tkazish: FX manbasini o’chirish, promo-burst, soliqni o’zgartirish.
- Hududlar boʻyicha minor_units/otobrazheniye muntazam ravishda qayta koʻrib chiqilsin.
19) FAQ
Narxlarni har bir valyutada saqlash kerakmi?
Albatta emas. Top-valyutalar uchun oldindan hisob-kitob va «dum» uchun konvertatsiyani birlashtiring - UX va xarajatlar shunday muvozanatlanadi.
Nega yaxlitlashgandan keyin total «urmaydi»?
per-item vs per-basket farqlari tufayli. Bitta yondashuvni tuzating va «penny distribution» dan foydalaning.
Bir oydan keyin qanday qilib qaytish mumkin?
Kvitansiyada saqlangan tarixiy’pricelist _ version’,’fx _ version’va’tax _ rule _ version’bo’yicha.
Crypto haqida nima deyish mumkin?
decimal aniqligidan foydalaning, network fee alohida, fiatga 1:1 vaʼda qilmang; kursni va harakat oynasini belgilang.
Xulosa: Multivalyuta katalogi - bu aniq matematika, qat’iy siyosat va oqilona keshlash kombinatsiyasi. Hamma narsani (narxlar/kurslar/soliqlar) versiya qiling, kotirovka oynasini belgilang, hisoblash va yaxlitlash tartibini aniqlang, chek-artefaktlarni imzolang va dashbordlarni ko’rinib tursin. Shunday qilib, siz barcha valyuta va hududlarda halol vitrin, qayta tiklanadigan hisob-kitoblar va boshqariladigan iqtisodiyotni olasiz.