先决条件
- 一个 Fluz 账户——你将在下方步骤 1–2 中创建预生产 API 凭证并铸造访问令牌。
- 请求将发送到 沙盒 GraphQL 端点。这里不会对真实卡片扣款——参见 预生产 vs. 线上环境。
- 每个 mutation 都需要唯一的
idempotencyKey(客户端生成的 UUID),以确保请求只被处理一次——参见 幂等性。
开始之前
除铸造令牌(步骤 2)外,其他每次调用都是到同一个 GraphQL 端点的POST 请求,并使用 Bearer 令牌进行认证:
完整流程
用凭证换取访问令牌
使用应用凭证铸造一个短期有效、带作用域的用户访问令牌。此调用请求 OAuth 服务;后续所有调用都使用返回的令牌作为 Bearer 凭证。保存返回的
accessToken,并在下方每个请求中以 Authorization: Bearer <accessToken> 发送。令牌短期有效(expiresIn 单位为秒)——请在服务端铸造并在过期前刷新。详情参见:API 凭证。向你的 Fluz 余额充值
预先充值 Fluz 余额通常能加快礼品卡购买速度,并可绕过某些频控检查。你可以通过两种方式充值:
- 手动,通过 沙盒 Fluz 网站。
- 编程方式,通过
depositCashBalancemutation(如下)。
首先,获取支付方式 ID(getWallet)
首先,获取支付方式 ID(getWallet)
要通过 API 充值,你需要一个资金来源的 ID(例如 从响应中获取
bankCardId)。运行 getWallet 并保存要使用的 ID。bankCardId 或 bankAccountId。通过 API 管理资金来源需要 MANAGE_PAYMENT 作用域。更多详情:查看资金来源。发起充值
使用depositCashBalance mutation。它接收一个 DepositCashBalanceInput 对象。输入字段
客户端生成的唯一 UUID,保证充值只被处理一次。
充值金额。
目标余额。可为
CASH_BALANCE、GIFT_CARD_BALANCE 或 RESERVE_BALANCE。资金来源——提供 一个
bankAccountId、bankCardId 或 paypalVaultId。仅用于
GIFT_CARD_BALANCE。四位数 MCC 分类码。使用 getMccList 获取有效值。当选择
CASH_BALANCE 时,指定要充值的具体消费账户。示例响应
示例响应
充值可能即时到账,也可能因资金来源与结算类型不同而在 2–5 个工作日内完成。响应中的
balances 对象反映你当前的可用余额。随时重查请参见 检查账户余额。浏览商户并选择一个优惠
余额准备就绪后,使用
getMerchants 获取可用商户及其返现优惠的目录。常用参数
按名称筛选商户。
{ limit, offset }。默认与最大 limit 为 20。返回何种优惠类型的布尔标志,例如
{ giftCardOffer: true, cardLinkedOffer: false }。在每个商户内筛选优惠,例如按
deliveryFormat(URL、CODES、PIN_AS_CODE、PIN_WITH_URL)筛选。分页: 响应可能返回少于你请求
limit 的结果。要拉取完整目录,请持续将 offset 按 limit 递增,当 API 返回空数组([])时停止。未筛选的目录很大——每天最多抓取一次,并使用 name 或 offerTypes 进行定向查询。可选:获取某商户的最佳单一优惠(getOfferQuote)
可选:获取某商户的最佳单一优惠(getOfferQuote)
如果你已知道商户和金额,
getOfferQuote 将直接返回当前可用的最佳优惠——包含实时库存信息。slug 与 denomination 为必填。paymentMethod 默认为 FLUZPAY(你的 Fluz 余额),也可为 BANK_CARD、BANK_ACCOUNT、PAYPAL、APPLE_PAY 和 GOOGLE_PAY。购买礼品卡
使用
purchaseGiftCard mutation。你可以通过两种方式指定要购买的内容:- 方案 A — 商户 slug(推荐)
- 方案 B — 指定 offer ID
传入
merchantSlug,Fluz 将自动应用该商户的最佳可用优惠。输入字段
客户端生成的唯一 UUID,确保购买只被处理一次。
二选一。
merchantSlug 会自动选择最佳比例;offerId 指定特定优惠。购买的礼品卡面额。
支付方式。使用
balanceAmount(Fluz 余额)、bankAccountId、bankCardId 或 paypalVaultId。你可以将 Fluz 余额与其他来源组合支付。当其他支付方式失败时回退到 Fluz 余额。设为
false 可禁用回退。使用
merchantSlug 购买时可接受的最低奖励比例。强制使用特定的专属比例。在
getMerchants 中可找到类型为 EXCLUSIVE_RATE_OFFER 的优惠对应的值。要扣款的消费账户(现金余额)。
可选的费用元数据。
memo 最长 255 字符;类别在首次使用时创建。参见 添加费用详情。示例响应
示例响应
保存响应中的
giftCardId——下一步你将用它来揭示卡片。如果购买失败,请查看 礼品卡错误代码。揭示礼品卡详情
最后,检索可用于兑换的详情(代码、PIN 和/或 URL)。
没有 giftCardId?先列出你的卡片(getGiftCards)
没有 giftCardId?先列出你的卡片(getGiftCards)
如果你在步骤 3 中刚拿到 你可以使用
giftCardId,可跳过本节。否则,先列出你的礼品卡:status 和 userCashBalanceId 进行筛选,并使用 paginate 进行分页。揭示兑换详情
使用giftCardId 调用 revealGiftCardByGiftCardId。示例响应
示例响应
兑换字段因商户而异。有些卡仅返回字母数字
code 而无 pin;另一些仅返回 url。请始终基于 getGiftCards 返回的 deliveryFormat 渲染(而非 getMerchants)——商户的活动优惠在购买后可能变更,而 getGiftCards 反映卡片实际购买时的格式。大功告成 🎉
你已跑通完整交易——充值余额、浏览优惠、购买礼品卡并揭示其详情。接下来,探索更多 API:Virtual Cards
开立并管理可被网络受理的虚拟卡。
Wallets & Transfers
开设消费账户并在其间转账。
Transaction Activity
拉取、筛选并标注交易历史。
Embedded Widgets
将 Fluz 的流程直接嵌入到你的自有界面中。
想了解更多? 通过 support@fluz.app 联系我们,与专家交流或申请演示。