Skip to main content
单次 purchaseGiftCard 调用只会购买且仅购买一张礼品卡,针对一个优惠且按一个费率结算。没有 quantity 字段,且一次调用绝不会在多个优惠或费率之间拆分。若需购买多张卡,请多次发送该 mutation——每张卡各一次,并使用其各自唯一的 idempotencyKey 每次调用如何选择优惠与费率,取决于你传入的是 offerId 还是 merchantSlug

购买流程一览

offerId — 固定到特定优惠与费率

当你传入 offerId 时,购买会锁定到该精确优惠及其费率。若该优惠已无法履约(例如按库存跟踪的优惠已售罄),调用将失败——系统不会静默替换为其他优惠。详见下方缺货错误。

merchantSlug — 自动选择当前可用的最佳优惠

当你传入 merchantSlug(且不含 offerId)时,系统会在每次调用的当下为该商户选择当前在库的最佳优惠。由于选择是按调用逐次发生的,对同一商户重复购买可能会因可用性变化而对应到不同的优惠

固定面额 vs. 浮动面额与库存

  • 固定面额优惠会按面额逐一跟踪库存。某一面额一旦售罄,将不可再被选择,任何通过 offerId 固定到该面额的后续调用都会返回缺货错误。
  • 浮动面额优惠并不以同样方式受库存限制。它通常持续可用,并在固定/有库存跟踪的优惠售罄后作为回退方案。浮动面额优惠通常会有一个不同(往往更低)的奖励费率,取代已售罄的固定面额优惠。
📘 当你购买的卡数超过库存时会发生什么 假设某个商户的最佳优惠是一个固定、按库存跟踪的优惠,当前仅剩8张库存,而你想要10张卡(即 10 次独立的 purchaseGiftCard 调用):
  • 使用 offerId(固定到该固定优惠):前 8 次调用成功;第 9 次与第 10 次调用因缺货而失败。不会自动回退到其他优惠或费率。
  • 使用 merchantSlug(自动选择):前 8 次调用按该固定优惠购买;当其售罄后,剩余调用会自动选择下一个可用的最佳优惠——这可能是奖励费率更低的浮动面额优惠
在所有情况下,每张卡都会以该次调用最终确定的优惠与费率原子化购买——不会出现混合或部分履约的订单。

使用 minRewardRate 保护你的费率

当你用 merchantSlug 购买时,可使用 minRewardRate 设定奖励费率下限。下单前,系统会检查该商户在所选金额与支付方式下的当前最佳费率;如果该费率低于你的 minRewardRate(或无法给出费率报价),调用将失败,而不会以更低费率完成购买。推荐使用此方式,避免在高费率的库存优惠售罄后,不经意地用更低费率的浮动面额优惠购买余下的卡。
🚧 minRewardRate 仅适用于通过 merchantSlug 的购买。 若你提供了 offerId,则会忽略 minRewardRate(优惠及其费率已固定)。该下限会按调用逐次评估,因此在批量购买时请在每次调用中都包含该参数。

缺货错误

当某个优惠因库存原因不再可履约时,mutation 会返回:
在重试前,请使用 getOfferQuote / getMerchants 重新报价,以获取当前可用的最佳优惠。
📘

当你购买的卡数超过库存时会发生什么假设某个商户的最佳优惠是一个固定、按库存跟踪的优惠,当前仅剩 8 张库存,而你想要 10 张卡(10 次独立的 purchaseGiftCard 调用):

  • 使用 offerId(固定到该固定优惠):前 8 次调用以库存费率成功;第 9 次与第 10 次调用以 GC-0009 失败。不会自动回退到其他优惠或费率。
  • 使用 merchantSlug(自动选择):前 8 次调用以更高费率在该固定优惠上购买;当其售罄后,剩余调用会自动选择下一个可用的最佳优惠——这可能是奖励费率更低的浮动面额优惠
🚧

使用 minRewardRate 保护你的费率当通过 merchantSlug 购买时,请将 minRewardRate 设为奖励费率下限。每次购买前,系统会检查该商户在所选金额与支付方式下的当前最佳费率;如果该费率低于你的 minRewardRate(或无法给出报价),调用将失败,而不会以更低费率完成购买。这是避免在高费率的库存优惠售罄后,无意中以更低费率的浮动面额优惠购买剩余卡片的推荐做法。

当你提供 offerId 时将忽略 minRewardRate(费率已固定),且它会按调用评估——在批量购买时,请为每次调用都加入该参数。
要在购买前检查库存,请参阅 获取有库存跟踪优惠的存量