问题出现得很突然,日志倒是留得挺全。为了同时标全新和二手两个报价,把 offers 写成数组,测试工具提示类型不符,商品富媒体全部失效。

把日志和配置对完,能解释这个现象的基本就这几处。单个商品应使用报价对象而不是数组。也可能是多个报价要用区间类型承载。

不容易想到的是,数组里混用了不同币种。

动手时先看当前报价结构

curl -s https://www.example.com/p/1/ | grep -o '"offers":{[^}]*}'

然后改成区间报价

curl -s https://www.example.com/p/1/ | grep -o 'lowPrice[^,]*'

随后统一币种

curl -s https://www.example.com/p/1/ | grep -o 'priceCurrency[^,]*'

复测商品富媒体

curl -s https://www.example.com/p/1/ | grep -c 'AggregateOffer'

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

中途换过一次思路,把范围缩到最小的那一层,反而快了。

别只看报错消失,验证要多做一步。测试工具显示报价有效,价格区间正确展示,商品富媒体恢复。

补一句。只有一个报价时别用区间类型,最低价和最高价相等也会被判冗余。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189