記事のサマリー(TL;DR)
- Shopify POS 11.15で、パーセント割引(Percentage discount)に対するDiscount.amountの返り値がCart APIの仕様に合致するよう修正されました。
- 従来(POS 11.14以前)は割引によって減額された金額(例:200ドルの商品に25%割引で
amount: 50)を返していましたが、11.15以降は割合そのもの(amount: 25)を返します。 - この値を金額として扱っていたPOS UI拡張機能は、ロジックの更新が必要です。
条件・影響範囲
この変更はすべてのPOS UI拡張機能のAPIバージョンに適用され、古いapi_versionを維持していても以前の挙動は保持されません。対象となるのは、カート単位・商品行単位のパーセント割引で、手動適用、アプリによる適用、自動適用のいずれも含め、type: 'Percentage'として公開される割引です。影響を受けるのは、Cart APIの現在の状態(current state)とサブスクリプション、lineItems[].discounts、cartDiscount、cartDiscounts、およびcartLineItemコンテキストAPIです。
なお、この修正により、拡張機能がbulkCartUpdateを通じてカート状態を渡し戻す際に、パーセント割引の金額換算値が誤って割合として再解釈される問題も防止されます。
FixedAmount割引およびCode割引(type: 'Code'として公開されるパーセント基準の割引コードを含む)には変更はありません。
詳細
変更内容
Shopify POS 11.15は、Discount.amountがパーセント割引に対して返す値を、Cart APIの契約に合致するよう修正しました。200ドルの商品行に25%の割引を適用した場合、現在はamount: 25が返されます。POS 11.14以前では、割引によって差し引かれた金額であるamount: 50が返されていました。
対応が必要な作業
開発者は、amountの値を解釈する前にDiscount.typeを確認する必要があります。また、Percentageの値を金額として扱っている通貨表示、割引額計算、ロイヤリティポイント計算、各種連携処理を更新する必要があります。
カート単位・商品行単位・自動適用のパーセント割引、およびbulkCartUpdateを利用するワークフローについては、POS 11.15以降でテストすることが求められます。拡張機能がPOS 11.14以前にも対応している場合は、該当デバイスがアップグレードされるまで、以前の挙動を処理するロジックを維持する必要があります。