这类问题我又碰上了一次。商品详情页的 offers 里 price 写的是 1299.00 元,priceCurrency 也填了 CNY,富媒体测试提示价格格式无效。

第一反应是「priceCurrency 必须用 ISO 4217 三位代码,写人民币三个字同样无效」,验证下来不成立。

排查方向其实有限,先把可能性排一排。price 只接受纯数字或带小数点的数值字符串,不能带单位;模板直接输出了后台字段,运营习惯在价格后面补一个「元」字;多规格商品的 price 用了区间写法,字段类型不支持。

上来先抽出页面上所有 price 字段查看实际值

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

随后在模板里剥离非数字字符

$price = preg_replace('/[^0-9.]/', '', $raw_price);

校验币种字段是否为三位代码

grep -o '"priceCurrency"[^,]*' page.html | sort | uniq -c

恢复的判定其实很直接。价格字段去掉单位后重新抓取,富媒体测试通过,商品在搜索结果里恢复了价格与库存的展示。

提醒一点。价格是运营高频修改的字段,最好在输出层做一次清洗,而不是要求每个人录入时都记得不带单位。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189