Skip to main content
一个 Fluz 钱包由两部分组成:一组承载价值的余额,以及一组将价值进出的钱包与外部账户的链接。其余 API 中的每张卡、每笔购买与每次付款最终都依赖于此。 这里几乎所有你要构建的内容,都取决于三个问题:
  • 这笔钱在哪个余额里? 不同余额有不同规则——有的可提现,有的只能消费。
  • 现金余额中的哪个消费账户? 现金被分区到具名的子总账中,选择错误是最常见的意外失败来源。
  • 资金是在流入、内部流转,还是流出? 每个方向对应不同的变更,作用范围也不同。

四种余额

现金余额

工作余额。由存款补充,用于购买礼品卡与虚拟卡,可提现到外部账户。它不是一个单独的池子——而是你的消费账户的聚合,详见下一节。

奖励余额

购物获得的返现。完全可提现,也完全可消费。不同于现金余额与预付余额,它不包含待结算金额,因为奖励是在获得时即入账,而非分期结算。 通过传入 source: "REWARDS_BALANCE" 提现——这是除现金外 withdrawCashBalance 接受的唯一余额。

预付余额

一个余额,四个名字。 产品称其为预付余额。API 字段是 giftCardCashBalance,存款枚举是 GIFT_CARD_BALANCE,部分页面仍称其为“礼品卡余额”。这些都指同一件事。
仅可消费。你可以通过两种方式为其充值——使用 depositType: "GIFT_CARD_BALANCE" 进行存款,或兑换一张 Fluz 礼品卡代码——并可用于消费,但永远不能提现到外部账户。 进入预付余额的资金,只能通过消费离开。 这是一种产品设计,而非限制:它是预付价值,因此将存入视为一种承诺。如果你可能需要把资金取出,请改为存入现金余额。

预留余额

通过 depositType: "RESERVE_BALANCE" 存入,并作为预留资金持有。不可提现。

消费账户

消费账户是现金余额下的具名子总账——例如“运营”“团队差旅”“客户 A”——它们各自拥有余额,且归属于同一个 Fluz 账户。
“消费账户”“现金余额”和 UserCashBalance 指的是同一对象。 产品将其呈现为消费账户;API 类型是 UserCashBalance,因此字段为 userCashBalanceIdavailableCashBalance 等等。不要与 bankAccountId 混淆,后者指的是外部已链接的银行账户。
每个账户都有一个默认消费账户。未指明消费账户的存款、购买与卡片资金补充,都会落到被标记为 isDefault 的那个账户。
如果你持有多个消费账户,请在每次操作中明确指定。 依赖默认账户是导致意外“资金不足”失败的首要原因——新的存款路由到了别处,或默认账户标记被更改,都会在你的代码不变的情况下悄然改变资金来源。

三个数字

每个消费账户都会跟踪三个金额,它们回答不同问题: 在任何批量操作前检查 availableCashBalancetotalCashBalance 减去可用金额,即为在途资金。

管理方式

消费账户 · 获取消费账户

资金流转的所有方式

流入 — 来自外部来源的存款

depositCashBalance 会从已链接的资金来源拉取资金,存入你选择的余额。
  • 资金来源: bankAccountIdbankCardIdpaypalVaultId,均可由 getWallet 获取。
  • 目标余额: depositTypeCASH_BALANCEGIFT_CARD_BALANCERESERVE_BALANCE
  • 消费账户: 当使用 CASH_BALANCE 时,使用 userCashBalanceId 明确指定目标账户。
清算时间视来源不同从即时到 2–5 个工作日不等。返回的 balances 对象反映了可立即使用的金额,请读取它,而不要假设全部金额已到账。 从外部账户存入资金 · 资金来源

流入 — 兑换 Fluz 礼品卡

redeemFluzGiftCard 将一枚 Fluz 礼品卡代码直接记入预付余额。兑换是即时完成的,任何激活费用会在 depositFee 中返回。 这是无需绑定资金来源就能为钱包注入价值的唯一方式——适用于促销、返利与赠礼,收件人甚至可能完全未绑定银行账户。 兑换 Fluz 礼品卡

内部流转 — 在你自己的消费账户之间

transferInternalBalance 在你拥有的两个消费账户之间划转资金。内部会记录为两笔关联动作——从来源账户的提现与到目标账户的存入——响应会返回两者。
两个 ID 必须都是你自己的账户,且不得相同,并且来源账户需要有足够的可用余额。内部转账即时结算——这也是在购买从错误账户出资时最快的解堵方式。 消费账户间转账

内部流转 — 转给另一位 Fluz 用户

向一个不同的 Fluz 账户转账是另一项操作。通过 accountId 指定目标地址,或使用 externalReferenceId 指定你自己的标识符——参见 管理外部引用 ID。收款人必须已授权你的应用。 账户到账户转账 · 收款人查询

流出 — 提现至外部账户

withdrawCashBalance 将资金转出。选择一个来源余额——CASH_BALANCEREWARDS_BALANCE,这两者是唯二支持提现的余额——以及一种方式,并提供相匹配的目标 ID: 当来源为现金余额时,请指明要扣款的消费账户。对 ACH 来说,预期初始状态为 PENDINGPROCESSING,而非立即完成。
提现输入中将消费账户字段命名为 cashBalanceId,而存款与购买使用 userCashBalanceId。同一对象,不同字段名——这是一个已知的不一致点,需要留意。
提现到外部账户

读取余额

两个查询,两个粒度: getWallet 也是你获取每次存款与提现所需资金来源 ID 的位置。在移动资金前检查余额,而不是在失败后再处理。 检查账户余额 · 查看资金来源

幂等性

每一次资金变动——存款、兑换、内部转账、账户间转账、提现——都需要一个唯一的、由客户端生成的 idempotencyKey 重复提交相同的 key 会返回原始结果,而不会再次处理。每个“预期的资金移动”生成一个 key,并在该移动的所有重试中复用它。 在重试时换用新的 key,则可能造成重复转账。 幂等性

Scopes

请先在你应用的Permissions选项卡中启用这些 scope——未启用却在请求中声明的 scope 会被静默丢弃而非拒绝。→ 配置 OAuth 应用

下一步

在钱包中流转资金

从端到端的完整生命周期,提供可运行的快速上手。

消费账户

创建、充值、重命名与关闭子总账。

资金来源

关联银行卡、银行账户与数字钱包。

存入资金

完整的存款输入参考。

提现资金

方法、时效与错误处理。

交易活动

将所有资金流动汇集于一处并可筛选的明细流。