服务对象与地域限制
PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。
代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。
本文要点
- 先看 Discount.type 再解释 amount;这次修正针对 Percentage,FixedAmount 和 Code 不随之改变。
- 所有 POS UI extensions API 版本都受影响,保留旧 api_version 不能保住旧的返回单位。
- 金额显示、节省金额、积分和 bulkCartUpdate 都可能依赖旧值;不能笼统认为扩展无需改动。
- 按每台设备安装的 POS 版本处理兼容;独立的 FixedAmount 和无效百分比报告仍未有确认解决方案。
同一个 25% 折扣,返回值为什么从 50 变成 25
Shopify 10 月 7 日的开发者公告说明,POS 11.15 将 Percentage 折扣的 Discount.amount 修正为百分比值。公告的例子是 200 美元商品减免 25%:现在 amount 为 25;POS 11.14 及更早版本返回的是减免金额 50。
因此,读取到 25 并不表示实际只优惠了 25 美元,也不应继续把它除以商品金额来还原折扣比例。先确认字段单位,再决定怎样显示折扣或计算业务需要的金额。
先分折扣类型,再检查读取位置
这次变化覆盖购物车级和行项目级 Percentage 折扣,包括以该类型暴露的手动、应用添加和自动折扣。应检查 Cart API 当前状态及订阅、lineItems[].discounts、cartDiscount、cartDiscounts,以及 cartLineItem 上下文 API。
FixedAmount 和 Code 不因这次修正而改变;以 Code 类型返回的百分比优惠码也在不变范围内。不要因为优惠码看起来是百分比,就把所有折扣字段统一按 Percentage 的新单位处理。
依赖旧金额的代码,都值得沿着数据流检查
先找出将 Percentage.amount 作为货币显示、节省金额、积分或外部集成输入的位置。Shopify 10 月 9 日的员工补充说明扩大了早期例外:只要显示、定价或 bulkCartUpdate 逻辑依赖旧的金额返回值,都需要复查,不能只搜索一处百分比换算。
若扩展曾把旧返回金额换算回百分比,在运行 POS 11.15 及更高版本的设备上继续套用这段补偿,可能再次转换已经正确的值。应按照实际安装版本区分处理,而不是仅凭字段名称或扩展 API 版本猜单位。
官方建议在 POS 11.15 或更高版本检查购物车级、行项目级、自动百分比折扣以及使用 bulkCartUpdate 的路径。这是公告给开发者的核对范围;本文没有执行设备测试、修改商店或提交购物车。
应用版本和扩展 API 版本是两回事
此变化适用于所有 POS UI extensions API 版本。即便扩展配置仍保留较早的 api_version,设备升级到 POS 11.15 后,也不能用该配置维持旧的金额返回行为。
如果还支持 POS 11.14 或更早的设备,官方要求在设备升级前继续兼容旧行为。不要假设同一商家的设备同时升级;已核来源没有给出统一完成日期、地区名单、套餐要求或费用变化。
读到的折扣,不等于可以原样写回的输入
Cart API 中读取的 Discount.amount 是 number;例如 applyCartDiscount 的写入参数 amount 则使用 string,折扣类型和相应接口约定仍需分别核对。FixedAmount 的批量行折扣写入按单件计算,文档例子是数量 2 时传入 5.00,合计减免 10.00。
Percentage 修正解决了将旧金额分配值重新当百分比解释的问题,但不能据此承诺每一种购物车回写都无损。员工明确将数量大于 1 的 FixedAmount 报告,以及派生百分比超过 100% 时的独立报告继续列为未解决事项。
资料来源
常见问题
Discount 里有 currency,就能把 amount 当金额吗?
不能仅凭 currency 判断。Cart API 的 currency 表示当前 POS 地点关联的货币代码,amount 的含义还要结合折扣类型;POS 11.15 及以上的 Percentage.amount 是百分比值。
FixedAmount 的数量问题也已经修好了吗?
没有这样的确认。10 月 9 日的员工回复说,正在跟踪数量大于 1 时读取行总减免、写入按单件应用的报告,尚无确认修正或时间表。这与已确认的 Percentage 读取修正是不同事项。
bulkCartUpdate 的 Promise 成功返回,就说明购物车一定按预期改变了吗?
不能从此次 Percentage 修正得出这个保证。员工说,派生百分比超过 100% 时方法返回却未改变购物车的独立报告仍未有确认解决方案。应核对实际返回状态和业务预期,不把该报告当成已经修复,也不把本文当成实际调用结果。