始终只有两种币种
对于任意一笔投注,参与的币种永远只有两种:- 账户币种——博彩商账户的币种(
accounts.currencyId)。博彩商实际接触的一切都以此币种计价:下注金额、余额、结算赔付。 - 订单币种——你表达订单所用的币种(
orderCurrency,默认USD)。订单上的一切都以此币种计价。
哪个字段是哪种币种
| 对象 | 字段 | 币种 |
|---|---|---|
| 订单 | orderStake、filledStake、remainingStake | 订单币种(orderCurrency) |
| 投注 | placedStake、settlementAmount | 账户币种(placedCurrency) |
| 账户 | balance、credit | 账户币种(currencyId) |
orderStake、filledStake 与 remainingStake 始终为同一币种且可直接比较。在投注上,placedCurrency 始终等于账户的 currencyId。
汇率:currencyValue
汇率位于 currencies 频道/表。约定为:
currencyValue 是每 1 USD 对应该币种的单位数。USD 本身的 currencyValue = 1。在币种 A 与 B 之间换算:
currencyValue:
读取时的 currencyInfo
GET /orders、GET /bets 与 GET /accounts 会为每行附加一个 currencyInfo 对象,使你无需二次查询即可计算 USD:
- 在订单上,
currencyInfo描述其orderCurrency。 - 在投注上,
currencyInfo描述其placedCurrency。 - 在账户上,
currencyInfo描述其currencyId(便于将balance/credit换算为 USD)。
updatedAt 是该汇率快照的 ISO 8601 时间戳。currencyInfo 可为 null——当该币种没有可用汇率时为 null。存储的 placedStake / placedCurrency 绝不会被改写——currencyInfo 是附加的,仅用于显示/换算。
实例
订单orderStake = 100、orderCurrency = USD,在一个 Betfair EUR 账户上成交,其中 1 USD ≈ 0.92 EUR:
bets.placedStake = 92、placedCurrency = EUR(发送给 Betfair 的内容)。- 换算回去:
92 EUR ÷ 0.92 = 100 USD。 orders.filledStake = 100、remainingStake = 0,状态FILLED。
赔率单额度:原生 + USD
GET /betslip(及赔率单 WebSocket 负载)会为每家博彩商返回原生额度与 USD 等值,便于你跨不同币种的账户比较:
limit/limitMin以limitCurrency(账户币种)计价。limitUsd/limitMinUsd是同样的值归一化为 USD。
下注额度级联
每次下注的有效最小/最大额度按优先顺序解析(取第一个非空值):哪些地方不发生换算
- 余额与信用额(
accounts.balance、accounts.credit)以账户原生币种原样报告——没有 USD 归一化余额。 - 结算金额(
bets.settlementAmount)直接来自博彩商,以原生(账户)币种计价。
后续步骤
订单下注
模式、定价与额度如何驱动成交。
错误处理
处理被拒原因与错误响应。