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(回饋率已固定),且會逐次呼叫評估——在購買多張卡時,請在每次呼叫都包含它。