跳转到主要内容
一次 purchaseGiftCard 调用只会购买且仅购买一张礼品卡,针对一个优惠并按一个费率。没有 quantity 字段,单次调用也不会在多个优惠或费率之间拆分。要购买多张卡,请多次发送该变更请求——每张卡一次调用,并为每次调用提供其各自唯一的 idempotencyKey 每次调用如何选择其优惠与费率,取决于你是传入 offerId 还是 merchantSlug

购买流程一览

offerId — 锁定特定优惠与费率

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

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

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

固定额与可变额优惠及库存

  • 固定面额优惠会按面额进行库存跟踪。一旦某个面额售罄,将不再可选,任何进一步通过 offerId 固定到该面额的调用都会返回缺货错误。
  • 可变额优惠并不以相同方式受库存限制。它们通常保持可用,并在固定/有库存的优惠售罄时充当后备。可变额优惠往往具有与其替代的固定优惠不同(通常更低)的奖励费率
📘 当你购买的卡数超过库存时会发生什么 假设某商户的最佳优惠是一个固定、按库存跟踪的优惠,只剩下8个库存,而你想要10张卡(即 10 次单独的 purchaseGiftCard 调用):
  • 使用 offerId(固定到该固定优惠):前 8 次调用成功;第 9 次和第 10 次调用因缺货错误而失败。不会自动回退到其他优惠或费率。
  • 使用 merchantSlug(自动选择):前 8 次调用会按该固定优惠购买;一旦其售罄,其余调用将自动选择下一个最佳可用优惠——这可能是奖励费率更低的可变额优惠
在所有情况下,每张卡都会以该次调用所解析到的优惠与费率原子性地完成购买——不存在混合或部分履约的订单。

使用 minRewardRate 保护你的费率

当你使用 merchantSlug 购买时,使用 minRewardRate 设置奖励费率下限。购买前,系统会检查该商户在所选金额与支付方式下可提供的最佳费率;如果该费率低于你的 minRewardRate(或无法报出费率),调用将失败,而不会以更低费率完成购买。这是避免在高费率的库存优惠售罄后,不经意间以更低费率的可变额优惠购买剩余卡片的推荐做法。
🚧 minRewardRate 仅适用于使用 merchantSlug 的购买。 如果你提供了 offerId,则会忽略 minRewardRate(优惠及其费率已被固定)。该下限按调用逐一评估,因此在购买多张卡时,请在每次调用中都包含它。

缺货错误

当某个优惠因库存原因无法履约时,变更请求将返回:
在重试前,使用 getOfferQuote / getMerchants 重新报价以找到当前最佳可用优惠。
📘

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

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

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

当你提供 offerId 时将忽略 minRewardRate(费率已被固定),并且它会按调用进行评估——在购买多张卡时,每次调用都要包含它。
要在购买前检查库存,请参见 Get Inventory On Stocked Offers