多种货币目录
(部分: 业务和管理)
1)任务和应用范围
多货币目录是不同货币,地区和渠道的价格/佣金/税收真相的单一来源。它提供:- 正确的价格展示(UX,信任),
- 计算的可重复性(审计,退款),
- 经济可预测性(保证金/税),
- 合规性(税收、制裁、货币限制)。
2)数据模型(参考)
实体:- 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;见JPY=0,USD/EUR=2,KWD=3;crypto-最多8)
- "rounding_mode":"HALF_UP"(零售),"BANKERS"(金融),"FLOOR"/"CEIL"(税收/监管机构)
3)外汇来源和政策(汇率)
资料来源:课程提供者(商业/中央银行),自己的TWAP/中位数。
更新策略:频率(波动1-15分钟,稳定1次/日),延迟发布。
Markaps:客户侧面的"rate(1+fx_markup_bps)";透明的通道/区域规则。
保证报价窗口(rate lock):订单中带有"fx_version"的5-30分钟。
反飞跃:滴答作响,巡回决胜局,最后的有效报价回落。
考试:每个课程出版物都有"版本","effective_from";保存历史记录,以获取回报/争议。
4)定价策略
Base+FX:将基本价格保存在"核心"(例如EUR)中,转换为店面。
按货币计算:关键货币的预先计算价格(最佳UX,可预测性)。
混合:前10种货币是预计算,"长尾巴"是飞行的。
Charm-pricing: `X.99/95/90通过区域控制四舍五入错误的积累。
费用/费用:在目录或"检查费"阶段中支付费用,跨界费用,网络费用(crypto)。
5)税收和"包容性"
VAT/GST包括/排除:EU-更常见的是VAT包含;B2B可能没有增值税。
税级:联邦/州/地方;对于在线游戏-具体费用。
门槛税率:税率因营业额/类别/地区而变化(threshold)。
四舍五入的税收:按项目vs按基数;四舍五入模式和计算顺序必须确定。
于尔。报告:在支票/收据中保存"tax_rule_version"。
6)四舍五入和精度
在显示的最后一步中四舍五入;在计算中,保留"高精度"(最多8-9个符号)。
对于crypto,请使用decimal库(无二进制浮动)。
反漂移篮子:总和为"银行家回合",但要显示的UX四舍五入;捕获"rounding_scope"。
总和规则:四舍五入后的建筑总和必须与总和匹配-使用最后GPI/美分的分配(penny分布)。
7)目录,促销和帮派
Promo-правила: `if region=A and currency in [EUR,USD] then discount=10% cap=50`.
适用程序:(1)基本价格→ (2)折扣→ (3)税款→ (4)费用→ (5)四舍五入。
捆绑分配:与折扣前的项目选项卡成比例;退货的vrapper。
Threshold促销:以篮子货币total≥X时免费送货/奖金;以基本货币存储等价物,但要固定FX版本。
8)集成支付和合规性
货币可用性:并非每种货币都提供给每个玩家/地区/支付提供商。
保证的FX:根据固定的"fx_version"进行前缀授权;演示-请求确认新价格。
CUS/制裁:货币/银行/代币清单,转换限制。
退款/充电包:根据历史悠久的"fx_version"订单重新计票;退货佣金-按交易日目录。
9) API体系结构和合同
阅读目录:- `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} "→带有哈希和签名的收据。
- `PriceListUpdated`, `FXRatePublished`, `TaxRuleChanged`, `PromoChanged` — с `version/effective_from`.
10)缓存和性能
边缘缓存:"pricelist: region: currency: sku: version";稳定货币的TTL较高。
Warmup:加热顶级类别推出活动。
SWR(stale-wile-revalidate):用于店面;checkout-只有fresh。
Partial invalidation:通过"sku"、"category"、"pricelist_version"标签致残。
SLO: p95 ≤ 120毫秒用于店面,p95 ≤ 250毫秒用于报价,≥99。95%的可用性。
11)可观察性和审计
所有事件中的跟踪:"trace_id"、"pricelist_version"、"fx_version"、"tax_rule_version"。
固定性:价格表/课程出版物的WORM期刊;Merkle剪辑,发行签名(DSSE)。
回收:支票/收据,有完整的布局和有效载荷哈希;保存7-10年(根据监管机构)。
Dashbords:vitrina↔checkout差异,上下舍入频率,FX错误,课程锁定时间(锁定TTL),ROI促销。
12)显示本地化
货币格式:符号/代码(₴,欧元,AED),字符位置,分隔符,空格。
本地规则: "₴ 1,234.56" vs "$1.234。56”.
心理学:在fintech/游戏中,神奇的价格标签(".99")并不总是合适的;测试区域。
法律签名:"价格包括增值税","网络费用单独收取"。
13)特殊情况
无小部分货币:JPY/ISK-minor_units=0。
三音小单位:KWD/BHD=3。
Crypto:BTC/ETH/USDT-最多8个标志,分别为network fee;stablecoins ≠跨边界的"课程1:1"。
双重价格:"目录货币"≠"注销货币"(商业银行汇率)。记录spread。
体育/游戏:以目录货币计算的最大收益的限制-在"fx_version"回合中存储等价物。
14) SLO/SLI和成功指标
正确性: total_checkout=total_quote的订单比例(分配规则中± 1个次要单位)≥ 99。99%.
FX稳定性:rate lock窗口中的操作比例≥ 99%。
经济学:保证金/单位与计划;由于FX/四舍五入 (bps)引起的偏差。
UX:quote p95的速度,价格转换中的垃圾桶比例,NPS店面。
审计:100%的支票带有保存的"_version"和签名。
15)事件花花公子
"店面价格≠在篮子里":1.freeze缓存残障人士,2)强制refresh价格表,3)比较"pricelist_version"/"fx_version",4)政策补偿。
"FX飞跃破坏利润":1.包括升级的标记/打折,2)减少TTL锁定,3)切换回落源。
"税收不会收敛":1.检查"tax_rule_version",2)验证规则rounding_scope,3)hotfix和回收站的复制。
"促销给出了负价":1.保护性规则(min_price), 2)禁用流通,3)恢复和审核。
16)安全和合规性
策略即代码:通过PR+发行签名控制价格表/FX/税收更改。
角色/可用性:价格出版物/FX的4眼原则。
记录/收据:已签名的发布事件和检查。
区域限制:禁止个别货币/代币;地理政治。
17)实验与优化
A/B:标记,预估价格vs-the-fly,显示格式。
动态标记:对蒸气/时间波动性的依赖。
队列分析:按货币分列的退货/冲兑、四舍五入敏感性。
缓存策略:SWR/TTL对转换和准确性的影响。
18)实施支票
- 定义纸张的基本货币和货币政策。
- 设置FX的收集/发布,包括TTL的验证、标记和锁定。
- 正式化TaxRule和计算/四舍五入顺序(按项目或按基数)。
- 实现目录/quote/commit API+签名收据。
- 启用边缘缓存和颗粒残疾;用于店面的SWR。
- 开箱即用(vitrina↔checkout,FX错误,税收,保证金bps)。
- 在价格/课程出版物、WORM期刊上输入角色/签名。
- 准备花花公子:价格过高,外汇跳跃,税收分歧。
- 进行"GameDay目录":关闭FX来源,促销活动,更改税收。
- 按区域定期审计minor_units/otobrazheniye桉。
19) FAQ
是否需要以每种货币储存价格?
不一定。结合顶级货币的预计算和"尾巴"的转换-UX和成本是如此平衡。
为什么四舍五入后的总数"不打"?
由于按项目vs按基数的差异。记录一种方法,然后使用"penny distribution"。
如何在一个月内退货?
根据保存在收据中的历史"pricelist_version","fx_version"和"tax_rule_version"。
crypto是什么?
使用decimal精度,network fee单独使用,不要承诺为fiat 1:1;捕获过程和操作窗口。
摘要:多币种目录是精确数学,严格政策和合理缓存的组合。验证一切(价格/课程/税),锁定报价窗口,确定计算和舍入的顺序,签署支票工件,并保持行车记录的可见性。因此,您将获得所有货币和地区的诚实展示,可复制的计算和可管理的经济。