这类问题我又碰上了一次。商品详情页的 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
恢复的判定其实很直接。价格字段去掉单位后重新抓取,富媒体测试通过,商品在搜索结果里恢复了价格与库存的展示。
提醒一点。价格是运营高频修改的字段,最好在输出层做一次清洗,而不是要求每个人录入时都记得不带单位。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
