先决条件
- 一个 Fluz 账户 —— 你将在下方步骤 1–2 中创建 Staging API 凭据并铸造一个访问令牌。
- 请求将发送到 沙盒 GraphQL 端点。此处不会对真实卡片扣款——参见 Staging vs. Live Environment。
- 每个 mutation 都需要唯一的
idempotencyKey(客户端生成的 UUID),以确保请求只被处理一次——参见 Idempotency。
开始之前
除铸造令牌(步骤 2)外,每次调用都是一个发往单一 GraphQL 端点的POST 请求,使用你的 Bearer 令牌进行认证:
全流程
注册并登记应用
在 fluz.app 创建一个 Fluz 账户,然后打开 Developer Console 并创建一个新的 Staging 应用。当凭据出现时,复制你的
clientId 和 clientSecret —— secret 仅显示一次。完整演练:准备你的账户。用凭据换取访问令牌
使用你的应用凭据铸造一个短时效、带作用域的用户访问令牌。该调用发送至 OAuth 服务;之后的每次调用都使用返回的令牌作为 Bearer 凭据。保存返回的
accessToken,并在下方每个请求中以 Authorization: Bearer <accessToken> 发送。令牌为短时效(expiresIn 为秒)——请在服务器端铸造,并在过期前刷新。完整细节:API credentials。为你的 Fluz 余额注资
虚拟卡在被使用时从你的账户扣资——默认从你的 Fluz 余额(
FLUZ_BALANCE)中扣除。请确保有足够的可用余额覆盖你计划设置的消费限额。你可以通过两种方式注资:- 手动,通过 sandbox Fluz 网站。
- 以编程方式,通过
depositCashBalancemutation。
通过 API 入金(depositCashBalance)
通过 API 入金(depositCashBalance)
更倾向于从关联银行账户为卡片提供资金?在创建卡片(步骤 5)时设置
primaryFundingSource: BANK_ACCOUNT 并传入 bankAccountId —— 无需预存余额。浏览卡计划并选择一个 offer
每张虚拟卡都是基于一个卡计划(一个 “offer”)发行的:该计划决定网络、发卡行、奖励比率,以及你的卡片必须遵守的消费限额。使用 Offers 按
getVirtualCardOffers 获取你的账户可用的计划。rewardValue 排序,最高返现的计划靠前。你可以用可选的 input 进行过滤——cardType(DEBIT / PREPAID)、cardNetwork(MASTERCARD / VISA),以及 cardBrandLocked。完整参考:Get Virtual Card Offers。在沙盒中,这些测试计划始终可用:保存你想要的
offerId 并注意其 programLimits —— 你在下一步设置的 spendLimit 必须落在该计划对所选周期的限额之内。为你的用例创建并配置卡片
使用 以上三种都运行同一个 mutation:
createVirtualCard 发行卡片。输入中的设置决定了如何将一张通用卡变成一张针对性的卡片——选择与你的场景匹配的模式:- 一次性购买
- 按月上限的订阅
- 有预算且有时间盒的卡
一张只用于一笔交易的卡。将
spendLimit 设置为购买金额,并设置 lockCardNextUse: true,这样卡片在第一次授权成功后会自动锁定——之后任何扣款都会被拒绝。Variables
设置一览
该卡可被扣款的最高金额——你只会为实际使用的金额付费。必须在所选周期的计划限额内。
限额如何重置。
LIFETIME 限制总花费;DAILY / WEEKLY / MONTHLY 使其成为滚动预算——适合订阅和团队配额。在首次成功使用后锁定该卡——用于一次性供应商付款的“虚拟一次性卡”模式。
卡片冻结的
yyyy-mm-dd 日期。将卡片与项目、行程或合同期进行时间盒约束。消费从何处扣除。
FLUZ_BALANCE 使用你的预存余额;BANK_ACCOUNT 从关联账户扣款(需要 bankAccountId)。默认情况下,卡片也可从预付(礼品卡)和奖励余额扣款。将两者设为
false 可实现仅现金卡,只从指定的 userCashBalanceId 扣款——最利于会计核对。附加到生成交易上的可选费用元数据——类别在首次使用时创建。参见 Add Expense Details。
账单地址: 如果你的账户未存档账单地址,请传入
billingAddress(或已保存的 userAddressId)。必须是真实、可投递的美国地址——不支持邮政信箱(PO Box)——否则创建会以 VC-0025 失败。参见 Address Formatting Requirements。保留响应中的
virtualCardId —— 你将用它在下一步展示卡片信息。如果创建失败,请查看 Virtual Card Error Codes。展示卡片详情
创建响应会刻意省略敏感信息。使用 需要
revealVirtualCardByVirtualCardId 获取完整的 PAN、CVV 和有效期——这是你(或你的用户)在结账时输入或添加到移动钱包的信息。REVEAL_VIRTUALCARD 作用域。消费,然后观察活动
在卡网络受理的任何场景使用已展示的卡片信息,前提是满足你设置的限额。然后使用 需要
getVirtualCardTransactions 拉取该卡的活动以确认扣款——同一查询也可用于消费看板、对账和拒付监控。PCI_COMPLIANCE 和 REVEAL_VIRTUALCARD 作用域。省略 virtualCardIds 可拉取账户上所有卡片的活动,并按日期范围过滤以实现对账单式视图。完整参考:Get Virtual Card Transactions。用完卡了?将其锁定(lockVirtualCard)
用完卡了?将其锁定(lockVirtualCard)
具有 需要
lockCardNextUse 或 lockDate 的卡会自处理。要按需锁定其他任意卡:EDIT_VIRTUALCARD 作用域。锁定是可逆的——参见 Unlock Virtual Card。大功告成 🎉
你已经发行了一张为特定任务而建的虚拟卡——选择计划、设置消费控制、展示卡片信息,并跟踪其活动。接下来,深入探索:编辑、锁定与管理卡片
修改已有卡片的限额、昵称和锁定日期。
数字钱包与 PIN
将卡一键推送至 Apple Pay / Google Wallet 并设置 PIN。
批量发行
在单个订单中创建多达 10,000 张卡片。
将卡片发送给他人
通过链接、电子邮件或短信分发卡片给收件人。
想了解更多? 通过 support@fluz.app 联系我们,与专家交流或申请演示。