You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrestaShop付款下单时PaymentModule.php242行无法加载订单状态如何解决?

PrestaShop 提交订单提示「Can't load Order status」异常原因及修复方案

异常原因

  • 支付模块配置的订单状态ID不存在:本次报错涉及的银行转账(ps_wirepayment)模块,后台配置的待付款订单状态被误删,或者模块安装时未正确初始化对应状态记录
  • 多语言站点对应订单状态的翻译缺失:代码会传入当前用户语言ID加载订单状态,若该语言下没有对应状态的翻译内容,会判定为对象加载失败
  • 自定义修改/第三方插件冲突:覆盖了PaymentModule、OrderState类的逻辑,导致传入的$id_order_state参数为0或者无效值
  • 数据库表损坏:ps_order_state(订单状态主表)或者ps_order_state_lang(订单状态多语言表)中对应ID的记录被删除、字段不完整

修复方案

第一步:校验支付模块配置

  1. 进入PrestaShop后台 > 模块管理器 > 找到「银行转账」模块,点击「配置」
  2. 查看「订单待支付状态」下拉选项,确认选中的状态为有效值,未被标记为删除
  3. 若下拉为空/状态无效,重新选择一个存在的待付款状态,保存配置后测试下单

第二步:核查数据库订单状态记录

执行以下SQL语句校验数据(将12替换为模块配置的订单状态ID,zh-CN替换为站点实际使用的语言编码):

-- 校验订单状态主记录是否存在
SELECT * FROM ps_order_state WHERE id_order_state = 12;
-- 校验对应语言的翻译记录是否存在
SELECT * FROM ps_order_state_lang WHERE id_order_state = 12 AND id_lang = (SELECT id_lang FROM ps_lang WHERE iso_code = 'zh-CN');
  • 若第一条查询无结果:说明该订单状态已被删除,恢复对应记录或者在模块配置中更换为存在的订单状态即可
  • 若第一条有结果、第二条无结果:说明缺少对应语言的翻译,进入后台「订单设置 > 状态」编辑对应订单状态,补全所有启用语言的名称后保存即可

第三步:排查自定义修改冲突

  • 检查override/classes/目录下是否有PaymentModule.php或者OrderState.php覆盖文件,重点核对validateOrder方法传入的$id_order_state参数是否被篡改
  • 临时禁用最近安装/更新的订单相关第三方插件,排除插件修改订单状态取值逻辑的可能
  • 若为二次开发导致的参数错误,确保调用validateOrder方法时传入的订单状态ID为ps_order_state表中存在的有效值

内容的提问来源于stack exchange,提问作者Omar Chakroun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:54:03