先把当时的情况摆出来。商品价格直接取了页面显示文案「1,299 元」,带千分位和货币符号,测试工具提示价格必须是数字。
把日志和配置对完,能解释这个现象的基本就这几处。标记复用了展示字符串,没有做数值转换。还有一种是千分位逗号被当成小数点分隔。
另外,货币符号被写进了价格字段而不是币种字段。
第一件事是看实际输出的价格
curl -s https://www.example.com/p/1/ | grep -o '"price":"[^"]*"'
只输出数字
echo number_format((float)$price, 2, '.', '');
币种单独放
curl -s https://www.example.com/p/1/ | grep -o 'priceCurrency":"[A-Z]*'
复测结构
python -c "import json;print(json.load(open('p.json'))['offers']['price'])"
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
怎么算真的好了,看的是同一批现象。价格字段是纯数字,测试工具无报错,富媒体展示的价格与页面一致。
容易忽略的是,小数点用点不用逗号,面向欧洲站点的本地化格式要单独处理。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
