API04003: JSON 响应格式错误
意义
服务器返回的数据看似是 JSON,但已损坏或无效。POS 无法解析响应,因为 JSON 语法损坏。
常见原因
- PHP 通知/警告 — JSON 之前的 PHP 输出
- BOM (字节顺序标记) — 文件开头的不可见字符
- 编码问题 — 字符编码问题
- 响应被截断 — 响应在传输过程中被中断
- 插件输出 — 插件添加了非 JSON 内容
如何修复
1. 检查 PHP 通知
PHP 通知/警告会导致 JSON 解析出错:
在 wp-config.php 中:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
检查并审核 wp-content/debug.log,修复任何问题。
2. 检查 BOM 字符
某些文本编辑器可能会添加不可见的 BOM 字符:
- 重新保存 PHP 文件,确保不带 BOM
- 使用不带 BOM 的 UTF-8 编码
- 检查最近编辑的文件
3. 验证完整响应
如果响应被截断:
- 检查 PHP 输出缓冲设置
- 增加 php.ini 中的
output_buffering - 检查超时问题
4. 直接测试 API
在浏览器中或使用 curl:
curl -v https://yoursite.com/wp-json/wcpos/v1/
查看 JSON 之前是否有任何意外内容。
5. 检查字符编码
确保数据库和 PHP 使用 UTF-8:
- 检查
wp-config.php中的字符集设置 - 验证数据库表为 UTF-8
- 查找导致问题的特殊字符