1

在 /admin 中的 OpenCart v. 2.0.0 中,当我收到订单时,我应该能够更改订单状态,让客户知道她的购买情况。此功能位于“历史记录”选项卡中。不幸的是,我无法更改或修改任何订单。当我更改状态并尝试保存时,Openart 给了我一个错误:

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data OK

即使在全新安装时也会发生。一切设置正确 - 域名正常,商店未处于维护模式,.htaccess 文件中没有密码(顺便说一句,即使删除它也无济于事)。

它看起来像在附加的屏幕截图中。在此处输入图像描述

一种解决方案是安装最新版本的 OpenCart,在我写这篇文章 2.0.1.1 的那一刻。这可能是最好的主意。

我的问题是我做了很多修改,这对我来说非常困难。进行更改时,我没有使用可能应该使用的 vqmod(但没有人是完美的 - 不是吗?)。或者您可能出于其他原因不想升级?

现在,如何在不实际更改软件本身的情况下解决这个问题?

4

7 回答 7

4

我得到了同样的错误并修复了它:

  1. 转到管理 -> 系统 -> 用户 -> API
  2. 添加新的 API 生成密码,并启用它
  3. 然后转到管理 -> 系统 -> 设置 -> 编辑 -> 选项(选项卡)
  4. 在 Checkout 部分下选择 API 用户作为您的 API 用户
  5. 然后保存更改
  6. 然后转到销售 -> 订单 -> 编辑
于 2015-02-11T08:30:24.367 回答
3

我猜当你的 OC 中的 cURL 方法尝试从 OC API 获取数据并被阻止时,就会出现错误。

-- 快速测试

转到/admin/controller/sale/order.php中的函数info()在info() 中 找到 curl 初始化,然后瞄准 添加:$json = curl_exec($curl);

if($json === false){ var_dump(curl_error($curl)); exit; }

如果有错误,您应该在从管理面板转到订单信息时看到它。您可能在 80 或 443 端口上有拒绝连接消息。

如果是,可能的错误和解决方案可能是:

  1. 您正在受保护的目录中工作。这是一条要求用户/通行证的网站消息(如带有字段的 js 警报)。您可以将其关闭并再次尝试添加历史记录。在 Plesk 中,您可以在域选项中找到它作为“密码保护目录”。

  2. 如果您最近修改了 .htaccess,您应该检查它是否有导致上述症状的 auth 语句。

  3. PHP; 检查您是否已将任何 $_SERVER['REMOTE_ADDR'] 添加到 if 块中以故意拒绝 ips。

  4. 使用 Plesk 时,具有 root 访问权限 (ssh),并且您具有与 Plesk 管理面板主机名相同的网站域,(假设您的域是 www.yourdomain.com)您可以从您的 ssh 检查,curl -vv "http://www.yourdomain.com"在里面执行(或 https)托管您的域的您自己的服务器 (localhost)。如果您在端口 80 或 https 的 443 上获得拒绝连接,并且在curl -vv "http://www.yourdomain.com:7080"OR curl -vv "http://www.yourdomain.com:7081"(虚拟主机端口)上成功返回 msg,那么您可以按如下方式修复它。从其他服务器尝试在 80 和 443 上获得成功的连接消息也很奇怪! 因此,您必须修改您的服务器主机(/etc/hosts)并将您的公共 ip 添加到您的完整网站域(通常是最后一行)。因此,添加到 public-ip 行xxx.xxx.xxx.xxx www.yourdomain.com. 您可能在您的公共 IP 上定义了其他主机。请不要删除任何内容。在 piblic-ip 行的最后添加 www.yourdomain.com。您可以使用 curl 再次检查,或添加订单历史记录。

我可以帮忙,

詹尼塞普

于 2015-04-13T18:01:14.903 回答
2

经过一段时间的努力,我设法解决了这个问题,我想与你分享这个解决方案:

在您商店的管理面板中,转到:

Admin > Settings > Users > API

应该有一个用户名

XrpeYEWrFHOcqB1phjBXdUCRO1A3sCvDpgmTGBcJ7G6WuYIMKXCrIJUpzvFPfimWT6LHQLisTYz0nuOy7ZK

如果没有创建一个并给她一个相当复杂的名字,就像例子中一样。

然后你必须检查你的数据库(使用 phpMyAdmin 有很大帮助)保存你的存储数据。

  1. 找到包含 API 用户的api表并检查该用户的 api_id。
  2. 查找表设置(默认情况下 OpenCart 安装它被命名为oc_setting)并找到键config_api_id
  3. 将 value 字段设置为与您在api表中找到的api_id相同的数字。
  4. 问题应该得到解决。

在我的 OpenCart 2.0.0 安装中,该值设置为 0,而 api_id 为 2。

于 2015-01-01T16:49:23.770 回答
2

我遇到了同样的问题,并尝试了所有可能和可以想象的解决方法。

最后放弃并打电话给我的托管服务提供商。他们发现 OpenCart 在 5.4.33 以上的任何 php 版本上都无法正常运行。尔格:使用 php 5.4.33

这可能无法解决所有问题,或者可能仅与上述其他修复程序一起使用,但值得尝试检查您的主机默认运行的 php 版本。

于 2015-03-29T13:26:36.763 回答
2

如果您的服务器不支持HTTPS,请将 https 修改为 http。

打开admin/config.php文件,修改https为http。

define('HTTPS_SERVER', 'http://'.$_SERVER['HTTP_HOST'].'/admin/'); define('HTTPS_CATALOG', 'http://'.$_SERVER['HTTP_HOST'].'/');

于 2015-04-01T03:16:26.123 回答
2

禁用维护模式对我有用。

于 2015-04-22T07:35:48.330 回答
1

在 admin/controller/sale/order.php 文件中 2438 以下的行中,您应该看到如下所示:

    if ($store_info) {
        $url = $store_info['ssl'];
    } else {
        $url = HTTPS_CATALOG;
    }

如您所见,CURL 始终使用 HTTPS_CATALOG 定义的常量,其中包含您的商店 SSL URL。为什么?我不知道。解决方案:编辑商店根文件夹上的 config.php 并将 HTTPS_CATALOG 定义的常量值更改为非 ssl URL,只需在 https 结束后删除“s”。

于 2015-05-04T17:22:34.837 回答